CalDAV requires a client that supports account-level discovery (DAVx⁵, Thunderbird, etc.). Many calendar applications — including Nextcloud Calendar — only support subscribing to static iCal feed URLs (.ics files). There’s currently no way to subscribe to Vikunja tasks
from these apps without a sync daemon like vdirsyncer.
Proposed Solution:
Add read-only iCal feed endpoints to the REST API:
- GET /api/v1/projects/{id}/ical — tasks for a single project
- GET /api/v1/user/ical — tasks across all projects for the authenticated user
Both return text/calendar with VTODO components for tasks (with due dates, priority, status, etc.), using the existing serialization in pkg/caldav/caldav.go.
Authentication: Support API token via ?token= query parameter so the URL can be used directly as a subscription link in calendar apps without session cookies.
Use Case:
Users could copy a feed URL from the project share settings and paste it into:
- Nextcloud Calendar (“Subscribe from link”)
- Apple Calendar
- Google Calendar (external calendar subscription)
- Any webcal-compatible app
Implementation Notes:
The iCal serialization already exists (caldav.ParseTodos()). This would primarily be new route handlers + a small UI addition to the project share settings page showing a copyable feed URL.
Happy to implement this if the approach looks good to maintainers.