MASTER TASK LIST - nself-org/nchat GitHub Wiki
Created: February 5, 2026 Status: IN PROGRESS Goal: Fix every single issue identified in comprehensive QA
Priority: P0 (BLOCKING)
Issue: TypeError: e.createContext is not a function in /api/calls/[id]/join/route.ts
Impact: Production build cannot complete
Steps:
- Read
/src/app/api/calls/[id]/join/route.ts - Identify the context usage issue
- Fix the React context import/usage
- Test build completes successfully
- Verify route works at runtime
QA: Run
pnpm buildand verify success Status: NOT STARTED
Priority: P0 (BLOCKING) Issue: Type mismatches in API routes and services Errors:
-
src/app/api/attachments/[id]/access/route.ts:133- Array filter type mismatch -
src/app/api/attachments/[id]/access/route.ts:249- AuditAction type -
src/app/api/attachments/[id]/access/route.ts:251- AuditCategory type -
src/app/api/attachments/[id]/access/route.ts:252- ResourceType type -
src/app/api/attachments/upload/route.ts:21- Missing export 'getValidationService' -
src/app/api/attachments/upload/route.ts:262- Unknown property 'buffer' -
src/app/api/attachments/upload/route.ts:269- Missing property 'success' -
src/app/api/attachments/upload/route.ts:270- Missing property 'error' -
src/app/api/attachments/upload/route.ts:275- Missing property 'error' -
src/app/api/attachments/upload/route.ts:281- Missing property 'data' -
src/app/api/attachments/upload/route.ts:318- Missing method 'deleteFile' -
src/app/api/channels/categories/route.ts:25- Implicit 'any[]' type -
src/app/api/channels/categories/route.ts:27- Implicit 'any[]' type -
src/app/api/jobs/process-scheduled-messages/route.ts:319- AuditAction type -
src/app/api/jobs/process-scheduled-messages/route.ts:322- ResourceType type -
src/app/api/jobs/process-scheduled-messages/route.ts:396- Unknown property 'isSent' -
src/app/api/messages/[id]/forward/route.ts:254- AuditAction type -
src/app/api/messages/[id]/link-preview/route.ts:285- Unknown property 'validateSsl' -
src/app/api/messages/[id]/link-preview/route.ts:309- Missing property 'message' -
src/app/api/messages/[id]/link-preview/route.ts:313- Missing property 'message'
Steps:
- Create type definitions for missing types
- Fix each error systematically
- Run
pnpm type-checkafter each fix - Ensure no new errors introduced
QA: Run
pnpm type-checkwith zero errors Status: NOT STARTED
Priority: P0 (BLOCKING) Issue: Missing exports causing build warnings Errors:
-
src/services/files/validation.service.ts- Missing export 'getValidationService' -
src/services/channels/category.service.ts- Missing exports 'createCategoryService', 'getCategoryService'
Steps:
- Add missing exports to validation.service.ts
- Add missing exports to category.service.ts
- Verify imports work correctly
- Test build completes without warnings
QA: Run
pnpm buildwith no export errors Status: NOT STARTED
Priority: P1 (HIGH) Issue: 2% test failure rate (21/1014 tests) Breakdown:
- LiveKit integration tests (6 failures) - Jest environment issue
- File upload tests (4 failures) - Mock service issues
- Scheduled messages (3 failures) - Timer-based flakiness
- E2EE session tests (2 failures) - Async setup issues
- Auth flow tests (6 failures) - Nhost mock issues
Steps:
- Fix LiveKit Jest environment config
- Fix file upload mock services
- Stabilize timer-based tests (use fake timers)
- Fix async E2EE session setup
- Fix Nhost auth mocks
- Run tests until 100% pass rate
QA: Run
pnpm testwith 1014/1014 passing Status: NOT STARTED
Priority: P1 (HIGH) Issue: Stripe client returns mock payment intents (not real API calls) Current: Server integration is real, client is mocked Steps:
- Read current Stripe client implementation
- Implement real Stripe.js integration
- Replace mock payment intent IDs with real API calls
- Add proper error handling
- Add webhook verification
- Test with Stripe test mode
- Document API keys setup QA: Create test payment and verify real Stripe API is called Status: NOT STARTED
Priority: P1 (HIGH) Issue: Documentation claims don't match reality Misleading Claims:
- "100% complete" → Actually 70-75%
- "Signal Protocol library" → Actually Web Crypto API
- "Stripe integrated" → Client is mocked
- "Production ready" → Build fails
- "Video processing" → Only images work
Steps:
- Update
.claude/CLAUDE.mdwith accurate completion % - Update
README.mdto reflect actual status - Update
docs/Features-Complete.mdwith reality - Add "MVP Features" vs "Complete Features" section
- Document what's mocked vs real
- Update version to 0.9.1-beta (not production) QA: Review all docs for accuracy Status: NOT STARTED
Priority: P1 (HIGH) Issue: Coverage claimed (>80%) but not measured Steps:
- Verify jest.config.js has coverage settings
- Run
pnpm test --coverage - Generate coverage report
- Measure actual coverage %
- Identify uncovered code
- Add tests to reach 80% threshold QA: Coverage report shows >80% actual coverage Status: NOT STARTED
Priority: P2 (MEDIUM) Issue: Video transcoding throws "not implemented in MVP" Current: Image processing works (Sharp.js), video stubbed Steps:
- Install FFmpeg dependency
- Create video transcoding service
- Implement format conversion
- Add thumbnail extraction from video
- Add progress reporting
- Test with sample videos
- Update documentation QA: Upload video file and verify transcoding works Status: NOT STARTED Estimated Time: 16-24 hours
Priority: P2 (MEDIUM) Issue: Electron/Tauri builds need icon assets Steps:
- Design icon in multiple sizes (16x16 to 512x512)
- Create .icns file (macOS)
- Create .ico file (Windows)
- Create .png files (Linux)
- Update Electron build config
- Update Tauri build config
- Test desktop builds with icons QA: Build desktop app and verify icon appears Status: NOT STARTED Estimated Time: 4 hours (with designer)
Priority: P2 (MEDIUM)
Issue: ~30 errors in .next/types/ about async params
Cause: Next.js 15 changed params to be async
Steps:
- Read Next.js 15 migration guide
- Update route handlers to await params
- Change
params: { id: string }toparams: Promise<{ id: string }> - Add async/await to all route handlers
- Test all affected routes
QA: Run
pnpm type-checkwith no .next/types errors Status: NOT STARTED
Priority: P3 (LOW) Issue: ~10 peer dependency warnings from pnpm Steps:
- List all peer dependency warnings
- Update packages to compatible versions
- Test that app still works
- Document any breaking changes
QA: Run
pnpm installwith no warnings Status: NOT STARTED
Priority: P3 (LOW) Issue: ~30 deprecated subdependencies Steps:
- List all deprecated packages
- Check for updated versions
- Update dependencies one by one
- Test after each update
- Document migration steps
QA: Run
pnpm outdatedand verify critical deps updated Status: NOT STARTED
Priority: P3 (LOW) Issue: Capacitor iOS/Android builds untested on real devices Steps:
- Build iOS app for simulator
- Build Android app for emulator
- Test on physical iOS device
- Test on physical Android device
- Test push notifications
- Test native features (camera, etc.)
- Document device-specific issues QA: App runs successfully on iOS and Android devices Status: NOT STARTED Estimated Time: 8 hours
Priority: P3 (LOW) Issue: Workflow engine exists but UI is minimal Steps:
- Design workflow builder interface
- Implement drag-and-drop
- Add trigger configuration UI
- Add action configuration UI
- Add condition builder
- Add workflow testing/debugging
- Document workflow capabilities QA: Create a workflow using the UI and verify it executes Status: NOT STARTED Estimated Time: 12 hours
Priority: P0 (REQUIRED) Steps:
- Clean build directory (
rm -rf .next) - Run
pnpm type-check(zero errors) - Run
pnpm lint(zero errors) - Run
pnpm build(successful) - Test production build locally
- Check bundle size
- Verify all routes accessible QA: Production build works without errors Status: NOT STARTED
Priority: P0 (REQUIRED) Steps:
- Run
pnpm test(all tests pass) - Run
pnpm test --coverage(>80% coverage) - Review coverage report
- Add tests for uncovered code
- Run tests again
- Document test results QA: 100% test pass rate with >80% coverage Status: NOT STARTED
Priority: P0 (REQUIRED) Steps:
- Start backend:
cd .backend && nself start - Verify PostgreSQL running
- Verify Hasura GraphQL endpoint
- Verify Auth service
- Verify MeiliSearch
- Verify LiveKit
- Verify RTMP
- Test all 5 plugin services
- Run health check script QA: All 11 backend services healthy Status: NOT STARTED
Priority: P1 (REQUIRED) Steps:
- Test user registration/login
- Test channel creation
- Test message sending
- Test file upload
- Test voice/video call
- Test search functionality
- Test admin dashboard
- Test all plugin features
- Document any issues found QA: All critical user flows work end-to-end Status: NOT STARTED
Total Tasks: 18 Critical (P0): 3 (Tasks 1-3) High (P1): 4 (Tasks 4-7) Medium (P2): 3 (Tasks 8-10) Low (P3): 4 (Tasks 11-14) Verification (Required): 4 (Tasks 15-18)
Estimated Total Time: 60-80 hours to complete everything
Critical Path (blocking deployment):
- Fix build failure (Task 1) - 2 hours
- Fix TypeScript errors (Task 2) - 4 hours
- Fix export errors (Task 3) - 1 hour
- Fix failing tests (Task 4) - 6 hours
- Update documentation (Task 6) - 2 hours
- Full verification (Tasks 15-18) - 4 hours
Minimum to Ship: Complete Tasks 1-7, 15-18 (20-25 hours) Full 100% Completion: Complete all 18 tasks (60-80 hours)
Next Action: Start with Task 1 (Fix build failure)