Case study 01 · Full-stack · AI · FinTech
MesSous
A mobile money coach to track spending in CFA francs, plan a budget and decide before buying.
- Role
- Design, full-stack development, AI integration and testing
- Category
- Full-stack · AI · FinTech
- Stack
- Next.js 16 · React 19 · PostgreSQL
- Quality
- 172 tests


01 — Context
MesSous is built for students, workers, parents and freelancers in French-speaking Africa. Designed phone-first for the Beninese context, it brings declared transactions in CFA francs, the budget and financial goals together in an experience that works for people unfamiliar with financial tools.
02 — Problem
Money is spread across cash, mobile money, bank accounts and savings circles: no overall view is possible.
03 — Solution
Users declare where they keep their money, then record income, expenses and savings. MesSous computes estimated balances, compares spending with the budget and shows trends. The coach explains the situation, prepares proposals and compares purchase scenarios; every proposal is reviewed and confirmed by the user. The app never moves money: everything stays declarative.
04 — Features
Several money spaces
Cash, MTN, Moov, bank, savings circle: available and locked money kept apart.
Transactions and search
Income, expenses and transfers filterable by period, category and amount.
Evolving budget
50/30/20 or irregular-income strategies, with dated versions.
Goals
Target amount, priority and deadline, with computed progress.
Purchase simulation
Balance after purchase and budget impact, before deciding.
Conversational coach
In French: understand spending, build a budget, save for a purchase.
05 — Screenshots

MesSous dashboard: estimated available money, monthly budget, fixed costs and coach tip 
Monthly review on mobile
06 — Architecture
- React interfacemobile first
- Next.js Server Actionssession · Zod
- Domain servicesrules ↔ AI coach
- Repositories · Prismadata access
- PostgreSQLsource of truth
Expenses, income, wallets, goals, budget, simulations and coach: each domain owns its components, validation, services and data access.
The AI only proposes. Its structured proposals go back through domain actions, validation and ownership checks before anything is saved.
07 — Technical challenges
Challenge
Make the AI useful without letting it touch the data.
Solution
Function calls limited to proposals, structured validation, identifier checks and user confirmation.
Challenge
Accurate balances despite transfers, goals and locked money.
Solution
Dedicated calculation rules, integer amounts and estimated balance kept apart from available money, covered by tests.
Challenge
Keep past months readable after a budget revision.
Solution
Dated budget versions: each month is compared with the budget in force at the time.
Challenge
Prevent a proposal from being confirmed twice.
Solution
Atomic reservation of coach cards and simulations before they are saved.
08 — My contribution
- Domain-based architecture and business rules
- Data model and migrations
- Full-stack declaration and planning flows
- Mobile-first interfaces and reusable components
- Financial calculations, aggregations and charts
- AI coach integration
- Administration, permissions and audit log
- Unit and integration tests, automated demo videos
09 — Stack
- Frontend
- React 19, TypeScript, Tailwind CSS v4, React Hook Form, Recharts
- Backend
- Next.js 16 (App Router, Server Components, Server Actions), Zod
- Data
- PostgreSQL, Prisma ORM 7
- Authentication
- Better Auth, double authentification TOTP (admin), Nodemailer
- AI
- OpenRouter, appels de fonctions structurés, repli heuristique
- Testing
- Vitest, Testcontainers, Playwright, FFmpeg
10 — Results
172
passing unit tests across 22 files
3
automatically generated demo video formats: mobile, tablet, desktop
0
money moved: the app stays declarative and the user stays in control
