flashkarte is a Markdown-based flashcard app with SM-2 spaced repetition. Write decks as plain Markdown, sign up, and study them anywhere — progress is synced to your account. AI assistants can create decks on your behalf through a hosted MCP server, using your own AI account.
Deck format: # Title, ## Category, then numbered bold fronts
(**1. question**) with the answer on the following lines.
A full stack sharing one Markdown parser + SM-2 implementation:
| Path | Description |
|---|---|
packages/shared |
Markdown parser + SM-2 algorithm (TypeScript), parity-tested |
packages/server |
REST API — Express + TypeScript + Postgres; JWT auth, decks, study, API keys, client-error logging |
packages/web |
Web app — React + Vite + Tailwind SPA |
packages/mcp |
Hosted MCP server — lets a user's AI create/manage decks via a personal API key |
android/ |
Android app — Kotlin / Compose / Hilt, talks to the API |
python/ |
Original desktop app — Python / tkinter (reference) |
The packages/* workspaces are npm workspaces; android/ and python/ are
standalone. The web, server, and Android clients all speak the same API; the AI
compute for MCP runs on the user's own account, not the server's.
npm ci
npm run build --workspace=packages/shared # server/web import its dist for types
npm test # all workspacesThe Android app builds with Gradle (cd android && ./gradlew :app:assembleDebug)
and points at the deployed API via BuildConfig.API_BASE_URL.
Docker Compose stack (app + MCP + Postgres + daily backups), served at
flashkarte.christopherrehm.de. See docs/deployment.md.
| Path | What it covers |
|---|---|
docs/deployment.md |
Docker Compose prod stack, VPS deploy, env, backups |
docs/course-authoring-guide.md |
How to produce a course (also served over MCP as get_course_authoring_guide) |
docs/android-release.md |
Building and publishing the Android app to Play |
docs/specs/ |
Learning-engine spec pack (read 00-guardrails.md first) |
docs/plans/ |
Validated designs not yet broken into specs |
docs/store-assets/ |
Play Store listing assets (icon, feature graphic, screenshots) |
docs/superpowers/ |
Historical plan/spec archive (dated, point-in-time; not current) |
docs/older-docs/ |
Retired docs kept for history; not current |
This repo merges the previously separate flashmd-android (Kotlin) and
flashmd-python (tkinter) repositories, preserving the full commit history of
each under its package directory.
If you find this useful, a small donation helps keep projects like this going: Donate via PayPal