# Future Tasks Plan - mnemo_cards_web_v2 **Created:** October 28, 2025 **Status:** Active Development **Current Phase:** API v2 Implementation & Feature Completion --- ## 📋 Overview This document outlines the comprehensive plan for completing the mnemo_cards_web_v2 project. Tasks are organized by priority and dependency. --- ## 🎯 Phase 1: Complete API v2 Backend Implementation **Priority:** HIGH **Estimated Time:** 8-12 hours **Dependencies:** None ### 1.1 Fix JWT Service Implementation **Status:** 🔴 Critical **Time:** 2-3 hours **Tasks:** - [ ] Replace placeholder HMAC-SHA256 with proper crypto library - Use `crypto` package: `package:crypto/crypto.dart` - Implement proper HMAC-SHA256 signing - Add secret key management (environment variable or secure storage) - [ ] Test JWT token generation and verification - [ ] Add token expiration handling - [ ] Implement refresh token blacklist storage (Isar model or in-memory cache) - [ ] Add comprehensive error handling **Acceptance Criteria:** - JWT tokens are properly signed with HMAC-SHA256 - Token verification works correctly - Token expiration is enforced - Refresh tokens can be invalidated **Files to Modify:** - `mnemo_cards_backend/lib/api/v2/jwt_service.dart` --- ### 1.2 Complete Authentication API v2 **Status:** 🟡 In Progress **Time:** 2-3 hours **Tasks:** - [ ] Verify Google OAuth flow works end-to-end - [ ] Add Telegram authentication endpoint (future) - [ ] Test token refresh mechanism - [ ] Add rate limiting for auth endpoints - [ ] Add comprehensive error responses - [ ] Write integration tests **Acceptance Criteria:** - Google OAuth flow works completely - Token refresh works when access token expires - Proper error messages for all failure scenarios - Tests cover all auth flows **Files to Modify:** - `mnemo_cards_backend/lib/api/v2/auth_api_v2.dart` --- ### 1.3 Implement Packs API v2 **Status:** 🟡 Partial **Time:** 3-4 hours **Tasks:** - [ ] Complete `GET /api/v2/packs` with proper pagination - Query params: `?page=1&limit=20&search=term&language=lang` - Return paginated response: `{ items: [], total: 0, page: 1, limit: 20 }` - [ ] Implement `GET /api/v2/packs/{packId}` - Return full pack details - Include user's purchase status if authenticated - [ ] Implement `GET /api/v2/packs/{packId}/cards` - Return all cards in pack - Support pagination if needed - [ ] Implement `GET /api/v2/packs/{packId}/cards/{cardId}/image` - Return card image (reuse existing v1 logic) - [ ] Implement `GET /api/v2/packs/{packId}/tests` - Return tests for pack - [ ] Add filtering and search capabilities - [ ] Write comprehensive tests **Acceptance Criteria:** - All pack endpoints work correctly - Pagination works properly - Search and filtering work - Tests cover all endpoints **Files to Modify:** - `mnemo_cards_backend/lib/api/v2/packs_api_v2.dart` --- ### 1.4 Implement Tests API v2 **Status:** ⬜ Not Started **Time:** 2-3 hours **Tasks:** - [ ] Implement `GET /api/v2/tests/{testId}` - Return test details - [ ] Implement `POST /api/v2/tests/{testId}/results` - Accept test results - Validate results - Save to database - [ ] Implement `GET /api/v2/tests/{testId}/history` - Return user's test attempt history - Support pagination - [ ] Write tests **Acceptance Criteria:** - All test endpoints work correctly - Results are properly saved - History is correctly retrieved - Tests cover all endpoints **Files to Create:** - `mnemo_cards_backend/lib/api/v2/tests_api_v2.dart` --- ### 1.5 Implement Games API v2 **Status:** ⬜ Not Started **Time:** 1-2 hours **Tasks:** - [ ] Implement `GET /api/v2/games` - Return all available games - Include game metadata - [ ] Implement `GET /api/v2/games/{gameId}/assets` - Return game assets URL/info - [ ] Write tests **Acceptance Criteria:** - Games list endpoint works - Game assets endpoint works - Tests cover endpoints **Files to Create:** - `mnemo_cards_backend/lib/api/v2/games_api_v2.dart` --- ### 1.6 Implement Purchases API v2 **Status:** ⬜ Not Started **Time:** 4-5 hours **Tasks:** - [ ] Implement `POST /api/v2/purchases/packs/{packId}` - Create purchase intent - Return purchase info - [ ] Implement `GET /api/v2/purchases/packs/{packId}/status` - Check if pack is purchased - [ ] Implement `POST /api/v2/purchases/payments` - Create payment (YooKassa integration) - Return payment URL/redirect - [ ] Implement `GET /api/v2/purchases/payments/{paymentId}/verify` - Verify payment status - Update user purchases on success - [ ] Write tests **Acceptance Criteria:** - Purchase flow works end-to-end - Payment integration works - Payment verification works - User purchases are updated correctly **Files to Create:** - `mnemo_cards_backend/lib/api/v2/purchases_api_v2.dart` --- ### 1.7 Implement Subscriptions API v2 **Status:** ⬜ Not Started **Time:** 3-4 hours **Tasks:** - [ ] Implement `GET /api/v2/subscriptions/plans` - Return available subscription plans - [ ] Implement `POST /api/v2/subscriptions` - Create subscription (delegate to existing logic) - [ ] Implement `GET /api/v2/subscriptions/me` - Get current user's subscription - [ ] Implement `DELETE /api/v2/subscriptions/me` - Cancel subscription - [ ] Write tests **Acceptance Criteria:** - All subscription endpoints work - Subscription creation works - Cancellation works - Tests cover all endpoints **Files to Create:** - `mnemo_cards_backend/lib/api/v2/subscriptions_api_v2.dart` --- ### 1.8 Implement Promocodes API v2 **Status:** ⬜ Not Started **Time:** 1-2 hours **Tasks:** - [ ] Implement `GET /api/v2/promocodes` - Return available promocodes (if public) - Query params: `?active=true` - [ ] Implement `POST /api/v2/promocodes/{code}/apply` - Apply promocode - Validate code - Apply discount/benefit - [ ] Write tests **Acceptance Criteria:** - Promocode listing works - Promocode application works - Discounts are applied correctly - Tests cover endpoints **Files to Create:** - `mnemo_cards_backend/lib/api/v2/promocodes_api_v2.dart` --- ### 1.9 Update Backend Routing **Status:** 🟡 Partial **Time:** 1 hour **Tasks:** - [ ] Mount all v2 APIs in `mnemo_shelf.dart` - [ ] Verify v2 routes don't conflict with v1 - [ ] Test all v2 endpoints are accessible - [ ] Add OpenAPI documentation for v2 endpoints **Acceptance Criteria:** - All v2 APIs are mounted correctly - No route conflicts - All endpoints accessible **Files to Modify:** - `mnemo_cards_backend/lib/api/mnemo_shelf.dart` --- ## 🎯 Phase 2: Migrate Web App to Use API v2 **Priority:** HIGH **Estimated Time:** 6-8 hours **Dependencies:** Phase 1 (at least backend auth must be working) ### 2.1 Complete HttpRepositoryV2 Implementation **Status:** 🟡 Partial **Time:** 2-3 hours **Tasks:** - [ ] Add missing methods to `HttpRepositoryV2`: - Purchase methods (`createPackPurchase`, `verifyPayment`, etc.) - Subscription methods (`getSubscriptionPlans`, `purchaseSubscription`, `cancelSubscription`) - Promocode methods (`getPromocodes`, `applyPromocode`) - User methods (`updateUserSettings`, `getUserPurchases`, `getUserStatistics`) - [ ] Ensure all methods match API v2 endpoints - [ ] Add proper error handling - [ ] Write unit tests **Acceptance Criteria:** - All v2 API endpoints are accessible via HttpRepositoryV2 - Error handling is consistent - Tests cover all methods **Files to Modify:** - `mnemo_cards_web_v2/lib/domain/services/http_repository_v2.dart` --- ### 2.2 Migrate PackManager to Use v2 **Status:** ⬜ Not Started **Time:** 1-2 hours **Tasks:** - [ ] Update `PackManager` to use `HttpRepositoryV2` instead of `HttpRepository` - [ ] Update method calls to use v2 endpoints - [ ] Update error handling - [ ] Write/update tests **Acceptance Criteria:** - PackManager uses v2 API - All pack operations work - Tests pass **Files to Modify:** - `mnemo_cards_web_v2/lib/domain/services/pack_manager.dart` - `mnemo_cards_web_v2/test/domain/services/pack_manager_test.dart` --- ### 2.3 Migrate GamesManager to Use v2 **Status:** 🟡 Partial **Time:** 1 hour **Tasks:** - [x] Update `GamesManager` to use `HttpRepositoryV2` - GamesManager uses v2 API - Games load correctly - Tests pass **Files to Modify:** - `mnemo_cards_web_v2/lib/domain/services/games_manager.dart` - `mnemo_cards_web_v2/test/domain/services/games_manager_test.dart` --- ### 2.4 Migrate TestManager to Use v2 **Status:** 🟡 Partial **Time:** 1-2 hours **Tasks:** - [x] Update `TestManager` to use `HttpRepositoryV2` - TestManager uses v2 API - Tests load and submit correctly - Tests pass **Files to Modify:** - `mnemo_cards_web_v2/lib/domain/services/test_manager.dart` - `mnemo_cards_web_v2/test/domain/services/test_manager_test.dart` --- ### 2.5 Migrate Other Services to Use v2 **Status:** 🟡 Partial **Time:** 2-3 hours **Tasks:** - [x] Update `SubscriptionService` to use `HttpRepositoryV2` - [x] Update `PromocodeService` to use `HttpRepositoryV2` - [ ] Update `StatisticsService` to use v2 (if needed) - [ ] Update `PackProgressService` to use v2 (if needed) - [ ] Update tests for all services **Acceptance Criteria:** - All services use v2 API - All functionality works - Tests pass **Files to Modify:** - `mnemo_cards_web_v2/lib/domain/services/subscription_service.dart` - `mnemo_cards_web_v2/lib/domain/services/promocode_service.dart` - Related test files --- ### 2.6 Remove V1 Dependencies **Status:** ⬜ Not Started **Time:** 1 hour **Tasks:** - [ ] Remove deprecated `HttpRepository` from dependency injection - [ ] Remove deprecated `ApiConfig` usage (or mark clearly deprecated) - [ ] Update all references to use v2 - [ ] Clean up unused code **Acceptance Criteria:** - No v1 dependencies remain in web app - Code is clean - No deprecation warnings --- ## 🎯 Phase 3: Feature Implementation **Priority:** MEDIUM **Estimated Time:** 12-16 hours **Dependencies:** Phase 2 complete ### 3.1 Pack Purchase Flow **Status:** ⬜ Not Started** **Time:** 6-8 hours **Tasks:** - [ ] Create `PurchaseService` using `HttpRepositoryV2` - [ ] Implement purchase flow: - Check if pack is owned - Show "Buy Pack" button if not owned - Create payment via API v2 - Handle payment redirect - Verify payment after return - Update UI to show purchased packs - [ ] Create purchase UI: - Purchase confirmation dialog - Payment redirect handling - Payment status display - [ ] Write unit tests - [ ] Write integration tests **Acceptance Criteria:** - Users can purchase packs - Payment flow works end-to-end - UI updates correctly after purchase - Tests cover purchase flow **Files to Create:** - `mnemo_cards_web_v2/lib/domain/services/purchase_service.dart` - `lib/presentation/pages/purchase/purchase_page.dart` (if needed) - `lib/di/user_scope/modules/purchase_module.dart` **Files to Modify:** - `lib/presentation/pages/pack_details/pack_details_page.dart` - `lib/presentation/widgets/pack_card.dart` --- ### 3.2 Enhanced Subscription Management **Status:** 🟡 Partial **Time:** 4-5 hours **Tasks:** - [ ] Create subscription page UI - [ ] Display subscription plans - [ ] Implement subscription purchase - [ ] Implement subscription cancellation - [ ] Show subscription status on ProfilePage - [ ] Add subscription benefits UI - [ ] Write tests **Acceptance Criteria:** - Subscription page works - Purchase flow works - Cancellation works - UI displays subscription status correctly **Files to Create:** - `lib/presentation/pages/subscription/subscription_page.dart` **Files to Modify:** - `lib/presentation/pages/profile/profile_page.dart` - `lib/domain/services/subscription_service.dart` --- ### 3.3 Promocode UI **Status:** ⬜ Not Started **Time:** 2-3 hours **Tasks:** - [ ] Create promocode input widget - [ ] Add promocode section to ProfilePage or PurchasePage - [ ] Implement promocode application flow - [ ] Show promocode benefits/status - [ ] Handle promocode errors - [ ] Write tests **Acceptance Criteria:** - Users can enter promocodes - Promocodes are applied correctly - Error handling works - UI feedback is clear **Files to Create:** - `lib/presentation/widgets/promocode_input.dart` **Files to Modify:** - `lib/presentation/pages/profile/profile_page.dart` --- ## 🎯 Phase 4: Quality & Testing **Priority:** MEDIUM **Estimated Time:** 8-10 hours **Dependencies:** Phase 2-3 complete ### 4.1 Comprehensive Testing **Status:** ⬜ Not Started **Time:** 6-8 hours **Tasks:** - [ ] Write unit tests for all v2 API endpoints (backend) - [ ] Write unit tests for `HttpRepositoryV2` (web app) - [ ] Write integration tests for auth flow - [ ] Write integration tests for pack browsing - [ ] Write integration tests for purchase flow - [ ] Write integration tests for subscription flow - [ ] Ensure test coverage >80% for all new code **Acceptance Criteria:** - All new code has tests - Test coverage >80% - All tests pass --- ### 4.2 Fix Remaining Test Failures **Status:** 🟡 In Progress **Time:** 1-2 hours **Tasks:** - [ ] Fix `test_page_test.dart` (empty file causing compilation errors) - [ ] Investigate other failing tests - [ ] Fix all test failures - [ ] Ensure all tests pass **Acceptance Criteria:** - All tests pass - No compilation errors in tests --- ### 4.3 Code Quality Improvements **Status:** ⬜ Not Started **Time:** 2-3 hours **Tasks:** - [ ] Run `flutter analyze` and fix all warnings - [ ] Fix linter errors - [ ] Improve code documentation - [ ] Add JSDoc comments to public APIs - [ ] Refactor any complex code **Acceptance Criteria:** - No linter warnings - Code is well-documented - Code follows project patterns --- ## 🎯 Phase 5: Additional Features (Lower Priority) **Priority:** LOW **Estimated Time:** 12-16 hours **Dependencies:** Phases 1-4 complete ### 5.1 Vocabulary/Review Page **Status:** ⬜ Not Started **Time:** 6-8 hours **Tasks:** - [ ] Create `VocabularyPage` in bottom navigation - [ ] Fetch all learned cards across packs - [ ] Implement filtering by pack/language - [ ] Implement search functionality - [ ] Create review interface - [ ] Add export functionality - [ ] Write tests **Files to Create:** - `lib/presentation/pages/vocabulary/vocabulary_page.dart` - `lib/domain/services/vocabulary_service.dart` - `lib/domain/state/vocabulary_state_manager.dart` - `lib/di/user_scope/modules/vocabulary_module.dart` --- ### 5.2 Settings Page **Status:** ⬜ Not Started **Time:** 2-3 hours **Tasks:** - [ ] Create separate `SettingsPage` - [ ] Move settings from ProfilePage - [ ] Add theme toggle - [ ] Add language selection - [ ] Add sound effects toggle - [ ] Add notifications settings - [ ] Implement settings persistence - [ ] Write tests **Files to Create:** - `lib/presentation/pages/settings/settings_page.dart` - `lib/domain/state/settings_state_manager.dart` --- ### 5.3 Telegram Authentication (Code-based) **Status:** 🔴 Blocked **Time:** 8-10 hours **Tasks:** - [ ] Design auth flow (code generation, validation, timeout) - [ ] Add backend endpoints: - `POST /api/v2/auth/telegram/request` - Request auth code - `POST /api/v2/auth/telegram/verify` - Verify code and return token - [ ] Update telegram bot with `/auth` command - [ ] Implement code generation and storage in bot - [ ] Add `TelegramAuthService` in web app - [ ] Create `TelegramAuthPage` UI - [ ] Integrate with existing `AuthService` - [ ] Add timeout handling (codes expire after 5 min) - [ ] Write tests **Blocker:** Requires backend API endpoints and telegram bot modifications --- ## 🎯 Phase 6: Documentation & Deployment **Priority:** LOW **Estimated Time:** 4-6 hours **Dependencies:** Phases 1-4 complete ### 6.1 API Documentation **Tasks:** - [ ] Generate OpenAPI/Swagger documentation for v2 - [ ] Document all v2 endpoints - [ ] Add request/response examples - [ ] Document authentication flow - [ ] Create API migration guide --- ### 6.2 Deployment Preparation **Tasks:** - [ ] Update production API URLs - [ ] Configure CORS for production - [ ] Set up JWT secret key management - [ ] Test deployment to staging - [ ] Create deployment checklist --- ## 📊 Priority Matrix ### 🔴 High Priority (Complete First) 1. Fix JWT Service crypto implementation 2. Complete backend auth API v2 3. Migrate web app services to use v2 4. Implement pack purchase flow ### 🟡 Medium Priority (Complete Next) 1. Complete remaining backend v2 endpoints 2. Implement subscription management UI 3. Comprehensive testing 4. Fix test failures ### 🟢 Low Priority (Complete When Time Allows) 1. Vocabulary/Review page 2. Settings page 3. Telegram authentication 4. API documentation 5. Deployment preparation --- ## 📈 Estimated Timeline **Phase 1 (Backend v2):** 8-12 hours **Phase 2 (Web Migration):** 6-8 hours **Phase 3 (Features):** 12-16 hours **Phase 4 (Quality):** 8-10 hours **Phase 5 (Additional Features):** 12-16 hours (optional) **Phase 6 (Documentation):** 4-6 hours (optional) **Total Core Work (Phases 1-4):** ~34-46 hours **Total Including Optional:** ~50-68 hours --- ## 🎯 Success Criteria The project will be considered complete when: 1. ✅ API v2 is fully implemented on backend 2. ✅ Web app uses API v2 exclusively 3. ✅ All core features work (auth, packs, tests, purchases, subscriptions) 4. ✅ Test coverage >80% 5. ✅ All tests pass 6. ✅ No critical bugs 7. ✅ Code follows project patterns and conventions --- ## 📝 Notes - **Backward Compatibility:** V1 APIs should remain functional for mobile app - **Testing:** Write tests as features are implemented, not after - **Documentation:** Update PROGRESS.md and TODO.md after each major task - **Code Quality:** Follow clean architecture, yx_scope, yx_state patterns - **Web Only:** Remember this is a web app - no mobile/macOS features needed --- **Last Updated:** October 28, 2025