KoalaCards is a Korean study app that combines spaced repetition cards, speaking checks, writing feedback, and reading workflows in one place.
- Deck-based review sessions with FSRS scheduling.
- Review queues include new cards, due cards, and remedial cards.
- Speaking answers are recorded, transcribed, and graded.
- Built-in assistant panel can explain cards and suggest edits while you study.
- Practice by typing or speaking.
- AI grading returns corrected text plus concise feedback.
- Diff view shows exactly what changed.
- Click unknown words to get definitions, then open card creation with those words prefilled.
- Writing history is searchable and tied to decks.
- Save Korean content from a URL or pasted raw text.
- Background ingest extracts and cleans article content.
- Highlight text in an article to get:
- a flashcard-friendly definition,
- general meaning,
- and meaning in context.
- Import highlight results directly into a deck as cards.
- Mark articles read/unread and use typing practice mode per article.
- Instapaper integration can import unread bookmarks into Reader and export processed articles back.
- Create cards from:
- free-form text (
/create?mode=vibe), - word lists (
/create?mode=wordlist), - CSV/text pairs (
/create?mode=csv).
- free-form text (
- Live preview and inline editing before save.
- Deck operations: create, rename, describe, merge, delete.
- Card operations: edit, pause/unpause, delete.
- Deck JSON import/export preserves scheduling fields.
- Tune review pace (
cardsPerDayMax,reviewTakeCount, target retention). - Configure audio playback and response timing.
- Optional writing-first flow can require daily writing progress before review.
- Optional due-card reminder emails.
- Dashboard charts track card learning, writing volume, and reading progress.
appservice: Next.js web app + tRPC API.workerservice: background jobs for Reader ingest queue and due-card reminder emails.dbservice: PostgreSQL via Prisma.
If the worker is not running, Reader URL ingest and due-card reminder emails do not progress.
- Next.js (Pages Router) + React + TypeScript
- Mantine UI
- tRPC
- Prisma + PostgreSQL
- NextAuth (email magic links or Google OAuth)
- OpenAI APIs (grading, parsing, assistant, transcription, TTS, reader language workflows)
- Google Cloud Storage (card images and generated audio artifacts)
- Copy env file:
cp .env.example .env - Fill in required env vars in
.env. - Start everything:
./run-dev.sh - Open
http://localhost:3000
The compose setup runs app, worker, and database together.
- Main setup reference:
SETUP.md - Env reference:
.env.example - Prisma schema:
prisma/schema.prisma - Before finishing changes, run:
./tidy.sh
MIT (LICENSE).
