Good Morning, GlowDesk
{{todayFormatted}}
Today's Appointments
{{todayAppointments.length}}
Walk-ins Today
{{todayWalkins}}
Total Customers
{{customers.length}}
Revenue (May)
RM{{totalRevenue.toLocaleString()}}
Upcoming Appointments Today
| Time | Customer | Service | Therapist | Status |
|---|---|---|---|---|
| {{a.time}} | {{a.customer}} | {{a.service}} | {{a.therapist}} | {{a.status}} |
No appointments today
Weekly Revenue This Week
Popular Services
{{i+1}}
{{s.name}}
{{s.duration}} min · RM{{s.price}}
Recent Customers {{customers.length}} total
{{c.name.split(' ').map(n=>n[0]).join('').slice(0,2)}}
{{c.name}}
{{c.phone}}
Staff Today
AinOn duty · 3 appointments
LinaOn duty · 2 appointments
MayaOn duty · 1 appointment
DinaOff today
Birthday Alerts
Nadia Razak
Tomorrow · 13 May
Zara Ismail
15 May · Send promo?
Notes
{{n}} ×
Low Stock Alert
Hydra Facial Serum2 left
Massage Oil (Lavender)3 left
Disposable Face Towels1 pack
Nail Polish — Nude Collection4 left
Appointments
{{appointments.length}} total
| Date | Time | Customer | Service | Therapist | Status | |
|---|---|---|---|---|---|---|
| {{a.date}} | {{a.time}} | {{a.customer}} | {{a.service}} | {{a.therapist}} | {{a.status}} | × |
Customers
{{customers.length}} total
| Name | Phone | Visits | Notes | |
|---|---|---|---|---|
| {{c.name}} | {{c.phone}} | {{c.visits}} | {{c.notes||'—'}} | × |
Services
{{services.length}} services
| Service | Duration | Price | |
|---|---|---|---|
| {{s.name}} | {{s.duration}} min | RM{{s.price}} | × |
Notes
{{notes.length}} notes
{{n}} ×
Staff
{{staff.length}} members
| Name | Speciality | Status | |
|---|---|---|---|
| {{s.name}} | {{s.speciality}} | {{s.onDuty?'On Duty':'Off'}} | × |
Inventory
{{inventory.length}} items
| Product | Qty | Low Threshold | Status | |
|---|---|---|---|---|
| {{item.name}} | {{item.qty}} | {{item.threshold}} | {{item.qty<=item.threshold?'Low':'OK'}} | × |
Reports
Analytics overview
Total Appointments
{{appointments.length}}
Completed
{{appointments.filter(a=>a.status==='completed').length}}
Total Revenue
RM{{totalRevenue.toLocaleString()}}
Avg per Customer
RM{{customers.length?Math.round(totalRevenue/customers.length):0}}
Top Customers
{{c.name.split(' ').map(n=>n[0]).join('').slice(0,2)}}
{{c.name}}
{{c.phone}}
Services Breakdown
{{s.name}}
RM{{s.price}}
Settings
Salon configuration