More Work

Appointment Booking App – Admin

Secure admin calendar, slot management, reminders, and status workflows.

Role
Full-stack Developer
Timeline
2 weeks (parallel with client app)
Industry
Local Services
Team
Solo
Scope
Admin calendar, slot & schedule controls, reminders, statuses
Impact
Reduced no-shows and front-desk workload with clear controls

TL;DR

  • Centralized admin calendar with role-based access
  • Create/disable slots quickly to balance load
  • Automated confirmations and reminders
  • Status workflows to keep records clean

⚡ Problem

Staff lacked a centralized, reliable way to manage availability, prevent double-booking, and track appointment outcomes. Manual reminders and ad-hoc notes led to no-shows and scheduling conflicts.

Audience & Use Cases

Primary Audience

  • Clinic/salon owners and front-desk staff
  • Operators managing 10–100+ weekly appointments
  • Teams needing reliable reminder workflows

Key Use Cases

Shape next week’s availability

Admin creates recurring morning/afternoon blocks, disables holidays, and ensures services won’t overlap.

Reduce no-shows automatically

Template emails send confirmations at booking and reminders before the visit, formatted in the customer’s local time.

Keep records accurate

After each day, admins mark appointments completed/canceled/no-show and review notes for follow-ups.

💡 Solution

A secure admin dashboard to create/disable slots, review and filter appointments, send confirmations/reminders, and mark statuses. Timezone-aware UI reduces mistakes; protected routes keep operations safe.

  • Admin login with JWT and role-based route protection
  • Day/Week calendar views with quick slot create/disable
  • Search & filters by date range, service, and status
  • One-click status updates (completed/canceled/no-show)
  • Email confirmations & reminders using templates
  • Timezone-aware formatting across UI and emails
  • Responsive, keyboard-accessible admin experience

Requirements & Constraints

Requirements

  • Protect all admin operations with JWT + role checks
  • Prevent double-booking and overlapping slots
  • Calendar views with filters and fast editing
  • Automated confirmation/reminder emails

Constraints

  • Simple hosting footprint (single API + DB)
  • Keep UI consistent with client app theme
  • Minimal external services beyond email

Architecture

React/Vite admin dashboard secured by JWT talks to an Express API backed by MongoDB. Calendar views query slots and appointments with range filters. Nodemailer handles confirmation and reminder emails; Day.js normalizes timezones.

Data / Request Flow

  1. Admin authenticates and receives JWT (admin role).
  2. Admin creates/edits slots; server validates overlaps.
  3. Bookings reference slots; reminders are scheduled/sent.
  4. Dashboard lists appointments with filters and bulk actions.
  5. Admins set statuses and add notes; data updates instantly.
  6. Audit-friendly history kept through appointment status changes.

Domain Model

Admin
  • id
  • email
  • passwordHash
  • role (admin)
  • createdAt
Slot
  • id
  • start
  • end
  • service
  • recurrence?
  • isDisabled
Appointment
  • id
  • userId
  • slotId
  • service
  • status (upcoming|completed|canceled|no-show)
  • notes?
  • createdAt

Trade-offs & Alternatives

  • Mongoose for speed of iteration over relational schemas; trades off strict relations for agility
  • In-house email with Nodemailer for control; third-party would add cost but hosted reliability

Roadmap

  • Multi-staff schedules & resource assignment
  • Bulk slot creation from templates
  • CSV/Excel exports for reporting
  • SMS reminders and ICS attachments
  • Per-service buffers and padding rules

FAQ

Can admins prevent double-booking?

Yes—slot creation validates overlaps and the server enforces one appointment per slot.

Do reminders work across timezones?

Yes—emails are formatted in the customer’s local time using Day.js.

Can we manage recurring availability?

The model anticipates recurring patterns; UI templates for recurring blocks are planned on the roadmap.

Is the admin area secured?

All admin routes require a valid JWT with admin role; mutations are guarded by middleware and input validation.