02

Flashcards

A JavaFX desktop app for learning with digital flashcards sorted into decks. It quizzes each deck in random order, records a rating for every answer, tracks study streaks and statistics, imports and exports decks and stores them as JSON with Jackson. Built with the MVP pattern, in English and German, with light and dark themes and JUnit and Mockito tests.

Language
Java
Year
2026
Team
4 people
Stack
  • Java
  • JavaFX
  • Jackson
  • JUnit
  • Mockito
  • Maven
View · JavaFX
Presenter
Model
Storage
  • JUnit 5
  • Mockito
  • Maven
  • AsciiDoc

Features

  • Organise cards in decks with icons; cards can hold images and audio.
  • Study mode goes through a deck once, in random order.
  • Rate every answer as wrong, hard, OK or easy.
  • Statistics per rating and per day, for the last day, week, month or all time, plus a study streak.
  • Import and export cards and decks as JSON, with a dialog for duplicates.
  • English and German, light and dark theme, switchable at any time.

How it's built

A JavaFX desktop app structured as Model–View–Presenter. The views are built in Java code, and a presenter connects them to the model.

A smarter card selection is prepared as a strategy: a CardSelector uses a random or a weighted algorithm behind one interface. A rating sets the card's weight, from 8 for wrong down to 1 for easy, and the weighted algorithm draws each card with a probability proportional to its weight. Unit tests cover it, but the study mode still shuffles the deck and doesn't use it yet.

Decks, study records and streaks are stored as JSON with Jackson. Translations and theme colors come from provider classes the views bind to, so language and theme change live. JUnit 5 and Mockito test the model, the persistence and the translations. It was built by a team of four as a school project, with user stories, a specification and meeting minutes written in AsciiDoc and published on GitHub Pages.