Inspiration

EduCore started because I was frustrated with how flat and predictable most learning platforms feel. Everything is static, everything is linear, and nothing adapts to the student. I wanted a smarter solution ,something that reacts to a learner’s performance, lets them experiment, and gives them real-time feedback. The idea of mixing AI, interactive lessons, and in-browser Python execution pushed me to build my own platform from scratch.


What it does

EduCore is a personalized learning app that adapts to each student using AI. It delivers lessons in Python, Maths, Physics, and English, tracks progress in real time, and lets users run Python code directly in the browser through Pyodide. It includes an AI tutor, structured subjects, interactive exercises, and a modern UI that works across all screen sizes.


How I built it

I used Next.js (App Router) with TypeScript, Tailwind CSS, and Shadcn/UI for the frontend. I organized the application into route groups:

  • (auth) for login and signup
  • (app) for dashboard, lessons, profile, and the AI chatbot
  • (legal) for policy pages

Firebase handles authentication, Firestore, and real-time updates using custom hooks I wrote (useUser, useDoc, useCollection). Genkit powers the AI workflows, including the chatbot and performance analysis flows. Pyodide runs a full Python interpreter inside the browser, which allows code execution without needing a backend server.

I integrated everything into one cohesive, responsive layout with a collapsible, resizeable sidebar that adjusts to any screen size.


Challenges I ran into

  • Getting Firestore’s real-time listeners to update the UI without causing endless re-renders.
  • Making the sidebar responsive, collapsible, and resizeable across all devices.
  • Structuring nested App Router layouts while keeping the UI clean and consistent.
  • Managing Pyodide loading times and preventing it from reinitializing on every render.
  • Keeping AI flows accurate, contextual, and fast.
  • Balancing performance with interactivity in a fully serverless architecture.

Accomplishments that I'm proud of

  • Building the entire platform alone, end to end.
  • Getting Pyodide to run reliably inside the browser with UI interactions.
  • Designing an AI tutor that uses real lesson context, not generic responses.
  • Creating a modern, responsive interface using my own component structure.
  • Implementing real-time progress tracking that updates instantly.
  • Building a scalable, type-safe architecture that I actually enjoy working in.

What I learned

I learned how powerful the App Router becomes when combining server components with client components. I learned how to structure Firestore queries properly, how much TypeScript improves consistency, and how Genkit organizes AI logic into clean flows. I also learned how Pyodide works under the hood and how to make it coexist with React state. Most importantly, I learned how to turn a vision into a fully functioning platform by myself.


What's next for EduCore

  • Moving all mock content into Firestore or a CMS.
  • Adding adaptive difficulty levels based on user performance.
  • Building streaks, milestones, and gamified learning elements.
  • Adding voice-based lesson explanations.
  • Expanding into more subjects and practical projects.
  • Improving the AI assistant to provide debugging, summaries, and personalized study paths.

Built With

Share this project:

Updates