Case study · Four-Day Work Week Golf Society
A whole golf season in one app.
4DWW is a private golf society at Royal Harare Golf Club with a simple philosophy: work hard Monday to Thursday, play Friday morning, keep the weekend for family. Its members needed one place for fixtures, four-balls, scoring, standings and prize money. We built it, and shipped it to both app stores.




The problem
A society of around fifty members played every Friday, but the admin lived in WhatsApp threads and spreadsheets. Who's in this week? Who's playing with whom? What did everyone score, and where does that leave the ten season trophies? Someone spent their Friday evening typing paper scorecards into a sheet, and the standings were always a week behind.
The society also wanted to look the part: a premium app that prospective members could see from the public site, with membership applications and approval built in.
The approach
We built it as a single web app that installs on iOS and Android, so there's one codebase to maintain and updates reach everyone at once. The scoring engine came first, because everything else depends on points being right: Stableford with handicap strokes allocated by stroke index, verified against real scorecards.
Then we worked outward through the Friday: RSVP, four-ball assignment, score entry on the course, results, and the trophies that roll up from them.
What we built
A members-only app behind a public front page, with an admin area for the people who run the society.
Friday, handled
The admin creates the game: date, course, format, pot. Members RSVP from their phone. On the morning, confirmed players are placed into four-balls, manually or with one tap to shuffle, and each member sees their group and handicaps on the home screen.
- Game flow from upcoming to open to locked to complete
- Courses with stroke indexes: Royal Harare, Wingate and Borrowdale Brooke
- Broadcast notes from the admin pinned to every member's home screen
- Push notifications for game day and results

Scoring that works where there's no signal
One player in each group enters gross scores for everyone, hole by hole, with the Stableford points, net score and Birdie or Bogey label calculated live. Royal Harare's back nine has patchy coverage, so scores are saved on the phone and sync the moment a connection returns. The app shows its online state throughout the round.
- All four players on one screen per hole, plus and minus input
- Handicap strokes allocated automatically by stroke index
- Results and the full scorecard available the moment the round is submitted

Scored on paper? Scan the card.
Some groups still prefer a pencil. So the app accepts a photo of the paper scorecard: a vision model reads each player's gross scores per hole, cross-checks them against the written totals, matches the columns to members, and fills in the normal review screen with any uncertain cells flagged. It never submits on its own, and the points are always computed by the same engine as a typed round.
- Costs a fraction of a cent per card on the chosen model, with a fallback provider switchable by configuration
- Uncertain readings are highlighted for a human to confirm

Ten trophies, always up to date
Every submitted round feeds the season standings instantly: Individual Stableford, the Pairs Trophy on best seven of ten better-ball rounds, four Teams, a Match Play knockout bracket, the Participation Cup, the Financial Cup for prize money won, and the tour equivalents. Tap any player for their game-by-game breakdown. Members who lead a trophy see it on their results page.
- Profile with full score history, season comparison and prizes won
- Past seasons preserved for the honours board
- Media gallery for photos from the day, stored on Cloudflare R2

Getting into the stores
Building the app was half the job. Getting a private members' app through Apple's review took four submissions over two months, and every rejection taught us something we now apply to every launch.
- Universal layoutApple rejected iPhone-only twice; shipping iPhone and iPad together is what passed
- Support that loads logged outA dedicated support page with contact details and FAQ, linked from the store listing
- Account deletion in-appRequired by both stores for any app with sign-in
- Biometric sign-inFingerprint and Face ID for a quick, secure return to the app
Private, but discoverable
The public site and store listings explain the society and let prospective members apply. New applications wait for an administrator's approval before anything behind the login is visible.
Hardened before launch
A code-quality and security audit before release tightened session expiry, upgraded password hashing with transparent migration for existing members, and added an audit log and indexes ahead of growth.
How it's built and run
One codebase, deployed to the web, the App Store and Google Play, with a serverless backend that costs almost nothing for a society this size.
- React + Vite PWAInstallable web app wrapped with Capacitor for the native stores
- Cloudflare WorkersAPI and scoring engine at the edge, with unit tests on the scoring rules
- D1 + R2Relational data and photo storage, no servers to run
- Web PushGame day and results notifications on every platform
Clubs and societies
Run your club from one app.
Fixtures, bookings, scoring, standings, members. If your committee is running it on WhatsApp and spreadsheets, we can do better.