Lonn


Context
B2B SaaS for wellness centers: a staff scheduling module on the manager side (pre-payroll-style, working-time rules) and an appointment booking system on the client side. MVP built as a team via Le Collectif 40 — I was responsible for the backend architecture, the data model and the server-side technical choices.
My approach
The core of the project on the server side: lay an architecture that holds, model a clean database to let two scopes coexist (HR scheduling + client bookings) without mixing them, and expose it through a custom Symfony BFF API. In continuous dialogue with the client, who acted as product owner — every scope trade-off and every business rule was discussed before being settled. Strict MVP discipline: cut what doesn't fit V1 rather than ship late.
- Backend architecture and data model designed to let two scopes coexist (staff scheduling and client bookings) without stepping on each other.
- A Symfony BFF API designed for a single client (the Vue front-end): aggregation, clear contracts, business-rule validation centralized server-side.
- MVP scope held: cut feature by feature to lay clean foundations, ready to be extended.
Stack & technical choices
Symfony requested by the client — a solid framework to carry business logic. PostgreSQL for persistence: a mature ORM and relational guarantees that pay off the moment HR and calendar data mix. On the front, Vue + TypeScript built by another team member: a stable, typed API contract, and a front that doesn't duplicate the logic.
Outcome & takeaways
MVP shipped. Nothing louder than that: the goal was to lay the foundations cleanly and hold the scope. For me, the project where the discipline of "what does NOT belong in V1" was at the heart of the brief — and where the architecture set early on directly determined delivery speed.