Aqualib by Florent Manaudou : un concept de piscine
About the project
Aqualib is Florent Manaudou’s vision to revolutionize swimming access in France through modern, easy-to-book pools. Before building the first location, the team needed to convince public decision-makers—mayors, elected officials, and institutions—that the concept was viable. The mobile app served as the demonstration tool: a fully functional, branded application that a mayor could use end-to-end without guidance.
The challenge wasn’t to impress end users—there weren’t any yet. It was to convince non-technical decision-makers who had no experience evaluating tech products. The app had to be simple enough to understand in 30 seconds yet robust enough to answer operational questions from officials or sports directors, such as:
- How do people enter the pool?
- What prevents two people from booking the same lane simultaneously?
These were real operational questions requiring real technical answers. The project started from scratch—no brand guidelines, no design system, just a concept and a vision.
How we built the Aqualib mobile app in 2 months
Branding created from scratch and integrated directly into code
Before writing the first line of code, we built Aqualib’s complete visual identity: logo, color palette, typography, and design system—all created from scratch to reflect both the modernity of the concept and the credibility needed to convince public institutions.
The branding didn’t stop at Figma. Every visual decision was immediately translated into design tokens in the codebase:
- Primary and secondary colors exposed as TypeScript constants
- Typography integrated into a shared component system
- Unified spacing and border radii across the entire interface
The result: a 100% visually cohesive product with no improvised UI components.
Supabase architecture designed for real-time capacity management
The core of the project is the reservation engine. Behind the simple interface a mayor sees on their phone lies a backend architecture handling real operational constraints. We built the backend on Supabase, a managed PostgreSQL database with Row Level Security enabled on all sensitive tables.
Each pool exposes capacity by lane and locker room. When a user initiates a booking, availability is checked and locked in real time via Supabase Realtime. Occupied slots disappear instantly from all active users’ interfaces—no polling, no page reloads. Double-booking is structurally impossible. This isn’t a manually coded business rule; it’s a database-level uniqueness constraint reinforced by a PostgreSQL transaction guaranteeing atomicity. Even under simultaneous load, two users cannot confirm the same lane at the same time.
The architecture was designed from the start to scale without refactoring. Supabase runs on standard PostgreSQL, so if Aqualib expands nationally, the database can migrate to an enterprise-managed instance (e.g., Cloud SQL on GCP, Azure Database for PostgreSQL, or Amazon RDS) without schema or query changes. The real-time system can be swapped for Google Pub/Sub or Azure Service Bus depending on the chosen infrastructure. Since authentication relies entirely on stateless JWTs, the API is natively ready for horizontal deployment behind a load balancer, with no server-side session management required. The demo stack and production stack share the same foundations.
Dynamic QR code access secured by JWT
Upon booking confirmation, the app generates a unique QR code signed by JWT. This isn’t a simple readable ID—it’s a cryptographically signed token encoding the user’s identity, reserved time slot, assigned lane, and an expiration set exactly to the session’s start time. The QR code is valid only during the booked window, expires automatically, and is invalidated server-side after the first scan. It cannot be copied, reused, or forged without the signing key. This mechanism makes the concept operationally credible: pool entry is fully automated, with no human intervention, physical badges, or reception queues.
React Native with TypeScript in controlled internal distribution
The app is developed in React Native with strict TypeScript—no vanilla JavaScript in the codebase. TypeScript is used end-to-end, from UI components to Supabase types automatically generated from the database schema. This eliminates an entire class of runtime bugs and makes the codebase immediately readable for any developer taking over the project.
Distribution is handled via TestFlight to maintain full control over access during the institutional demonstration phase. Each decision-maker invited to test receives a targeted access—no public version, no concept leaks before the first partnerships are signed. This is both a strategic and technical decision.
Consistent state management across the booking lifecycle
A reservation progresses through multiple states: available → selected → in progress → confirmed → used → expired. Each transition is managed server-side and reflected in real time in the interface via Supabase Realtime subscriptions. Users always see the exact state of their reservation—no refreshes, no desynchronization between the UI and the database.
Results
- 2 months of development, from zero to production delivery
- Complete branding created from scratch: logo, design tokens, design system, visual identity
- Supabase architecture with real-time capacity management and structurally guaranteed zero double-booking
- JWT-signed QR code access that expires automatically at the end of the time slot
- 100% TypeScript codebase with auto-generated Supabase types
- Architecture scalable to GCP, Azure, or AWS without schema refactoring
- Internal distribution via TestFlight with controlled access during the institutional phase
Key takeaways for institutional mobile applications
A demonstration app isn’t a "lite" version—it’s often the opposite. It must be flawless because it’s judged by decision-makers who ask real operational questions. For Aqualib, we had answers to:
- How are reservation conflicts handled?
- Can the QR code be copied?
- Who can access the app?
- Will it scale to 50 pools?
At firstapp, we understood that the real "user" of Aqualib during the demo phase was the mayor sitting across from Florent Manaudou. To convince them, the app couldn’t just look good—it had to be rock-solid.