addedPIXELS addedPIXELS since '14
← back to work
Case 02 Operations & platform Marple Social and Forces Club Ongoing, since 2024

We replaced
the paperwork
with the platform.

Marple Social and Forces Club ran on paper, three SaaS subscriptions, and the patience of its committee. We built one piece of software that owns the membership, the till, the events, the rota, and the AGM. Revenue tripled. Membership multiplied. The committee can take Sundays off.

Marple Social and Forces Club
£80k £250k
annual revenue
100 500+
members
3×
growth, both axes
1 platform
replaces them all
what actually happened

The numbers tripled.
So did Sundays off.

The platform isn't the headline. The headline is what it freed up. Once applications, renewals, payments, events, EPOS, the staff rota, the AGM, and the noticeboard all stopped being someone's evening job, the people running the club could actually run the club. Growth followed.

None of it required a rebrand, a marketing agency, or a six-month consulting engagement. It required someone sitting down, working out what was actually broken, and building software that fits.

revenue, before £80k
revenue, now £250k
members, before 100
members, now 500+
where we started

One club, a dozen half-working tools, and a lot of paper.

Marple is a small members' club with a long history, a busy bar, regular events, a steward, a committee, a staff rota, and the kind of weekly admin load that quietly eats Wednesday evenings.

Applications came in on paper. Renewals were tracked in a spreadsheet. EPOS sat in its own silo. Bookings went via the phone, were written on a wall calendar, and then re-typed. Events were promoted on a noticeboard. The committee minuted the AGM by hand. Nothing talked to anything else.

The brief was simple. Make all of this one piece of software, owned by the club, that the people on the committee can actually use.

what we built

One platform. Nine jobs.

Membership

The whole lifecycle, from application to renewal to retirement. NFC member cards, Apple Wallet passes, dynamic pricing, multi-tier roles.

  • Online application
  • Age & reCAPTCHA
  • NFC cards
  • Apple Wallet
  • Renewals
£

Payments

Stripe subscriptions for membership, Payment Intents for one-offs, terminal tokens behind the bar, and a clean reconciliation back to each member.

  • Stripe subs
  • Payment Intents
  • Terminal tokens
  • Webhooks
  • Receipts

Events & ticketing

Events, capacity, member vs public pricing, Stripe ticket sales, QR check-in, confirmation emails. Featured events surface on the homepage.

  • Capacity
  • Pricing tiers
  • QR check-in
  • Email confirmations

EPOS integration

Till transactions imported and matched to members. Item categorisation, member balances, transaction history. The till stops being an island.

  • Transaction import
  • Member matching
  • Balances
  • PLU items

Staff rota

Shifts, time tracking, holiday requests, payroll hours, shift swap. Week and month views that work on a phone behind the bar.

  • Rota
  • Time tracking
  • Holiday
  • Shift swaps
  • Payroll hours

Bookings & rooms

Function room. Members' lounge. Capacity, pricing, deposits, the lot. Stops the wall calendar / phone-call / re-type loop.

  • Room bookings
  • Deposits
  • Capacity
  • Pricing

Communications

Member emails (with PGP encryption where it matters), SMS via Twilio, in-app notifications with read state, audit-logged.

  • Email
  • SMS
  • Notifications
  • PGP-encrypted

AGMs & governance

Attendance, audit logging, action tracking, disciplinary cases, survey responses. The committee's paperwork, but as software.

  • AGM attendance
  • Audit log
  • Action tracking
  • Surveys

Security & auth

Passkeys, TOTP, OIDC single sign-on, role-based access. Audit trail on every sensitive action. Built to PCI-DSS and OWASP discipline throughout.

  • WebAuthn
  • TOTP
  • OIDC SSO
  • RBAC
  • Audit logs
by the numbers

What "one platform" actually looks like under the bonnet.

126
pages and routes
Members, staff, committee, public & admin views.
82
database tables
Members, payments, events, rota, AGMs, audit trail.
16
core classes
Application engine, DB, MFA, sessions, WebAuthn, more.
9
background services
Crons, queue listeners, report generators.
6+
auth methods
Password, passkey, TOTP, OIDC, WebAuthn, role-based.
269
commits in 2025 alone
Active build. Not a "delivered and forgotten" project.
8+
email types
Applications, confirmations, invoices, EPOS summaries.
spreadsheets retired
The Wednesday-night data-entry shift is no longer a thing.
how it's built

The stack, briefly.

// application

Backend

  • PHP 8 application
  • MariaDB
  • Database-backed sessions
  • RabbitMQ for async jobs
  • Cron-driven schedulers
// frontend

Interface

  • Bootstrap 5 + Tailwind utilities
  • System dark mode
  • Mobile-first staff & member portals
  • Print-friendly invoices & tickets
// services

Integrations

  • Stripe (subs, intents, terminal)
  • Twilio SMS
  • Authentik OIDC SSO
  • Apple Wallet passes
  • NFC card systems
// security

Security

  • WebAuthn passkeys
  • TOTP MFA
  • OIDC for staff
  • Role-based access control
  • PGP-encrypted sensitive mail
  • PCI-DSS & OWASP discipline throughout
// hosting

Operations

  • Docker Compose, four services
  • Nginx + PHP-FPM
  • MariaDB on dedicated node
  • RabbitMQ DLQ listener
  • Audit log on critical paths
// data

Schema

  • 82 tables, foreign-keyed
  • ~3,600 lines of schema
  • Single source of truth for member data
  • Audit log on AGM, members, payments
the bit that matters

What changed for the people?

The numbers are nice, but they're a downstream effect. The work was about giving the people who actually run the club back their evenings. Here's what stopped happening:

  • Wednesday-night data entry
  • Renewal chase-up phone calls
  • "Did anyone book that room?"
  • Lost paper applications
  • Reconciling the till by hand
  • AGM minutes typed twice
  • Staff messaging each other to swap shifts
  • Renewal reminders, manually

And here's what started happening: events sold out, the membership grew, the bar got busier, and the committee started using the words "this year" and "next year" instead of "this week". That's the actual case study. The platform's just how we got there.

Got a similar mess? Tell us → See another case study
If you've got something awkward to build…

Drop us a line.

We answer our own email. No funnel, no account-manager, no discovery-call to book a discovery-call.

[email protected]

Reach us

Other places