Why
In 2013 I joined the board of my tennis club. The job came with a membership list in three places, a court-booking sheet on paper, a website nobody could update, and a national federation that wanted our data in a format we could not produce. I had spent a decade architecting SharePoint and .NET platforms for other people’s organisations. I wanted to find out what I actually knew by building one, end to end, with no colleagues to hand the hard parts to.
What it became
A platform, not a website. Private cloud on Hyper-V with every component virtualised and highly available: firewall, mail, SharePoint, databases, all on one Windows cluster, so any part could be maintained or scaled without taking the club offline.
On top of that:
- Membership administration with a single source of truth, kept in sync both ways with the national tennis federation’s Dynamics environment through a SharePoint service application.
- Court booking on a 22-inch touchscreen kiosk in the clubhouse, running a sideloaded Windows app in kiosk mode from a custom enterprise app store, and the same booking in a cross-platform mobile app.
- A members’ area for personal data, membership changes, payments and performance profile.
- Public websites as host-named site collections, built with HTML5, Angular, Polymer and REST only, so design changes needed no deep programming knowledge.
- Mail and security through a full integration between SharePoint and Zimbra for mail, membership, roles, SAML and profiles, with members anonymised so communication could only run through the platform.
Along the way I published an open AngularJS module that wrapped SharePoint’s REST APIs, so anyone building the same kind of thing could skip the part that took me longest.
What it taught me
Three lessons I still use.
Integration is the product. Nobody at the club cared about SharePoint. They cared that when a member joined, the federation knew, the mailing list knew, the kiosk knew, and the invoice went out. The value was entirely in the seams.
A platform you run yourself teaches you what every vendor is hiding. High availability, backups, certificates, patching, a mail server that stays off blocklists: once you have done all of it alone at eleven at night, you read every architecture diagram differently.
Build it to understand it. This is where that principle comes from. A decade later I applied it to AI governance, for the same reason: I did not trust an architecture I had not tried to break.
Status
Ran in production at the club for several years and was handed over. Technology of its time; the code is public on GitHub as a record, not as a recommendation.