4.6 KiB
Memory - Context App
This file tracks important decisions, ongoing work, known issues, and context that should persist across agent sessions.
Current State
App Status
- Stage: Mobile MVP
- Platform: Expo 52 + React Native 0.76
- Database: Supabase (PostgreSQL with RLS)
- AI Providers: Azure OpenAI (GPT-4.1), Google Gemini (Pro, Flash)
- Monetization: RevenueCat (subscriptions + token economy)
Active Work
- Currently in project-agents branch
- Creating agent team documentation
Known Issues
-
API Keys in Mobile App (Critical)
- Keys are extractable from decompiled app
- Mitigation: Rate limiting, usage alerts, key rotation
- Fix: Migrate to backend API (planned)
-
No Rate Limiting
- Users can spam AI requests
- Fix: Backend API with Redis-backed rate limiting (planned)
-
Limited Error Handling
- Some error paths not handled gracefully
- Fix: Add retry logic and offline support
-
No Automated Tests
- Only manual testing currently
- Fix: Add Jest unit tests, Detox E2E tests (planned)
Architecture Decisions
Use Supabase Instead of Custom Backend
Decision: Use Supabase for MVP, migrate to NestJS backend later
Rationale:
- Faster MVP development
- Built-in auth, RLS, realtime
- Easy migration path
Consequences:
- ✅ Rapid development
- ❌ API keys exposed in mobile app
Status: Active - Will migrate to NestJS backend in Phase 2
Token-Based Economy
Decision: Implement token-based economy (1000 tokens = $0.001 USD)
Rationale:
- Transparent costs for users
- Encourages responsible AI usage
- Fair for both light and heavy users
Status: Active - Working well
Multi-Provider AI
Decision: Support Azure OpenAI and Google Gemini
Rationale:
- Avoid vendor lock-in
- Different models for different use cases
- Fallback if one provider has outage
Status: Active - Will add more providers in future
Short IDs for Documents
Decision: Auto-generate IDs like "MD1", "MC2" instead of UUIDs
Rationale:
- Human-friendly references
- Easy to mention in content (@MD1)
- Memorable for users
Status: Active - Working well
Auto-Save with Debounce
Decision: Auto-save 3 seconds after user stops typing
Rationale:
- Modern UX standard
- No friction - users never lose work
Status: Active - Will improve error handling
Migration Path
Phase 1: Mobile MVP (Current)
- ✅ Expo mobile app
- ✅ Supabase for database + auth
- ✅ Direct AI API calls from mobile
- ✅ RevenueCat for monetization
Phase 2: Backend API (Planned)
- NestJS backend with Drizzle ORM
- AI calls proxied through backend
- Migrate auth to mana-core-auth
- Hide API keys server-side
Phase 3: Web App (Planned)
- SvelteKit web app
- Shares backend API with mobile
- Real-time collaboration features
Phase 4: Landing Page (Planned)
- Astro static site
- Marketing content, pricing, docs
Common Patterns
JSONB Metadata for Extensibility
- Always merge metadata, never replace
- Used in documents and token transactions
Service Layer Abstraction
- Each service has one responsibility
- Enables testing and reusability
Debounced Operations
- Auto-save, token counting, search
- Clean up on unmount
Team Notes
For Product Owner
- Users love token transparency
- Feature request: Export as PDF/Markdown (high priority)
For Architect
- Supabase RLS working well
- Consider Redis caching for token balances
For Senior Developer
- Token estimation accuracy is ±10%
- Metadata merge pattern is critical
For Developer
- Always merge metadata with existing
- Use estimateTokens() from tokenCountingService
- Test on both iOS and Android
For Security Engineer
- API key exposure is #1 priority
- RLS policies are solid
- Add rate limiting even in MVP
For QA Lead
- Test token estimation for every AI model
- Auto-save edge cases need regression tests
- Performance benchmarks: Document load <500ms
Lessons Learned
- Token Estimation is Hard: Improved to ±10% accuracy, will use tiktoken in backend
- Metadata Updates Need Merging: Always merge, never replace
- Auto-Save UX is Critical: Better error messages needed
- Short IDs are Loved: Small UX details make big impact
Future Considerations
Potential Features
- Collaborative editing with real-time sync
- Knowledge graph visualization
- Voice input for mobile
- Offline mode with local storage
- Browser extension for web clipping
Technical Improvements
- Streaming AI responses
- Better token counting (tiktoken)
- Redis caching
- Monitoring and analytics
- Automated tests