Contents
Logging In
Navigate to xyzaquarium.sonandigital.com and click Admin Login in the top navigation. Enter your admin password (set in Settings → Admin Password). A successful login redirects you to the Dashboard. The session persists until you click Logout in the sidebar.
npx wrangler d1 execute aquarium_db --command "UPDATE settings SET admin_password_hash = '...' WHERE id = 1"Dashboard
The dashboard shows a real-time snapshot of the business. Six stat cards display total jobs, total clients, paid revenue, pending estimates, new service requests, and jobs scheduled for today. Each card is a live count — no manual refresh needed. The dashboard is read-only; all management happens in the individual module views.
Jobs
Jobs are the core scheduling unit. Each job links to a client, has a service type, scheduled date and time, assigned employee, price, status, and optional notes.
Creating a job: Click + New Job. Fill in client (type to search), service type, date, time, assigned employee, price, and any notes. Toggle Recurring to set weekly or monthly repeats — recurring jobs generate future instances automatically. Click Save.
Status flow: Scheduled → In Progress → Completed → Cancelled. Employees update status from Team Login; admins can override at any time from the job detail panel.
Filtering: Use the search bar (client name or notes), the status dropdown, and the employee dropdown to narrow the list. All filters combine.
One-click from Clients: Open any client card, go to the Jobs tab, and click any job row to jump directly to that job's detail panel.
Calendar
The calendar shows all scheduled jobs in a month grid. Jobs appear as colored chips — color matches the service type. On mobile, the view switches to a compact dot layout (one dot per job) to avoid horizontal overflow. Click any dot or chip to open the job detail. Click any empty date cell to open a pre-filled New Job form with that date selected.
Use the ← / → buttons to move between months. The Today button returns to the current month.
Clients
The Clients view is the business contact directory. Each client record stores name, email, phone, address, and notes. Clients are created either manually (via + New Client) or automatically when a Service Request is converted.
Client detail modal has four tabs: Jobs (all jobs for this client), Requests (service requests), Estimates (quotes), and Invoices (billing history). Every row in every tab is clickable — clicking navigates you directly to that record in its own module view.
Editing: Click the pencil icon on any client card to edit name, email, phone, address, or notes. Changes save immediately on confirm.
Employees & Team Login
The Employees view lists all team members. Each employee has a name, phone number (used as their login ID), and a 4-digit PIN. Admins set the initial PIN; employees can change their own PIN from Team Login.
Adding an employee: Click + Add Employee, fill in name, phone, and initial PIN, and save.
Resetting a PIN: Click the edit icon on an employee, enter a new PIN, and save. The employee will use this PIN on their next Team Login.
Team Login is a separate view at the same URL — accessible from the public nav. Employees enter their phone number and PIN to see only their assigned jobs. They can mark jobs In Progress / Completed and change their PIN. No financial data is visible in Team Login.
Estimates
Estimates are branded PDF quotes sent to clients before work begins. Each estimate has a client, line items with descriptions and amounts, status (Draft / Sent / Approved / Declined), and an optional expiry date.
Creating an estimate: Click + New Estimate, select a client, add line items, set status to Draft. When ready to send, change status to Sent and use the Share button to print, email, or copy a shareable link.
PDF output includes the business logo (from Settings), business name and contact, estimate number, client details, itemized table, subtotal, and a footer. All branding comes from Settings automatically.
One-click from Clients: Open a client, go to Estimates tab, click any estimate row to open it in the Estimates view.
Invoices
Invoices are billing documents generated from completed jobs or created manually. Each invoice has a client, line items, subtotal, and a paid/unpaid status.
Mark Paid: Click Mark as Paid on any unpaid invoice. Once paid, the invoice is locked — line items cannot be edited. The paid date is recorded and shown on the PDF.
PDF output matches the estimate format — logo, business info, invoice number, client details, itemized table, total, and paid/unpaid stamp.
Invoice numbers follow the format configured in Settings → Invoice Numbering (prefix + auto-incrementing counter).
Service Requests
Service Requests are inbound quote requests submitted via the public-facing contact form on the landing page. Each request shows the submitter's name, email, phone, preferred service, and message.
Converting a request: Click Convert to Client + Job on any request. This creates a new Client record from the request's contact info and opens a pre-filled New Job form. The original request is marked converted and removed from the active queue.
Requests stay highlighted in the Service Requests view when navigated to from a Client card (blue ring highlight).
Reports
The Reports view provides five report types selectable from a tab bar:
- Revenue Summary — total invoiced vs. paid by month
- Job Status Breakdown — count of jobs by status (Scheduled / In Progress / Completed / Cancelled)
- Jobs by Employee — job count and revenue per team member
- Estimates vs. Invoices — conversion rate from quote to billed
- CSV Export — download all jobs or all invoices as a CSV file
All reports reflect live data from D1. No date range filter currently — reports cover all-time records.
Settings
Settings control all business-level configuration. Changes take effect immediately across the portal and public site.
| Setting | What It Controls |
|---|---|
| Business Name | Displayed on the public landing page, PDF header, and portal branding |
| Logo | Upload a PNG/JPG; appears on estimates, invoices, and public site header |
| Contact Info | Phone, email, address shown on PDFs and public site |
| Service Types | List of service categories used in job and estimate dropdowns |
| Invoice Numbering | Prefix (e.g. INV-) and starting number for auto-generated invoice IDs |
| Blocked Days | Days of the week to mark unavailable on the calendar |
| Admin Password | Change the admin login password (hashed before storing) |