Calendar
Your daily command center — see all follow-ups, consultations, meal plan dates, and payment dues in one place.
The Calendar is the practitioner's command center. It shows everything happening in your practice — follow-ups, consultations, active meal plan dates, and payment dues — in a single unified view.
Open the calendar from the sidebar or press ⌘K and type "calendar". Keyboard shortcuts work on the calendar page: T (today), D/W/M (switch view), ←/→ (navigate).
Views
The calendar supports three views, switchable from the toggle in the top-right corner.
Day view
The day view is your morning starting point. It shows:
- Summary stats — total events, pending, overdue, and completed counts for the day
- Action Required — pending and overdue follow-ups with client name, type, time, and duration. Click any event to see a popover with inline actions.
- Completed — sessions already done today
- Coming Up sidebar (desktop) — preview of the next 3 days
A "+ New" button lets you schedule a follow-up directly from the calendar without navigating to a client profile.
Week view
A 7-column layout showing all events for the week. Each day column shows event cards with:
- Color-coded dot by event type
- Client first name
- Time (if scheduled) and type label
- Practitioner initials (when viewing "All Practitioners")
- Event count badge on each day header
On desktop (≥1280px), clicking a day header or event card opens the side panel with that day's events or event details. On smaller screens, clicking opens a floating popover.
Month view
A traditional calendar grid with event pills per day. Features:
- Up to 3 event pills per cell, with "+N more" overflow
- Meal plan date ranges highlighted as a subtle teal background band across the days
- Overdue events highlighted with a red background tint
- Selected day highlighted with a primary ring when the side panel is open
- Click any day to open the side panel (desktop) or drill down to day view (mobile)
- Click any event pill to see details in the side panel (desktop) or popover (mobile)
Side panel
On screens ≥1280px, clicking a day or event in the week/month view opens a side panel on the right — similar to Google Calendar and Outlook. The calendar grid and panel share a single unified container with a smooth width animation.
The panel has three states:
| State | Content |
|---|---|
| Day summary | Date with ←→ navigation, event count, grouped events (Action Required / Completed / Other) with inline actions |
| Event detail | Full event details with Start Visit, Reschedule, Skip, No-Show, calendar export, and View Client |
| Quick create | Client search, type, time, title — schedule a follow-up inline |
The panel stays open as you navigate between days using the ←→ arrows or [/] keyboard shortcuts. Press Esc to close.
The side panel lets you browse days and take actions without ever leaving the calendar. Click a day, review events, start a visit or reschedule — all while keeping the month grid visible for context.
Event types
The calendar shows six types of events, each color-coded:
| Type | Color | Source |
|---|---|---|
| Follow-ups | Green (initial), Blue (follow-up), Violet (check-in), Amber (plan review) | dietScheduledFollowUps table |
| Consultations | Lighter shades of the above | dietConsultations table |
| Bookings | Indigo (or appointment type color) | dietBookings table — client self-booked appointments |
| Meal plan dates | Teal | Start and end dates of active/draft meal plans |
| Payment dues | Orange (upcoming), Red (overdue) | Unpaid invoices with due dates |
| Package expiry | Red | Active packages expiring within the date range |
| Special days | Amber (festivals), Sky (travel), Pink (parties), Teal (vacation), Rose (wedding), Emerald (fasting), Violet (exam) | dietSpecialDays table |
Bookings on the calendar
When clients book appointments via the portal, they appear as calendar events:
- Color: Indigo (default) or the appointment type's configured color
- Label: "Client Name — Appointment Type" (e.g., "Priya — Follow-up")
- Time: Shows the booked time slot and duration
- Mode badge: In-person, Video, or Phone indicator
- Source badge: "Booked by client" to distinguish from practitioner-scheduled events
Booking actions
Click a booking event to open the popover/side panel with actions:
| Action | Effect |
|---|---|
| Confirm | Moves from pending to confirmed |
| Start Visit | Opens the Complete Visit flow for this session |
| Cancel | Cancels the booking — client is notified via chat + push |
| No Show | Records client didn't attend |
Filtering
Use the event type filter dropdown to show/hide bookings alongside other event types. Bookings are included in the "All" default view.
For full booking setup documentation, see Appointments & Booking.
Special days on the calendar
Special days appear as colored event cards showing the event title and affected clients. They integrate with the calendar in several ways:
- Org-wide events (Diwali, Christmas) show as "All clients" with the event emoji
- Per-client events show the client's name alongside the event title
- Multi-day events (vacations, travel) span across multiple days
- Blocked scheduling — dates with special days show a visual indicator when creating new follow-ups
- Legend entry — "Special Day" appears in the calendar legend with an amber dot
Click "🎉 Mark Special Day" in the calendar legend to create a new special day. You can also create them from any client's Follow-ups tab.
At the start of each month, mark upcoming festivals and holidays for your practice. This automatically blocks follow-up scheduling and prepares contextual guidance for clients.
For the full Special Days feature documentation including templates, client-initiated events, and calorie adjustments, see Special Days.
Event popover
On smaller screens (below 1280px), clicking an event shows a floating popover with details and actions:
Header: Client name, event type, status badge, and scheduled time.
Body (contextual):
- Follow-ups: notes (if any)
- Consultations: mode (in-person/video/phone/chat), conducted by, duration
- Meal plans: plan title
- Payment dues: invoice amount
Actions (contextual):
- Pending follow-up: Start Visit, Reschedule (inline date+time picker), Skip, No-Show, Add to Google Calendar, Download .ics
- Completed: View Client
- Meal plan: Open Plan
- Payment due: View Invoice
All actions execute inline — no navigation away from the calendar.
Practitioner filter
For clinics with multiple dietitians, a dropdown in the calendar header lets you filter events by practitioner.
- Team members default to "My Schedule" — showing only their own clients' events
- Owners and admins default to "All Practitioners" — seeing the full practice schedule
- Switch between practitioners or "All" at any time
The filter works across all three views and affects the tRPC query directly — only matching events are fetched.
Quick scheduling
Schedule a follow-up directly from the calendar:
- Click "+ New" in the day view (or next to the header in week/month views)
- Search for a client by name
- Select the type (Follow-up, Initial, Check-in, Plan Review)
- Set a time (optional)
- Click Schedule
The event appears immediately on the calendar.
Recurring follow-ups
When scheduling a follow-up (from the calendar or the client's Follow-ups tab), you can set a repeat frequency:
| Frequency | Interval |
|---|---|
| Weekly | Every 7 days |
| Every 2 weeks | Every 14 days |
| Monthly | Every 30 days |
Set a "Repeat until" end date and MealStack generates all future instances automatically. Each instance is a separate follow-up that can be individually rescheduled, skipped, or completed.
Keyboard shortcuts
| Key | Action |
|---|---|
T | Jump to today |
D | Switch to day view |
W | Switch to week view |
M | Switch to month view |
← | Previous day/week/month |
→ | Next day/week/month |
N | New event (opens side panel on desktop, switches to day view on mobile) |
Esc | Close side panel (or go back from event detail to day summary) |
[ | Previous day in side panel |
] | Next day in side panel |
Calendar export
From the event popover, pending follow-ups can be exported to:
- Google Calendar — opens a pre-filled "Add Event" page
- .ics file — downloads a standard iCalendar file compatible with Apple Calendar, Outlook, and any RFC 5545 client
Appointments & Booking
Set up appointment types, availability, and client self-booking
Consultations & Follow-ups
The full visit workflow — Start Visit, Discovery Wizard, and session tracking
Client Portal
What clients see — meal plans, food diary, and progress tracking
Keyboard Shortcuts
All keyboard shortcuts across MealStack