Commit Graph

3 Commits

Author SHA1 Message Date
jhodgkin 643e5afdc8 Add admin dashboard (issue #11) + admin API routes
Deploy to Dev / Deploy & Smoke Test (push) Successful in 24s
- New src/dashboard.html: vanilla JS SPA with login (bearer token),
  Overview stats, Calendar month view with color-coded dots,
  Bookings table with expandable payment block and confirm action,
  Payments panel with revenue summary and CSV export
- api/server.js: admin routes behind requireAdmin middleware:
  GET /api/admin/stats, GET /api/admin/bookings, PATCH /api/admin/bookings/:id,
  GET /api/admin/payments/export; PATCH fires payment_confirmed n8n event
- nginx.conf: /dashboard location serves dashboard.html
- api/.env.example: add ADMIN_SECRET placeholder

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-08 22:17:26 -06:00
jhodgkin 0e18f2b5b3 Add n8n webhook notifications for all booking events
Deploy to Dev / Deploy & Smoke Test (push) Successful in 24s
- Extract notify() helper (fire-and-forget, never blocks flow)
- Fire booking_created after INSERT in POST /api/bookings
- Fire contract_signed after PDF stamp in POST /api/bookings/:id/sign
- Add GET /api/bookings/:id/contract to serve signed PDFs
- New env vars: N8N_WEBHOOK_URL, PHOTOGRAPHER_EMAIL, SITE_URL

n8n workflow (LisiLou Booking Notifications, ID c2oyyQyuzMuo1kLw):
  Webhook → Code (routes by event, builds email items) → Send Email (SMTP)
  Handles: booking_created (2 emails), contract_signed, payment_confirmed

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-08 21:43:25 -06:00
jhodgkin e824be7e5d Add Node.js/Express API service for booking backend
Build and Deploy / build (push) Failing after 20s
Build and Deploy / deploy (push) Has been skipped
- New api/ service: Express + better-sqlite3, health check at GET /api/health,
  POST /api/bookings stores sessions with all required fields
- Dockerfile with Alpine build deps for native sqlite3 module
- docker-compose.yml: api service with volume mounts for data, signed-contracts, contracts
- nginx.conf: proxy /api/ to api:3001; Immich regex locations remain higher priority
- .gitignore: exclude SQLite db file and signed PDFs from version control

Closes #1

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-07 22:30:18 -06:00