This gym customer had thousands of active members, and offered class bookings blocked four termss a year. Spaces were limited and inevitably there was a rush at the bottleneck when term started. Staff were under a lot of pressure at those times.
The administration was via an ageing but very competent VB application. I helped create a publicly available web interface to allow customers to make their own bookings. Usually PHP talks to MySql by a little research let me work our the connection to MsSQL via Dlls and some PHP.INI configuration, which proved 100% reliable.
Our application had to offer the expected benefits to match the manual sign-up process: by identifying yourself, you could get a discount if you already had a sibling enrolled. And if your previous attendance had been sufficiently successful, you would be offered the course at the next attainment level, which was specially practical for swimming classes.
We had a couple of curve-balls along the way: it was an "afterthought" that we had to take online payments, which we actioned via PayChoice and this proved to be easy and problem-free. Also, a firewall was added by the network team without any warning, at the busiest time on the live system. This accidentally and secretly anonymised all the sessions. This entailed a fair amount of head-scratching and not a few annoyed customers, until we got it solved.
After that, each term became somewhat easier and took many hundred of transactions awy from the burden on the front desk.