Lesson 1 of 8 · 4 min
Calendar — What It Is and Who Sees What
Understand what the Vremly calendar shows, how access is scoped by role, and how it connects to the rest of the platform.
Calendar — What It Is and Who Sees What
Video coming soon
Lesson Notes
The calendar lives at /calendar and is the scheduling nerve center of Vremly. Every job that has a scheduled date and time appears here as a calendar event. Jobs are converted from raw project records into calendar events through the platform's job-to-event pipeline, and multi-visit jobs (where a shoot spans more than one arrival) appear as separate visit events so each appointment occupies its own time block.
Access is role-scoped. Owners, Admins, and Project Managers see the full organization-wide calendar — every job assigned to every technician, regardless of who is on it. Technicians and Editors see only the jobs assigned to them personally (pulled from the /projects/mine endpoint). Agents (customers using the portal) also see only their own booked jobs. The page header never changes, but the data behind it is completely different depending on your role, so a technician and a dispatcher looking at the same calendar URL are seeing different information.
Unscheduled jobs — jobs that have been booked but not yet given a date and time — also appear on the calendar, represented as floating events rather than time-anchored blocks. The sidebar's Event Types filter lets you toggle Scheduled, Unscheduled, and External events on or off independently, so dispatchers who want to focus only on what's confirmed for the week can hide the pending pile temporarily.
On iOS, agents use the AgentCalendarView (at apps/vremly-ios-swift/Vremly/Views/Agent/AgentCalendarView.swift), which loads the user's own projects via ProjectsClient.shared.myProjects and presents the same four view modes — Month, Week, Day, and List — in a native SwiftUI layout. The iOS experience is read-only for scheduling; all rescheduling actions happen in the webapp. The Today button and chevron nav buttons work identically to their web equivalents.
When the calendar loads an empty week or month, it doesn't just show a blank screen. The platform queries the nearest scheduled job date and surfaces a 'Jump to [date]' banner so you can navigate directly to where work is actually happening. This prevents the common situation of being confused by an empty view when jobs exist on other dates.
Key Takeaways
- Owners, Admins, and Project Managers see all org jobs; Technicians and Agents see only their own.
- Unscheduled jobs appear as floating events — use the Event Types filter to show or hide them.
- The 'Jump to' banner navigates you directly to the nearest date with activity when the current view is empty.
- iOS AgentCalendarView surfaces the same four view modes using native SwiftUI and is read-only for rescheduling.