
First we studied the company. Then we wrote the software.
A club with a long-standing back office on a Windows server, and no other digital tool. The case that best shows the method: the priority wasn’t choosing software, it was understanding how the club really works.
The challenge
Communication over WhatsApp and the phone, credits and renewals tracked from memory, complaints that left no trace. The back office existed, but its data stayed locked in an on-site SQL Server database.
The approach
A real audit before any code. Then a website and CRM designed on that map, and the back office connected as it is: a script on the server itself reads SQL Server with a read-only user and sends the data to the CRM. No VPN, no change of back office.
Live
Real screens.
The website, the app and the tools as customers and staff use them today. Tap a screen to enlarge it.
The data was already there.
It just needed connecting.
Behind the login
Ronchiverdi Sport Club
What you only see from inside — the CRM, the member app — rebuilt and animated with anonymised sample data.
Memberships and revenue
Trends read from the back office: active by area, new and renewed against lapsed, revenue month by month. Management sees where a member is lost before it becomes a problem.
Monthly revenue (€)
Active memberships by type
- Club42%
- Gym & Swim25%
- Tennis19%
- Young School14%
Latest payments
- BB. familyClub renewal€1,250.00
No deal is left without an owner
A request arrives from the website and nobody takes it? The CRM says so right away, to every salesperson. One tap and the deal has an owner.
From back office to CRM, no VPN
A scheduled script on the club’s server reads the back-office database read-only and sends only what’s new. It can be re-run any time: it never creates duplicates.
0 sales synced
Today’s tasks
Everyone’s on-site and phone appointments, but only your own to-dos. Every task is closed on the spot: done, rescheduled, cancelled.
Membership trends
New and lapsed, month by month, read from the back office. Management sees where customers are lost before it becomes a problem.
What we built
- 01Website with enquiries and appointment booking, with automatic reminders
- 02Sales CRM: deals, shared calendar, today’s tasks
- 03Real-time alert when nobody has taken a deal
- 04Idempotent sync from the back office (SQL Server on Windows)
- 05Memberships: active, expiring, renewals, trends; access and revenue
- 06Medical check vouchers and automatic federation memberships
- 07Time clock, internal messages with read receipts and push notifications
- 08Installable as an app on phones and tablets
Technology
How it’s built
Under the hood.
A static website with an editor for the office, a Next.js CRM and a bridge to the back office that runs inside the club, on its Windows server. No existing tool was replaced: it was connected.
The architecture, layer by layer
The pieces, one by one
Astro + TinaCMS
The website
Static site: ready HTML, light CSS, content in Markdown files the office edits from a visual editor without touching code. Every change is saved in the project history.
Next.js
The CRM
Pages assembled on the server with the data ready. It installs on phones and tablets like an app, with its own icon and push notifications.
PowerShell + SQL Server
The bridge to the back office
A script scheduled with Windows Task Scheduler, on the back office’s own server. It reads with a read-only SQL user and sends what’s new to Supabase over outbound HTTPS only: no VPN, no open ports. Re-run it and it creates no duplicates.
Supabase · Postgres
One customer record
Website requests, deals and back-office sales all attach to the same person. The schema lives in 123 versioned SQL scripts.
Automation
What happens on its own
Appointment reminders every 5 minutes, an evening management report, federation memberships and medical-check vouchers generated without anyone stepping in.
In numbers
