Flashcard Quiz App

Phase 1 — Database & Core Logic

  • Add a basic SQLite schema:

    • decks table
    • cards table including a foreign key to decks and columns like times_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.