← All projectsCase study, combat sports club

SSK Fighting

A Muay Thai and MMA club that signs people up, collects payments and takes attendance with three connected tools.

Visit the club's website →
The SSK Fighting app's App Store visuals
The app on the App Store and Google Play, with demo accounts.

Before

Eight groups, from children to adults, about ten coaches and three volunteer managers who all have a job on the side. Sign-up was a paper form signed by hand and kept in a binder.

  • A membership is paid by card, cash, cheques or with aid vouchers, often in several instalments. Six cheques for a single sign-up meant tracking it all year.
  • Some cheques were made out wrongly and the bank refused them.
  • Four public aid schemes, each with its own amount, proof and stacking rules. A voucher was sometimes shown only as a photo on a phone.
  • Chasing people happened in person, at the edge of the mat. Year-end accounts were rebuilt from bank statements.
  • Attendance was taken on paper lists. The figures the city asks for the grant were recounted by hand every year.

What was built

Three tools on a single database. The club's rules were written once, then reused everywhere.

For families

The website and shop

Six-step sign-up, online trial class, payment and aid vouchers, then the club shop.

For members, parents and coaches

The iOS and Android app

Schedule, class booking, membership and instalments, aid status, documents, shop. Coaches take attendance and report an incident from it.

For the managers

The back office

Members, validation of payments and aid vouchers, cheques to deposit, reminders, refunds, shop and stock, a PDF payments report. The club sets its own payment methods, instalments and discounts.

  • The balance still to collect counts validated aid, never aid that is only declared.
  • Refusing a voucher requires a reason, and the family reads that reason in their app.
  • An amount handed over for several children is split across their instalments in one go.
  • The coach sees who is not up to date, never how much.

What changed

Registration opened at the end of August, directly online.

  • Families register and pay from the site or the app, in one or several instalments, by card, cheque, cash or with an aid voucher.
  • Documents arrive online, no more chasing paperwork.
  • Trial sessions, session bookings and absences go through the app.
  • Coaches take attendance on their phone, right by the mat.
  • The office knows who paid what without going through bank statements, and pulls the figures the town hall asks for in one click.

What broke in production, and why

A tool this size does not ship right the first time. Here are six mistakes found after launch, with their cause. None came from a lack of testing on paper. They came from what real families really do.

  1. The "Log in" link led to the sign-up form

    People asked for a code, then asked again within the minute. One person logged in three times in fourteen minutes without ever reaching their account.

    The link pointed to the wrong form. Nobody reported it, I saw it while reading the login logs.

  2. 14 to 17 year olds gave up halfway

    Teenagers who wanted to sign up on their own did not finish.

    The app assumed a teenager has no email address. That was my mistake, fixed the day I saw it.

  3. Accounts created, no sign-up

    In one week, many accounts were created without a single registration being started.

    These people were undecided, and the page only offered a year-long commitment. I added the trial class next to it, then an email after the trial. People signed up by clicking that email.

  4. A cash refund left no trace

    The money left the cash box and the instalment stayed marked as paid.

    The refund was recorded nowhere. It is now logged, and the amount collected at the desk is calculated instead of typed.

  5. Signed up by default, or "I'm coming"

    I had chosen to sign people up to classes by default, because I knew they would not do it themselves. The club wanted the opposite. We did it, almost nobody clicked.

    Family behaviour cannot be guessed. We went back to the list for children, and the choice was made on numbers.

  6. The app was too rigid for real money

    A partial cash payment, an amount rounded above what was asked, three cheques handed over at once, a voucher worth a different amount than planned.

    I had coded money the way it should work. I added instalment postponement, exceptional rates, overpayment and discounts applied afterwards.

The stack

Next.js for the site and back-office, React Native with Expo for the iOS and Android app, Supabase for the database and server functions, Stripe for card payments and refunds. Frequent releases, many of them after launch, while the club was using it.

SSK Fighting, a combat sports club with no paperwork or chasing | Marcelin Bedy