Skip to main content

Calendar

A sovereign calendar with three view modes, drag-and-drop scheduling, and ICS import/export. No Google Calendar dependency — all data stays on your server.

View Modes

Switch between views using the toggle in the header.

ViewLayoutInteraction
Month7-column grid, adjacent-month days at 35% opacityClick a day to select; double-click to create an event
WeekTime gutter (48px) + 7 day columns, 60px per hour, 24 rowsDrag events to reschedule; double-click a time slot to create
DaySingle column, same 60px/hour layoutSame drag-and-drop and double-click behavior

Navigation: ChevronLeft / ChevronRight arrows move by month, week, or day. The Today button resets all three anchors. Week starts on Monday.

Event Types

Events are merged from three data sources:

TypeColorSource
Task#3b82f6 blueTasks with a dueDate from the task system
Meeting#8b5cf6 purpleDocuments with "Meeting Notes:" in the title
Calendar#10b981 greenCalendar events from the Go backend
Overdue task#ef4444 redNon-complete tasks past their due date

Creating Events

Double-click any date (month view) or time slot (week/day view) to open the New Event dialog.

FieldOptions
Titlefree text
Datepre-filled from the clicked slot
Start / End timetime pickers
TypeCalendar Event, Task, or Meeting
RecurrenceNone, Daily (30 copies), Weekly (12 copies), Monthly (6 copies)

Recurring events generate N separate copies, each created as an individual API call.

Drag and Drop

In week and day views, grab any task or calendar event and drag it vertically. The hour delta is computed as Math.round(dragOffsetY / 60). On release, the event's start time is updated via the appropriate API (calendar update or task edit).

Event Detail Popover

Click any event to open its detail popover showing title, date, time range, and status. Task and calendar events have Edit and Delete buttons. Meeting docs are read-only.

Edit mode reveals inline fields for title, start time, and end time.

ICS Import & Export

  • Import: Click the upload icon in the header. Select a .ics file. The server parses VEVENT components (summary, dtstart, dtend, description, rrule) and inserts them as calendar events. Returns { imported: N }.
  • Export: Click the download icon. The server generates a telemore-calendar.ics file with all your events formatted as iCalendar.

CalDAV Sync

Sync with external calendar apps (Apple Calendar, Thunderbird) via CalDAV:

  1. Go to Settings → Calendar
  2. Click Generate CalDAV Password
  3. Copy the CalDAV URL, username, and password into your calendar app

Selected Date Panel

When a date is selected, a panel below the calendar lists all events for that day with color dot, title, time, and type chip. Clicking any event opens its detail popover.