diff options
| -rw-r--r-- | docs/dev/roadmap.md | 197 |
1 files changed, 122 insertions, 75 deletions
diff --git a/docs/dev/roadmap.md b/docs/dev/roadmap.md index 63efeef..1d6fcc4 100644 --- a/docs/dev/roadmap.md +++ b/docs/dev/roadmap.md @@ -1,6 +1,11 @@ # Kioku Development Roadmap -## Phase 1: Foundation +Each feature is implemented end-to-end (backend to frontend) before moving to the next. +Smaller features first to enable early MVP validation. + +--- + +## Phase 1: Foundation ✅ ### Project Setup - [x] Create docs/dev/architecture.md @@ -26,122 +31,158 @@ - [x] Define types (User, Deck, Card, ReviewLog) - [x] Zod validation schemas -### Authentication +### Authentication API - [x] User registration endpoint - [x] Login endpoint (JWT) - [x] Refresh token endpoint - [x] Auth middleware - [x] Add tests +- [x] Define repository types and avoid direct use of DB + +--- + +## Phase 2: Auth UI + +**Goal**: Minimal UI for user login and registration + +### Frontend Foundation +- [ ] Initialize SvelteKit +- [ ] Setup routing +- [ ] API client (fetch wrapper with auth headers) +- [ ] Auth store (token management) + +### Auth Pages +- [ ] Register page +- [ ] Login page +- [ ] Protected route handling (redirect to login) +- [ ] Add tests + +**✅ Milestone**: Users can log in from the browser + +--- -### Refactoring -- [x] Define repository types and avoid direct use of DB. +## Phase 3: Deck Management -## Phase 2: Core Features +**Goal**: Create, edit, and delete decks ### Server API -- [ ] Deck CRUD endpoints +- [ ] Deck CRUD endpoints (GET, POST, PUT, DELETE) - [ ] Add tests -- [ ] Card CRUD endpoints + +### Frontend +- [ ] Deck list page (empty state, list view) +- [ ] Create deck modal/form +- [ ] Edit deck +- [ ] Delete deck (with confirmation) - [ ] Add tests -- [ ] ts-fsrs integration + +**✅ Milestone**: Users can create and manage decks + +--- + +## Phase 4: Card Management + +**Goal**: Create, edit, and delete cards + +### Server API +- [ ] Card CRUD endpoints (GET, POST, PUT, DELETE) - [ ] Add tests -- [ ] Study endpoints (get cards, submit review) + +### Frontend +- [ ] Card list view (in deck detail page) +- [ ] Create card form (front/back) +- [ ] Edit card +- [ ] Delete card - [ ] Add tests -### Frontend Foundation -- [ ] Initialize SvelteKit -- [ ] Setup routing -- [ ] API client +**✅ Milestone**: Users can create and manage cards + +--- + +## Phase 5: Study Session (MVP Complete) + +**Goal**: Study with FSRS algorithm + +### Server API +- [ ] ts-fsrs integration +- [ ] GET /api/decks/:deckId/study - Get due cards +- [ ] POST /api/decks/:deckId/study/:cardId - Submit review - [ ] Add tests -### Auth UI -- [ ] Login page -- [ ] Add UI tests -- [ ] Register page -- [ ] Add UI tests -- [ ] Auth store -- [ ] Add UI tests - -### Deck Management UI -- [ ] Deck list page -- [ ] Add UI tests -- [ ] Deck detail page -- [ ] Add UI tests -- [ ] Create/edit deck -- [ ] Add UI tests - -### Card Management UI -- [ ] Card list view -- [ ] Add UI tests -- [ ] Create/edit card -- [ ] Add UI tests - -### Study UI +### Frontend - [ ] Study session page -- [ ] Add UI tests - [ ] Card flip interaction -- [ ] Add UI tests - [ ] Rating buttons (Again, Hard, Good, Easy) -- [ ] Add UI tests -- [ ] Progress display -- [ ] Add UI tests +- [ ] Progress display (remaining cards) +- [ ] Session complete screen +- [ ] Add tests -## Phase 3: Offline Support +**✅ Milestone**: MVP complete - basic study flow works -### IndexedDB -- [ ] Dexie.js setup -- [ ] Local schema (with sync flags) -- [ ] Local CRUD operations -- [ ] Add tests +--- + +## Phase 6: PWA & Offline Support + +**Goal**: Study offline -### PWA +### PWA Setup - [ ] @vite-pwa/sveltekit configuration - [ ] Web manifest - [ ] Service Worker -- [ ] Offline fallback +- [ ] Offline fallback page - [ ] Add tests -### Sync Engine -- [ ] Sync queue management -- [ ] Add tests -- [ ] Push implementation -- [ ] Add tests -- [ ] Pull implementation -- [ ] Add tests -- [ ] Conflict resolution +### IndexedDB (Local Storage) +- [ ] Dexie.js setup +- [ ] Local schema (with _synced flag) +- [ ] Local CRUD operations for Deck/Card/ReviewLog - [ ] Add tests + +### Sync Engine +- [ ] POST /api/sync/push endpoint +- [ ] GET /api/sync/pull endpoint +- [ ] Client: Sync queue management +- [ ] Client: Push implementation +- [ ] Client: Pull implementation +- [ ] Conflict resolution (Last-Write-Wins) - [ ] Auto-sync on reconnect - [ ] Add tests -### Sync API -- [ ] POST /api/sync/push -- [ ] GET /api/sync/pull - ### Sync UI - [ ] Sync status indicator - [ ] Manual sync button - [ ] Offline mode indicator -## Phase 4: Anki Import +**✅ Milestone**: Study offline and sync when back online + +--- + +## Phase 7: Anki Import + +**Goal**: Import existing Anki decks ### Parser - [ ] ZIP extraction - [ ] SQLite database reading -- [ ] Note/Card mapping +- [ ] Note/Card mapping to Kioku format - [ ] Add tests -### Import API +### Server API - [ ] POST /api/import/apkg - [ ] Progress tracking - [ ] Add tests -### Import UI -- [ ] File upload -- [ ] Import progress -- [ ] Import results +### Frontend +- [ ] File upload component +- [ ] Import progress indicator +- [ ] Import results display - [ ] Add tests -## Phase 5: Deployment +**✅ Milestone**: Anki users can migrate their decks + +--- + +## Phase 8: Deployment ### Docker - [ ] Dockerfile for server @@ -153,12 +194,18 @@ - [ ] Backup strategy ### Documentation -- [ ] README.md +- [ ] README.md (setup, usage) + +**✅ Milestone**: Ready for production deployment + +--- ## Future Considerations -- Statistics and analytics -- Export functionality -- Multiple card types -- Tags and search -- Keyboard shortcuts +By priority: + +1. **Statistics and analytics** - Visualize learning progress +2. **Keyboard shortcuts** - Improve study efficiency +3. **Tags and search** - Organize decks and cards +4. **Export functionality** - Data portability +5. **Multiple card types** - Cloze deletion, etc. |
