A class spot when it opens

I built op-bot for One Playground classes in Sydney. It runs in Telegram as @oneplayground_bot. This is an independent project, with no affiliation with One Playground.

Browse, wait or book

Browse the next seven days of classes by morning or afternoon, with spots left. When a class is full, choose auto-booking for the first seat that frees, or notify-only mode with a one-tap Book button. A “book when it opens” rule fires 72 hours before class. Weekly standing rules ask first.

Keep track of the booking

My classes lists upcoming bookings; favourites keep regular choices close. Reminders arrive before class and before the free-cancel deadline. Every booking message includes a Cancel button.

Individual logins

Each person uses their own private login. The password message is deleted on arrival, and the password is used only to log in, as in the official app.

How it is built

Node.js and strict TypeScript, with no third-party dependencies: node:sqlite stores the data and the platform’s own fetch makes the requests. It runs around the clock in Docker on a home NAS.

The hard part is the scheduling, and 311 tests cover it: timing that survives daylight-saving changes, retries with backoff, guards against double booking, and outage alerts that always send the all-clear and never repeat. Part-way through, the venue moved to a new booking platform, so I rebuilt the integration behind a single seam and the rest of the bot did not change. The code stays private because it talks to a third-party service.

Stack

  • Node.js
  • TypeScript
  • Telegram Bot API
  • SQLite
  • Docker
All projects (28)
  • Introsection
  • Worksection
  • Open sourcesection
  • Tools and experimentssection
  • Aboutsection
  • Writingsection
  • Activitysection
  • Shipping logsection
  • Nowsection
  • Contactsection
  • Maytes case studypage
  • Suby case studypage
  • Metronomeproject
  • Roomproject
  • Honqproject
  • op-botproject
  • StandupBotproject
  • SLEKE.project
  • ePlatform Digital Librariesproject
  • Wallaby VPNproject
  • Kimplifyproject
  • KPaymentproject
  • Lingvoproject
  • PopMeterproject
  • AutoRedemptionproject
  • Mercuryproject
  • Smart Foodproject
  • Fishing Notesproject
  • Gus-Karasproject
  • Biofeedbackproject
  • One Playground app conceptproject
  • Barloproject
  • RoadConditionsproject
  • Scheduleproject
  • Lumiproject
  • KMPaceproject
  • FreeDroidproject
  • Android Drawable Previewproject
  • Nowpage
  • Usespage
  • Notespage
  • Résumépage
  • Email Konstantincontact
  • Keyboard shortcuts?
  • Switch themeT
  • GitHublink
  • LinkedInlink
  • subyapp.comlink

↑ ↓ to move · Enter to openEsc to close

Keyboard shortcuts

G then H
Go to top
G then P
Go to Products
G then C
Go to Activity
G then N
Go to Now in Sydney
G then M
Go to Contact
T
Switch theme
Esc / Home
Return globe to Sydney, while focused
⌘K / Ctrl+K or /
Search
?
Show keyboard shortcuts

Shortcuts pause while you type or use a dialog.