You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Dropdown / radio buttons with options (Label|duration|price)
Option value
multi-select
Checkbox group with options (Label|duration|price)
Comma-separated values
date, time, datetime-local
Date/time pickers
ISO string
color
Color picker
Hex code
range
Slider
Number
file
File upload to MinIO
JSON {"url","w","h"}
checkbox
Toggle
true / false
address
Autocomplete (LocationIQ/Nominatim)
JSON {"street","city","postcode","country"}
video
YouTube/Dailymotion/Vimeo URL
URL string
hidden
Not visible to user
String
Makefile Commands
make help # Show all commands
make up # Start all services (Docker + MinIO)
make down # Stop all services (Docker + MinIO)
make build # Rebuild Docker images
make logs # View all logs
make seed # Basic seed (admin + 3 resources)
make seed-demo # Rich demo seed (6 resources, 25 bookings)
make reset-demo # Full reset + both seeds
make db-shell # PostgreSQL shell
make dev # Local dev (API + Frontend)
make install # Install dependencies
make test # Run API tests
make fresh # Full reset like a fresh clone (stop + clean + rebuild + MinIO + seed)
make clean # Remove Docker volumes
make clean-all # Remove everything (images, volumes, node_modules)
make mail # Open Mailpit in browser
Environment Variables
API (api/.env)
API_PORT=3000JWT_SECRET=change-me-to-a-random-stringDB_HOST=localhostDB_PORT=5433DB_NAME=bookingDB_USER=bookingDB_PASS=booking123SMTP_HOST=localhostSMTP_PORT=1025SMTP_FROM=noreply@booking.localADMIN_EMAIL=admin@booking.localBASE_URL=http://localhost:5173LOCATIONIQ_KEY=# Optional, uses Nominatim if emptyMINIO_HOST=localhost# MinIO connectionMINIO_PORT=9000MINIO_ACCESS_KEY=hotelbotMINIO_SECRET_KEY=hotelbot_secretMINIO_BUCKET=booking-uploadsMINIO_PUBLIC_HOST=http://localhost:9000
Frontend (frontend/.env)
VITE_API_URL=# Defaults to /api (proxied by Vite/nginx)