Service Portal
Service Portal — Current Dev (Castle Checkers)
Last updated: 2026-07-12
Live at castlecheckers.sonandigital.com
Worker and Pages deployed. All migrations applied. Latest commit b2767bf pending push — also update DB color via wrangler after pushing (see Pending Actions).
Build Status
| Feature | Status |
|---|---|
| Worker API (auth, CRUD, config) | ✅ Complete + deployed |
| Migrations 0001–0006 (schema, seed, flight fields, blocked days) | ✅ Applied to remote DB |
| Public site (config-driven) | ✅ Complete |
| Customer service request wizard | ✅ Complete — submits to API |
| Admin login (real PBKDF2 auth) | ✅ Complete |
| Employee login portal (phone + PIN) | ✅ Complete — "Employee" button in public nav |
| Dashboard | ✅ Complete — live data from API |
| Requests inbox + inline edit + convert + delete | ✅ Complete |
| Clients CRUD + mobile overlay modal + secure notes | ✅ Complete |
| Appointments CRUD + flight fields + auto-switch | ✅ Complete |
| Calendar with add/edit/delete | ✅ Complete |
| Invoices with line items + print + delete (Draft/Sent only) | ✅ Complete |
| Blocked days management | ✅ Complete (API + AppContext) |
| Reports + revenue chart | ✅ Complete |
| Settings (all fields + password change) | ✅ Complete |
| Responsive mobile layout | ✅ Complete — incl. contact strip, req-edit form, mobile client modal |
| Navy + Gold theme (#1a3050 primary) | ✅ Complete — CSS + code fallbacks updated; DB color pending (see below) |
| Worker deployed to Cloudflare | ✅ Live — castlecheckers-api.sonandigital.com |
| Cloudflare Pages project + custom domain | ✅ Live — castlecheckers.sonandigital.com |
Pending Actions
cd "E:\Claude_Projects\sonan-trackers\caretaker-portal-Claude\caretaker-portal"
# 1. Push latest commit (Employee login button + color fallback fixes)
git push origin b2767bfbfca5631fcd1370de3c79b701b41c55a6:refs/heads/main
# 2. After push, sync disk files with git HEAD
git checkout HEAD -- src/App.tsx src/components/PublicSite.tsx src/components/AdminApp.tsx src/components/EmployeeApp.tsx
# 3. Update DB primary_color to navy (sidebar is driven by DB value, not CSS)
npx wrangler d1 execute caretaker_db --env castlecheckers --remote --command "INSERT OR REPLACE INTO settings (key, value) VALUES ('primary_color', '#1a3050')"
# 4. Redeploy Worker only if worker/index.ts changed — otherwise skip
npx wrangler deploy --env castlecheckers
DB Color Note
The admin sidebar color is driven by the primary_color key in the settings table — NOT by CSS variables. Without step 3 above, the sidebar will remain green even after deployment.
Known Gaps / Future Work
| Item | Priority | Notes |
|---|---|---|
| Send message / send email to client | Medium | Button exists in UI — backend integration not yet built. Resend for email, SMS TBD. |
| Email notification on new request | Medium | Resend integration in Worker; send on POST /api/requests. Add RESEND_API_KEY as Worker secret. |
| Customer portal (view their own requests) | Low | Would need separate auth flow for clients |
| Photo/document attachments | Low | Cloudflare R2 for storage |
| Recurring appointments | Medium | Requires cron trigger + appointments schema change for recurrence pattern |
| Invoice PDF (server-side) | Low | Current: browser print. Server PDF would require a separate service (puppeteer/wkhtmltopdf). |