Jul – Oct 2026 · Live at yourspace.co.id · Private repository
YourSpace
A single-provider booking platform for a mental health practice in the Indonesian market. Customers book services and events; the practice runs everything from an admin panel.
- 156commits between 14 July and 17 October 2026
- 3parts: backend, marketing site, docs
- 56database migrations, each with an up and a down
- 21features specified as PRDs before building
What is in it
- Public booking flow with a service catalog, per-service staff mapping and ordering, business hours with multiple ranges, and blocked dates
- Admin panel with staff roles and permissions
- Events with registration modes, custom fields, public and private visibility, check-in and staff commission
- Payment links and payment methods
- Vouchers and commissions with payout tracking
- A finance ledger with audit logs
- WhatsApp message templates with automatic sending, and web push notifications
- Reschedule links for customers and direct rescheduling by the admin
- Customer list with filters and export
- First-party analytics: visitor attribution and a booking funnel from landing page to confirmed booking
- Installable PWA branding and local-time display for visitors
The parts
| Part | Stack | What it does |
|---|---|---|
booking-app | Go, Chi, Templ, sqlx, PostgreSQL | The main backend: public booking flow, admin panel, event booking and check-in, payment links, and the public content API. About 310 Go files, 55 test files and 56 database migrations. |
landing-page | Next.js 15, React 19, Tailwind 4 | The marketing site. It renders content the practice authors in the admin panel, fetched from the backend and revalidated every minute, so there is no separate CMS. |
docs and local | Markdown, Traefik | 42 documents in 21 dated feature folders, each with a PRD and task list. A Traefik setup mirrors production subdomain routing for local development. |
How the backend is organised
Every feature follows one layering: entity, use case, repository, controller. Each use case lives in its own package with a narrow interface for only the repository methods it calls, controllers depend on use-case interfaces and never on repositories, and all dependency wiring happens in a single file. Validation errors accumulate per form field, every error path is logged, and tests use hand-written fakes beside the code.
Features are written up first: each dated folder under docs/ holds a PRD with the problem, scope and decisions, and a task list.
In use
- 375bookings created since mid-July: 126 appointments and 249 event registrations, cancellations included
- 88appointments completed
- 17events scheduled, from 24 July to 8 November
- 85event check-ins
- 17k+first-party analytics events recorded across the booking funnel