Flashcard Quiz App
Phase 1 — Database & Core Logic
-
Add a basic SQLite schema:
deckstablecardstable including a foreign key todecksand columns liketimes_correct,times_wrong
-
Implement CRUD for decks and cards.
-
Input validation: non-empty question and answer fields.
Functional result: database initializes; decks and cards can be created, read, updated, deleted; statistics fields are initialized to zero; changes persist across restarts.
Phase 2 — Minimal GUI: Deck & Card Management
- GUI window showing list of decks.
- Selecting a deck shows its cards in a list.
- Add, edit, delete decks and cards via GUI.
Functional result: user can manage decks and cards entirely through the interface; all changes persist in the database.
Phase 3 — Quiz Mode with Feedback
- Start a quiz on a selected deck.
- Show one question at a time; user can attempt an answer or reveal it.
- After showing the answer, let the user mark whether they answered correctly or incorrectly, and update statistics in the database.
- Display statistics (times_correct, times_wrong) for that card.
- Navigate to the next/previous card smoothly.
Functional result: user can quiz themselves, see immediate feedback after answering, and statistics update correctly in the database.
Phase 4 — Robustness & Usability Enhancements
- Validate inputs and prevent empty fields.
- Keyboard shortcuts for showing answer and moving to next card.
- Handle database and GUI errors gracefully with clear messages.
- GUI is up-to-date after CRUD or quiz actions.
Functional result: app is stable, intuitive, and responsive; statistics display correctly after each card; all changes persist; sorting/navigation works reliably.