No description
Find a file
2026-05-30 03:47:59 +02:00
.forgejo/workflows chore: add husky pre-commit and pre-push hooks 2026-04-30 01:15:14 +02:00
.husky chore: add husky pre-commit and pre-push hooks 2026-04-30 01:15:14 +02:00
apps wip 2026-05-30 03:47:59 +02:00
data-pipeline WIP: checkpoint before stage-3 sub-stage rewrite 2026-05-12 22:13:14 +02:00
documentation updating docs 2026-05-30 03:47:52 +02:00
packages feat: migrate production schema from OMW to Kaikki flat vocabulary model 2026-05-05 17:39:25 +02:00
.dockerignore infra: add Docker Compose setup for local development 2026-03-25 18:56:04 +01:00
.env.example feat: add email/password auth backend + forgot/reset password routes 2026-04-30 18:30:20 +02:00
.gitignore feat: add Kaikki extraction and import scripts for stage 1 2026-05-05 18:11:53 +02:00
.prettierignore chore: configure root eslint with react and tanstack router rules 2026-03-21 19:32:38 +01:00
.prettierrc chore: configure prettier with ignore rules and format scripts + running format 2026-03-20 18:37:38 +01:00
Caddyfile feat(caddy): add security headers for frontend 2026-04-23 21:45:35 +02:00
docker-compose.yml updated docker pipeline to include database migrations, added dummy table to verify the pipeline works 2026-04-23 09:19:57 +02:00
eslint.config.mjs feat: add db schema, init, and vitest config 2026-05-03 17:56:29 +02:00
mise.toml setting up python env, download word data 2026-03-26 11:41:46 +01:00
package.json feat: add db schema, init, and vitest config 2026-05-03 17:56:29 +02:00
pnpm-lock.yaml feat: add db schema, init, and vitest config 2026-05-03 17:56:29 +02:00
pnpm-workspace.yaml adding the data-pipeline to ts and pnpm workspaces 2026-04-20 09:05:27 +02:00
README.md updating documentation 2026-05-16 01:59:43 +02:00
tsconfig.base.json formatting 2026-03-21 19:33:07 +01:00
tsconfig.json formatting 2026-04-28 13:18:18 +02:00
vitest.config.ts chore: configure vitest with project-based setup and coverage 2026-03-20 19:25:00 +01:00

Lila

Learn words. Beat friends.

Lila is a vocabulary trainer that turns the media you love into language practice. Learn vocabulary from a Shakira song, the first chapter of Harry Potter, or an episode of Breaking Bad — then challenge your friends in real-time multiplayer quizzes.

Live at lilastudy.com.


Quickstart

# 1. Clone and install
git clone git@git.lilastudy.com:forgejo-lila/lila.git
cd lila
pnpm install

# 2. Environment
cp .env.example .env

# 3. Start local services (PostgreSQL, Valkey)
docker compose up -d

# 4. Build shared packages
pnpm --filter @lila/shared build
pnpm --filter @lila/db build

# 5. Run migrations and seed data
pnpm --filter @lila/db migrate
pnpm --filter @lila/db seed

# 6. Start dev servers
pnpm dev

API: http://localhost:3000 · Web: http://localhost:5173

See DEPLOYMENT.md for production infrastructure details.


Documentation Index

Document What you'll find there
STATUS.md Current state — what's working, what's blocked, what we're building now
BACKLOG.md Prioritized task list: now / next / later / changelog
ARCHITECTURE.md Monorepo structure, layered architecture, data flow
DECISIONS.md Why we chose X over Y — tool choices, schema design, trade-offs
DATA_PIPELINE.md Kaikki → CEFR enrichment → production PostgreSQL
MODEL_STRATEGY.md LLM voter architecture for sense-disambiguated CEFR assignment
LLM_SETUP.md Local and cloud LLM provider configuration
DEPLOYMENT.md Hetzner VPS, Caddy, Docker Compose, CI/CD, backups
design/GAME_MODES.md Planned multiplayer and singleplayer game modes

Stack

Layer Technology
Monorepo pnpm workspaces
Frontend React 18, Vite, TanStack Router, TanStack Query, Tailwind CSS
Backend Node.js, Express, TypeScript, WebSockets (ws)
Database PostgreSQL + Drizzle ORM
Auth Better Auth (Google + GitHub)
Validation Zod (shared between frontend and backend)
Testing Vitest, supertest
Deployment Docker Compose, Caddy, Hetzner VPS
CI/CD Forgejo Actions

Current Status

  • Singleplayer quiz (5 language pairs: en↔it/de/es/fr)
  • Multiplayer lobby + real-time game (24 players, simultaneous answers, 15s timer)
  • Auth (Google + GitHub)
  • Live deployment with CI/CD
  • 🔄 Migrating vocabulary data from OpenWordNet to Kaikki (sense-disambiguated translations)
  • 🔄 Phase 7 hardening (rate limiting, error boundaries, monitoring)

See STATUS.md for the full picture.


Repository Structure

lila/
├── apps/
│   ├── api/           — Express backend
│   └── web/           — React frontend
├── packages/
│   ├── shared/        — Zod schemas + constants (API/web contract)
│   └── db/            — Drizzle schema, migrations, models, seeding
├── data-pipeline/     — Kaikki extraction → enrichment → PostgreSQL sync
├── documentation/   — Project docs (this directory)
└── Caddyfile, docker-compose.yml, etc.

License

TBD