← All projects
Ronchiverdi Sport ClubSport club · swimming, tennis, padel, fitness

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.

0VPNs or back-office changes
1Record per person, from website to back office
LiveAlert on unassigned deals
R/ORead-only database access

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.

01

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.

crm.club.it/memberships/trendsSample data
Active memberships0▲ +6%
Collected this month€ 0▲ +8%
Expiring (30 days)0
Renewed0%

Monthly revenue (€)

DecJanFebMarAprMayJunJulAugSepOctNov

Active memberships by type

0active
  • Club42%
  • Gym & Swim25%
  • Tennis19%
  • Young School14%
NewRenewedLapsed
Dec
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov

Latest payments

  • B
    B. familyClub renewal
    €1,250.00
02

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.

crm.club.it/dashboardSample data
4 · No deal is left without an owner
Family enquiryWebsite · for 3:00
Adult tennisPhone · for 5:17
Young SchoolEmail · for 7:34
Club membershipWhatsApp · for 9:51
03

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.

01SQL ServerOn-site Windows server
02Scheduled scriptRead-only
03Cloud databaseOne customer record
04CRMMemberships & renewals

0 sales synced

04

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.

crm.club.it/agendaSample data
09:30
Club visitB. family · from website
On site✓ Reminder sent
11:00
Call backTennis renewal · R. M.
Phone✓ Reminder sent
15:00
Padel trialG. L. + 3 friends
On site✓ Reminder sent
17:30
Young SchoolSign-up · 2 kids
On site✓ Reminder sent
05

Membership trends

New and lapsed, month by month, read from the back office. Management sees where customers are lost before it becomes a problem.

crm.club.it/abbonamenti/andamentoSample data
Active today0▲ +6%
Expiring (30 days)0
Renewed0%
NewLapsed
Nov
Dec
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct

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

AstroTinaCMSNext.jsSupabaseSQL ServerPowerShellWeb Push

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

01
Interfaces
Website · Astro + TinaCMSCRM · Next.js + ReactInstallable app (PWA)Push notifications
02
Logic
API routes + Vercel CronEdge Functions · memberships, vouchers, emailPowerShell script on the server
03
Data
Postgres on SupabaseSingle customer recordMemberships from the back office
04
External systems
Back-office SQL ServerEmailSports federation memberships

The pieces, one by one

01

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.

02

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.

03

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.

04

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.

05

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

0Open ports on the club’s server
R/ORead-only SQL user
5 minReminder cycle
123Versioned SQL scripts