lila
35e54014b3
chore: add husky pre-commit and pre-push hooks
Build and Deploy / quality (push) Failing after 1m53s
Build and Deploy / build-and-deploy (push) Failing after 1m3s
2026-04-30 01:15:14 +02:00
lila
9893ead689
feat(api): add helmet security headers and rate limiting
...
- Add helmet middleware for secure HTTP response headers
- Add express-rate-limit with three limiters:
- authLimiter: per-IP, 20 req/15min on /api/auth/*
- gameLimiter: per-user, 150 req/15min (not yet wired)
- lobbyLimiter: per-user, 20 req/15min (not yet wired)
- Set trust proxy for correct client IP behind Caddy
- Add tests for all three limiters and helmet headers
2026-04-23 11:13:11 +02:00
lila
a3d19d36f6
adding the data-pipeline to ts and pnpm workspaces
2026-04-20 09:05:27 +02:00
lila
745c5c4e3a
feat(api): add WebSocket foundation and multiplayer game store
...
- Add ws/ directory: server setup, auth, router, connections map
- WebSocket auth rejects upgrade with 401 if no Better Auth session
- Router parses WsClientMessageSchema, dispatches to handlers,
two-layer error handling (AppError -> WsErrorSchema, unknown -> 500)
- connections.ts: in-memory Map<lobbyId, Map<userId, WebSocket>>
with addConnection, removeConnection, broadcastToLobby
- LobbyGameStore interface + InMemoryLobbyGameStore implementation
following existing GameSessionStore pattern
- multiplayerGameService: generateMultiplayerQuestions() decoupled
from single-player flow, hardcoded defaults en->it nouns easy 3 rounds
- handleLobbyJoin and handleLobbyLeave implemented
- WsErrorSchema added to shared schemas
- server.ts switched to createServer + setupWebSocket
2026-04-17 09:36:16 +02:00
lila
3f7bc4111e
chore: rename project from glossa to lila
...
- Update all package names from @glossa/* to @lila/*
- Update all imports, container names, volume names
- Update documentation references
- Recreate database with new credentials
2026-04-13 10:00:52 +02:00
lila
a3685a9e68
feat(api): add auth middleware to protect game endpoints
...
- Add requireAuth middleware using Better Auth session validation
- Apply to all game routes (start, answer)
- Unauthenticated requests return 401
2026-04-12 13:38:32 +02:00
lila
91a3112d8b
feat(api): integrate Better Auth with Drizzle adapter and social providers
...
- Add Better Auth config with Google + GitHub social providers
- Mount auth handler on /api/auth/* in Express
- Generate and migrate auth tables (user, session, account, verification)
- Deduplicate term_glosses data for tighter unique constraint
- Drop legacy users table
2026-04-12 11:46:38 +02:00
lila
e320f43d8e
test(api): add unit and integration tests for game service and endpoints
...
- Unit tests for createGameSession and evaluateAnswer (14 tests)
- Endpoint tests for POST /game/start and /game/answer via supertest (8 tests)
- Mock @glossa/db — no real database dependency
2026-04-12 09:04:41 +02:00
lila
3596f76492
extraction datafiles with cefr annotations
2026-04-08 13:09:47 +02:00
lila
5180ecc864
installing zod + adding zod schemas
2026-04-02 20:02:26 +02:00
lila
55885336ba
feat(db): add drizzle schema for vocabulary and deck tables
...
- terms, translations, term_glosses with cascade deletes and pos check constraint
- language_pairs with source/target language check constraints and no-self-pair guard
- users with openauth_sub as identity provider key
- decks and deck_terms with composite PK and position ordering
- indexes on all hot query paths (distractor generation, deck lookups, FK joins)
- SUPPORTED_POS and SUPPORTED_LANGUAGE_CODES as single source of truth in @glossa/shared
2026-03-28 19:02:10 +01:00
lila
3faa3d4ffb
installing drizzle, confirm working db connection via test script
2026-03-23 09:10:48 +01:00
lila
2025cc7298
chore: configure root eslint with react and tanstack router rules
2026-03-21 19:32:38 +01:00
lila
1765923cb6
feat: scaffold vite react app and configure web package
2026-03-21 11:59:52 +01:00
lila
04acd4b580
chore: configure vitest with project-based setup and coverage
2026-03-20 19:25:00 +01:00
lila
ce42eb1811
chore: configure prettier with ignore rules and format scripts + running format
2026-03-20 18:37:38 +01:00
lila
22bb8a1e4c
chore: configure eslint with typescript and prettier integration
2026-03-20 14:18:18 +01:00
lila
3dfb75ea83
chore: configure typescript project references and shared compiler options
2026-03-20 14:01:48 +01:00
lila
66848f282f
chore: initialise pnpm workspace monorepo
2026-03-20 10:00:21 +01:00