Civik
A civic app connecting town halls, citizens and local associations, on iOS and Android.

The brief
A town hall publishes volunteer missions. A citizen applies, scans a QR code on site, and earns euros in a wallet, hours and badges. The wallet goes to the local associations the citizen chooses. Civik is the app, the town hall dashboard and the backend behind it.
The challenge
- Three publics, one base. Citizens on the app, town halls on a web dashboard, support on an admin console, with every citizen attached to a town hall that validates the sign-up.
- Minors and public data. Fifteen years minimum, parental authorisation by email before a town hall can accept a minor, versioned terms, account deletion, a ten-year archive.
- Public money, no online payment. Town hall budgets, rewards per slot or per period, caps per association and a period close, all enforced in the database.
The product







What we built
Design
The citizen app takes the colours of its town hall, checked for contrast. Missions on a map, a wallet, badges and a numbered certificate at 100 hours.
Mobile app
One Expo code base for iOS and Android: missions with slots or periods, QR attendance, polls, donations, messaging with the town hall, push notifications.
Back-office & backend
A Next.js dashboard for the town hall and the admin console, Supabase with row-level security, twelve edge functions, reminders by cron.
Before a project like this
Can one app serve citizens and a town hall?
Yes. Civik has three roles on one base: citizens on the mobile app, town halls on a web dashboard, support on an admin console. The town hall validates every sign-up.
How do you handle minors and personal data?
Fifteen years minimum, parental authorisation by email, versioned terms the user accepts in the app, account deletion, and row-level security on every table.
iOS and Android from one code base?
Yes. Civik is built with Expo: one code base, two stores, builds and submissions through EAS.
More work

