Jul 2025 — Mar 2026
GenStudy AI
An AI-driven learning environment with dynamically generated quizzes and real-time coding interviews, built on Flask and the Gemini API.
- Python
- Flask
- SQLite
- Gemini AI
- REST APIs
Problem & context
Static practice material — the same fixed question bank for every student — doesn't adapt to where an individual student is actually struggling, and gives teachers little visibility into how a class is progressing in real time.
Built as an AI-driven learning platform where quizzes and coding interview prompts are generated dynamically rather than pulled from a fixed bank, with separate teacher and student experiences.
Constraints
- Teacher and student roles need clearly separated permissions and views
- Quiz and interview content had to be generated on demand, not pre-authored
- Needed a monitoring dashboard teachers could actually read at a glance
Trade-offs
- Dynamic generation vs. predictability: AI-generated quizzes are more adaptive than a static bank, at the cost of needing guardrails so question difficulty and format stay consistent.
- Kept the stack intentionally lean (Flask + SQLite) for a project of this scope rather than reaching for heavier infrastructure the use case didn't need yet.
How it fits together
A Flask backend exposes REST APIs consumed by the student and teacher-facing views. Quiz and coding-interview content is generated on request through the Gemini API rather than served from a static bank, and role-based authentication determines which endpoints and views a given user can reach.
Screenshots
Add UI screenshots or state walkthroughs here — the student quiz view, the teacher monitoring dashboard, and the coding interview interface are good candidates.
Results
- Dynamically generated quizzes and real-time coding interviews via the Gemini API
- Role-based authentication separating teacher and student experiences
- Monitoring dashboards giving teachers visibility into student progress
Lessons learned
Designing role-based access early — before adding features — made it much easier to keep the teacher and student experiences from leaking into each other as the platform grew.