A cross‑platform Java application that helps students study with flashcards using the Leitner spaced‑repetition method.
The codebase was deliberately structured following the Hexagonal (Ports & Adapters) architecture, so every external concern (GUI, persistence, CLI, tests) is isolated from the core business rules.
- JSON import: load a set of ≥ 10 flashcards at once
- Flip card: reveal the answer side on demand
- Next / random card selection with repeat‑guard
- Leitner practice flow: 5 boxes visited on a 1‑3‑5‑7‑9 day schedule
- Progress tracking: see how many cards were answered correctly in the round
- CRUD operations: create, edit, delete flashcards inside the app
- Flashcard animation: visual colour change when flipping
- Card exchange: export / import flashcards via JSON to share with friends
- Desktop executable JAR (mobile prototype under review)
| Layer / Module | Technology |
|---|---|
| Core Domain | Java 17, standard libraries |
| Primary Adapter (UI) | JavaFX + FXML |
| Secondary Adapter (Persistence) | JSON files handled with Gson |
| Build | Maven |
| Architecture | Hexagonal (Ports & Adapters) |
- JDK 17 or newer
- JavaFX SDK matching your JDK version
# clone the repository
git clone https://github.com/leonardogrupioni/Java_Hexagonal_Architecture_FlashCardsLeitner.git
cd Java_Hexagonal_Architecture_FlashCardsLeitner
# build
mvn clean package
# run (adjust path to JavaFX)
java --module-path /path/to/javafx-sdk/lib --add-modules javafx.controls -jar target/Aplicacao_Flashcards.jar| Name |
|---|
| Beatriz Lopes Rizzo |
| João Pedro Basso Coura |
| João Pedro Figols Neco |
| Júlia Gachido Schmidt |
| Leonardo Fajardo Grupioni |
Course: Software Architecture (B.Sc. Computer Science – PUC‑SP)
Year: 2024
Instructor: Prof. Ítalo Santiago Vega

