Flash Card App — Implementation Complete

◀ ▶
  • 19 commits, clean linear history

    • 33 backend tests, all passing
    • Frontend compiles cleanly

    What was built:

    Backend (Haskell/Servant):

    • PostgreSQL schema (5 tables, 7 indexes)
    • Session-based auth (bcrypt + in-memory session store)
    • Full REST API: auth (3 endpoints), decks (5), cards (3), drill (3), dashboard (1)
    • SM-2 spaced repetition algorithm with unit tests
    • Static file serving for the Elm SPA

    Frontend (Elm):

    • SPA with client-side routing (7 routes)
    • Login/Register with session management
    • Dashboard with stats, streaks, and recent activity
    • Deck list with create/delete
    • Deck editor with card CRUD and progressive hints (ordered list with reorder)
    • Drill setup with rule selection (Spaced/Random/Missed)
    • Drill session with full state machine (question → hints → answer → score → review round)
    • Auth guards, empty states, and CSS styling

    To run: make build && cabal run flash-server → http://localhost:3100