Dros
I built Dros to turn static ChatGPT-generated questions into interactive practice sessions with answer feedback, review queues, and learning analytics.
- Timeline
- May to July 2026
Technologies used
- React
- TypeScript
- Vite
- IndexedDB
- Web APIs
Why I built Dros
I kept asking ChatGPT to generate multiple-choice questions from the material I was studying. The questions were useful, but the experience stopped at a static answer list. I had no persistent way to choose an answer, see feedback, repeat a session, or keep testing whether I understood the topic.
Dros turns those generated questions into an interactive practice loop. I can import a question bank, answer each question, see an explanation immediately, and carry mistakes into later review.
Practice is the main workflow
A session can be filtered by topic and difficulty, timed or untimed, and shuffled. When answer choices move, Dros remaps the correct answer with them instead of leaving correctness tied to the original letter. Each response updates local accuracy, question history, and the due-for-review queue.
Keeping imported questions trustworthy
Dros accepts CSV, JSON, plain text, and Moodle GIFT question banks. Each parser converts its input into one shared question model before validation. The preview marks a question as valid, accepted with a warning, or rejected with a specific error, so malformed content does not quietly enter a practice session.
Local history turns mistakes into review
Questions and study history live in IndexedDB, with a localStorage fallback and migration path. Once the app has loaded, practice does not require an account or a remote API. Analytics use that same history to show accuracy, due questions, repeated mistakes, and weak topics.
Limits and next steps
The review queue uses a simple due-or-not-due model instead of a full spaced-repetition algorithm. The app also has no service worker, so a fresh offline load is not guaranteed. I would next split the large application component into smaller domain modules and add focused tests for the parsers and practice-state transitions.
Tags
More Web projects
Web
Notion Study Reminder
A dependency-free Node.js service that turns a Notion study schedule into Beirut-time email reminders.
Explore other projects
Mobile
Audiobooks for Android
A native Android audiobook library with offline downloads, persistent listening progress, and background playback.
University
AI Workflow DSL
A Python DSL and table-driven LL(1) parser for multi-agent workflows, with generated grammar docs and source-aware syntax errors.
Hackathon
Tanbih
A crisis intelligence prototype that combines multi-source detection, explainable verification, geographic targeting, and human-reviewed multilingual alerts.