Pugilist Club Niçois
Site for a historic Nice boxing club
Role
Developer - site, admin, deployment
Client
Pugilist Club Niçois, Nice
Links
The problem
A working club needed a site that brings in members, loads fast on a phone in the gym, and does not break French privacy rules - maintained by people who are not developers.
The approach
A Laravel application with a full French and English localisation layer, a consent gate that blocks third-party embeds until the visitor agrees, an enquiry pipeline that delivers contact requests to the club by email, and a session-authenticated admin view for visitor statistics. Content is file-based rather than database-backed, chosen to fit a brochure site maintained by non-technical volunteers.
Tale of the tape
Live
in production for a Nice club
FR / EN
complete bilingual localisation
GDPR
consent-gated third-party embeds
Decisions
Matching the architecture to the client
A brochure site for a volunteer-run club does not need a relational database, so content and the visitor counter are stored as files. That removed migrations, backups and a class of runtime failure from a site nobody is paid to monitor, and keeps hosting costs minimal. The same judgement led me the other way on BoxerOS and Azur Clean, where MySQL and Eloquent were the right fit.
Consent gating enforced in the markup, not just the banner
French privacy rules require consent before third-party tracking loads. Google Maps and the reviews widget are not rendered at all until the visitor accepts, rather than being loaded behind a banner that only looks compliant.
Graceful degradation for a third-party widget
The reviews widget runs on a plan with a monthly view cap and renders nothing once exceeded. The page observes the container and substitutes a static fallback if it is still empty after a few seconds, so visitors never see an empty section.
Stack
On a phone
Also on the card