| Item | Value |
|---|---|
| Live Site | xyzaquarium.sonandigital.com |
| API Endpoint | xyzaquarium-api.sonandigital.com |
| Repository | sonantechai/aquarium-portal |
| Local Path | E:\Claude_Projects\sonan-trackersquarium-portal\ |
| Database | Cloudflare D1 — aquarium_db |
| Stack | React 18 + TypeScript (Vite 5) · Cloudflare Worker · D1 |
| Status | Live — July 2026 |
What It Does
Public site — Customers visit the landing page to learn about services, see the business logo and contact details, and submit a quote request. The estimate form collects name, email, phone, preferred service type, and message. All content (business name, services, contact info, logo) is pulled live from Settings — no code changes needed to rebrand.
Admin portal — The business owner logs in with a password to access a full management suite: scheduling aquarium cleaning jobs, managing client records, tracking team members with PIN-secured logins, generating PDF estimates and invoices with the business logo, viewing revenue reports, and configuring business settings — all from one URL.
Team Login — Employees log in with their phone number and a 4-digit PIN to see their assigned jobs, update statuses in real time, and change their own PIN. Access is scoped to job lists only — no financial data visible.
Portal Modules
| Module | What It Does |
|---|---|
| 📊 Dashboard | Live snapshot — total jobs, clients, paid revenue, pending estimates, new requests, today's job count |
| 🐠 Jobs | Schedule jobs with client, service type, date/time, recurrence, employee assignment, and price |
| 📅 Calendar | Month-view calendar with color-coded job chips; compact dot view on mobile; click any date to add a job |
| 👥 Clients | Client directory with contact details, history tabs (jobs, requests, estimates, invoices), and one-click navigation to any linked record |
| 👷 Employees | Team roster with admin PIN management; PIN-secured Team Login for field staff |
| 📋 Estimates | Branded PDF quotes with logo, print/email/share delivery, and status tracking |
| 💰 Invoices | Branded PDF invoices with paid-lock guard, mark-paid workflow, and revenue summary |
| 🗹 Service Requests | Inbound quote requests from the public site; one-click Convert to Client + Job |
| 📈 Reports | Revenue summary, job status breakdown, jobs-by-employee, estimates vs invoices, CSV export |
| ⚙ Settings | Business info, logo upload, service types, invoice numbering, blocked days, admin password |
| 📱 Team Login | Employee-facing view — assigned jobs, status updates, self-service PIN change |
| 📖 User Guide | In-portal help guide covering every module (accessible from the sidebar) |
Documentation Pages
| Page | What You'll Find |
|---|---|
| Admin Guide | Day-to-day usage: every module explained with workflow details and tips |
| Credentials | Live URLs, login info, Cloudflare resources, D1 database ID, Worker name |
| Dev Reference | Architecture, DB schema, file structure, API routes, auth flow, FUSE commit pattern |
| AI Handoff | Rules for AI session continuation — FUSE-safe commit pattern, known gotchas |
| Deployment | Step-by-step: D1 migration, Worker deploy, Pages build and deploy |
| User Guide | End-user walkthrough of every feature — the same guide embedded in the portal |