Skip to content

Flashcard Quizzer CLI

Welcome to the documentation for Flashcard Quizzer CLI, a command-line tool built to help you practice and memorize new concepts effectively.

This project was developed as part of the Udacity AI-Powered Software Engineer Nanodegree to demonstrate applied software engineering principles, robust design patterns, and effective CLI development in Python.

Project Objectives

  • Effective Learning: Provide an interactive, distraction-free environment for rote memorization and spaced repetition.
  • Robust Software Design: Utilize foundational design patterns such as the Strategy Pattern for handling different quiz flows and the Factory Pattern for their instantiation.
  • Modularity: Separate the UI layer, game logic, and file management to ensure maintainability and testability.
  • Developer Experience: Leverage modern Python tooling (uv, mypy, pytest, rich) to ensure the codebase remains clean, fast, and strict.

Feature Matrix

Feature Description
Quiz Modes Choose between sequential, random, or adaptive learning modes.
Adaptive Learning The adaptive mode repeats cards you miss until you get them right, reinforcing difficult concepts.
Dual JSON Formats Supports simple [{"front": "a", "back": "b"}] arrays or wrapped objects {"cards": [...]} formats.
Interactive Deck Creation Effortlessly create new decks from the terminal with append and overwrite options.
Rich Terminal UI Enjoy a beautiful interface, colorized feedback, and comprehensive post-game statistics.