Client

Pilat'1: the association's website and app

A Pilates association's public website, its back office and the coaches' mobile app.

Role
Solo design and development
Period
Oct 2026 – ongoing · Association Pilat'1
Stack
  • PHP
  • Symfony 8
  • EasyAdmin 5
  • Tailwind CSS
  • PostgreSQL
  • HelloAsso API
  • PWA
  • Web Push
  • ClamAV
  • FrankenPHP
  • PHPUnit

Context

A Pilates association managed its registrations, cheques and attendance lists on paper and in spreadsheets. It needed a website to present itself and receive trial requests, and a simple tool for the board and the coaches.

What I built

For the public

  • A website with the class slots, computed remaining places (then "Full, waiting list"), trial-class requests and registration.
  • Online payment through HelloAsso, in one or three instalments, linked straight to the membership. Or cheque, transfer, cash.

For the board

  • Season dashboard: members and places, fees received and outstanding, cheques to cash, documents to collect, trial requests to handle.
  • From trial request to registration in one click, balance reminders by e-mail, PDF certificates for works councils or health insurers, CSV export.
  • A season calendar that removes public and school holidays (official open data).

For coaches: an installable app (PWA)

  • Class attendance from the phone, adding a walk-in.
  • Messages to students, opt-in push notifications, coach invoices.
  • A coach only sees their slots and their students.

Technical points

  • Three nested roles (coach, board, admin) and fine-grained per-action rights.
  • Security: CSRF tokens on every action, antivirus-scanned uploads, signature stored outside the public site, bank details never published.
  • Data minimisation: no health data collected, only "certificate received" or not.
  • Measured performance: I wrote an audit command that crawls every back-office page with each role and reports the number of SQL queries, the most repeated query (to spot an N+1 whatever the data volume), page weight and estimated load time on 4G and 5G.
  • Automated deployment: database and secrets created on first deploy, migrations on every release.

← Back to the portfolio