Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FlashCard Pro

A spaced repetition flashcard application built with Java and JavaFX that implements the Leitner System to help users efficiently memorize and retain information.

About

FlashCard Pro uses a scientifically-backed spaced repetition algorithm to schedule flashcard reviews at optimal intervals. Cards progress through five boxes as you answer correctly, with increasing review intervals — helping you focus on what you don't know while reinforcing what you do.

How the Leitner System Works

Box Review Interval Status
1 Every 1 day New / Reset
2 Every 2 days Learning
3 Every 4 days Familiar
4 Every 7 days Confident
5 Every 14 days Mastered
  • Correct answer — card advances to the next box
  • Incorrect answer — card resets to Box 1

Features

  • Create & Manage Flashcards — add question/answer pairs and organize them into decks
  • Smart Review Sessions — only review cards that are due, sorted by priority
  • Progress Tracking — view statistics including total cards, cards due today, and mastery percentage
  • Save & Load Decks — persist your progress to file and resume anytime
  • Dual Interface — use the modern JavaFX desktop GUI or the console-based CLI

Tech Stack

  • Language: Java 21
  • GUI: JavaFX 21 (FXML + ControlsFX)
  • Build Tool: Maven
  • Testing: JUnit 5

Prerequisites

  • Java 21 or higher
  • Maven 3.8+ (or use the included Maven wrapper)

Getting Started

Clone the repository

git clone https://github.com/lastiroko/Flashcard-pro.git
cd Flashcard-pro

Build the project

./mvnw clean install

Run the GUI application

./mvnw javafx:run

Run the CLI version

./mvnw compile exec:java -Dexec.mainClass="com.example.flashcardpro.MainApp"

Run tests

./mvnw test

Project Structure

src/
├── main/
│   ├── java/com/example/flashcardpro/
│   │   ├── MainFX.java        # JavaFX GUI entry point
│   │   ├── MainApp.java       # Console CLI entry point
│   │   ├── Controller.java    # JavaFX UI controller
│   │   ├── Card.java          # Abstract base class
│   │   ├── Flashcard.java     # Core flashcard model (Leitner logic)
│   │   ├── Deck.java          # Flashcard collection manager
│   │   └── module-info.java   # Java module configuration
│   └── resources/com/example/flashcardpro/
│       └── MainView.fxml      # JavaFX UI layout
└── test/com/example/flashcardpro/
    └── FlashcardTest.java     # Unit tests (Flashcard + Deck)

Architecture

The application follows the MVC (Model-View-Controller) pattern:

  • Model — Card (abstract), Flashcard, Deck
  • View — MainView.fxml
  • Controller — Controller.java

Data Storage

Decks are saved as plain text files with the following format:

question###answer###box###nextReviewDate

This allows easy portability and human-readable deck files.

Author

Philip Olaomo — s240904

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages