My role
I worked alone on this project as a freelance software engineer and designer. I started in 2025 for the French market. That meant building the app around French rules for carpooling.
I also created the whole identity:
- UX/UI design
- Logo
- Colors
- Brand
The client was happy with the result. In mid-2026 they came back with a second mission:
- Change the design of the app.
- Make the app work on the Spanish market.
- Follow the Spanish regulations.
I handled the product work end to end, from the first version to the new one: design, code and compliance.
Stack
- Mobile app: Flutter (Dart) with BLoC for state. Google Maps, geolocation and geofencing for trips. Stripe for payments. Firebase, OneSignal for push notifications, and Sentry for error tracking. Sign in with Apple and Google.
- Backend: Node.js 22 with Express 5. PostgreSQL through TypeORM. Redis and Socket.IO for real-time features. Stripe, Twilio (SMS) and SendGrid (email). Swagger for the API docs, Prometheus metrics, and Vitest for tests.
- Back office: React 18 with Refine and Material UI, in TypeScript.
What I did
- 2025: French market. Designed and built the first version, with its brand, to fit French carpooling regulation.
- Mid-2026: redesign. Redesigned the app at the client's request.
- Mid-2026: Spain. Adapted the app to work in Spain and to follow Spanish rules.
Why it matters
A second mission from the same client is the best sign I can give. The first version did its job, so they trusted me with the next step.
Result
The client was satisfied with the first version and asked me to continue.