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 five 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 |
| 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 |
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