A React Native financial education app built with Domain Driven Design
FourmiMobile transforms financial management into an engaging quest-based learning experience. Users progress through guided educational quests that combine data collection, AI-powered analysis, and personalized financial insights.
Built with Ignite React Native boilerplate, implementing Domain Driven Design (DDD) and Test Driven Development (TDD).
Each Quest combines:
- 🎬 Educational scenarios - Contextual financial guidance
- 📝 Data collection - Forms or voice input with AI validation
- 🤖 Smart analysis - AI-powered insights and recommendations
- 📊 Profile updates - Dynamic financial health tracking
- 🎯 Progression - XP rewards and feature unlocking
- Domain Driven Design with 3 bounded contexts (User Progression, Financial Data, Project Management)
- Use Cases pattern for cross-context orchestration
- Value Objects for type-safe financial calculations
- Test Driven Development with comprehensive coverage
pnpm install # Install dependencies
pnpm start # Start Expo development server
pnpm run ios # Run on iOS simulator
pnpm run android # Run on Android emulatorpnpm run build:ios:sim # Build for iOS simulator
pnpm run build:ios:dev # Build for iOS device (development)
pnpm run build:android:sim # Build for Android simulatorpnpm test # Run Jest test suite
pnpm run test:watch # Run tests in watch mode
pnpm run lint # Run ESLint with auto-fix
pnpm run compile # TypeScript type checking
pnpm run test:maestro # Run E2E testsapp/
├── components/ # Reusable UI components (Ignite standard)
├── screens/ # Screen components with i18n and theming
├── navigators/ # TypeScript-strict navigation
├── services/ # Application layer services
├── context/ # React context providers
├── domain/ # Domain layer (aggregates, value objects)
├── application/ # Use cases and application services
└── infrastructure/ # External adapters (Convex, PostHog)
Every feature requires documentation before code:
docs/features/[FEATURE_NAME]/
├── requirements.md # User stories and acceptance criteria
├── roadmap.md # Step-by-step implementation plan
└── technical-design.md # Architecture decisions and API contracts
- Framework: React Native with Expo + Ignite boilerplate
- Language: TypeScript with strict mode
- Architecture: Domain Driven Design (DDD) with Use Cases pattern
- Testing: Jest + Maestro E2E testing
- Analytics: PostHog with privacy-first approach
- Backend: Convex (flexible, may evolve)
- State: React Context + MMKV for persistence
- Feature Documentation First - Requirements and roadmap before any code
- Red-Green-Refactor - Write failing tests, minimal implementation, refactor
- Domain-Centric Design - Business logic in aggregates, orchestration in Use Cases
- Frequent Commits - One commit per sub-step with descriptive messages
- Internationalization: All user text via
txprop:<Text tx="welcomeScreen.title" /> - Theming: Use
useAppTheme()hook, automatic light/dark mode support - Navigation: TypeScript-strict with param lists in
AppNavigator.tsx - Import Paths:
@/for app code,@assets/for assets
- PostHog Integration: Track user journeys and quest progression
- Privacy-First: No sensitive financial data in analytics
- GDPR Compliance: User consent management and data export/deletion
🎯 User starts quest → 📖 Educational content → 📝 Data input (form/voice)
↓
🤖 AI validation → 👤 Human approval → 💾 Profile update → 🏆 XP reward
- User Progression: Quests, steps, XP, feature unlocking
- Financial Data: Budget, income/expenses, AI fact extraction
- Project Management: Real estate analysis, debt consolidation
- Domain Documentation:
docs/plan/DOMAIN_MODEL_DDD.md - Implementation Plan:
docs/plan/IMPLEMENTATION_ROADMAP.md - Claude Instructions:
CLAUDE.md(for AI pair programming) - Ignite Docs: Official documentation