924bf487ed4b6a1b35a65bc7e13e5c4aa84c0575
Split Crussell Nails.md (822 lines) into 5 focused documents: - README.md: slimmed to 84 lines (elevator pitch + run instructions) - Overview.md: expanded landing page with architecture diagram and quick links - User Manual.md: 358 lines, customer-facing journeys in plain English - Admin Manual.md: 493 lines, staff operations guide with zero technical jargon - Technical Manual.md: 736 lines, full API reference, schema, key systems All user/admin manuals rewritten for non-technical audiences — no API endpoints, component names, or implementation details.
Crussell
Nail salon booking platform — Go 1.25 backend + SvelteKit 5 frontend + Docker. Built for a UK sole-trader nail artist.
Features
- Three booking flows: self-service (customer), walk-in (admin), call-in (admin)
- Slot reservations: temporary holds prevent double-booking (4 TTL types)
- Guest accounts: disposable accounts for one-off bookings, GDPR-compliant anonymization
- Service eligibility: age requirements + patch test validation
- Deposit system: 3-strike rule for late cancellations, 24-hour threshold
- Scheduling: default hours, holiday overrides, time blockers
- Loyalty & discounts: stamp-based loyalty, time-based and milestone campaigns
- Portfolio gallery: S3/R2 storage with tag/category filtering
- CardDAV sync: profile photos synced to SabreDAV contacts
Project Structure
Crussell/
├─ backend/ # Go 1.25 + chi router API
├─ frontend/ # SvelteKit 5 SPA (static build)
├─ sabredav/ # PHP + Composer for DAV
├─ nginx/ # Nginx reverse-proxy for HTTP & HTTPS
├─ init-scripts/ # PostgreSQL init SQL
├─ compose.yml # Docker-Compose definition
├─ local-dev-2.sh # Dev helper using tmux (seeds DB with test data)
└─ README.md
Prerequisites
| Tool | Version |
|---|---|
| Docker & Docker Compose | >= 20.10 |
| Go | >= 1.22 |
| Node | >= 18 (npm) |
| tmux | >= 3.0 |
Getting Started
Docker Compose
cp .env.example .env
# Edit .env — set POSTGRES_*, JWT_SECRET_KEY
docker compose up --build -d
| Service | URL |
|---|---|
| Frontend | http://localhost |
| API | http://localhost/api |
| SabreDAV | http://localhost/dav |
Local Development
chmod +x local-dev-2.sh
./local-dev-2.sh
Launches a tmux session (crussell-dev) with 4 panes: psql console, Go dev server, Svelte dev server, and Rustfs logs. Seeds the database with 20 users, 12 services, 43 bookings, guest accounts, time blockers, and exceptional hours.
Default login (all password: password):
- Admin:
admin@example.com - User:
user@example.com
Building & Testing
# Backend
cd backend && go build -o bin/backend ./main.go
# Frontend
cd frontend && npm ci && npm run build
# Tests (306/308 passing)
cd backend && go test -tags test ./...
Full Documentation
For detailed user journeys, admin workflows, architecture, API reference, and database schema, see obsidian/Crussell/.
Languages
Go
64.6%
JavaScript
16.5%
Svelte
14.8%
TypeScript
1.9%
PLpgSQL
1.2%
Other
0.9%