caldav-tasks-web web UI for CalDAV VTODO tasks WIP
A web companion to Tasks.org for your own CalDAV server.
Open your task lists in a browser, on the same server your phone syncs with. One install serves one person.
Same file, two apps
The server only relays. Your tasks stay on your CalDAV server, and the app writes them back in the form Tasks.org wrote them, so nothing the phone stored is lost when you edit in the browser.
- In the file
SUMMARY,DESCRIPTION- Covered by the fixtures and tests
- Yes (the repeating task has notes)
- In the file
PRIORITY1, 5, 9, 0- Covered by the fixtures and tests
- The fixtures hold 1 and 5. The editor test saves 0, 1, 5 and 9, and the quick-add test maps its words to 1, 5 and 9.
- In the file
RELATED-TO(Tasks.org writes noRELTYPE)- Covered by the fixtures and tests
- Yes, including a missing parent and a cycle
- In the file
X-APPLE-SORT-ORDER- Covered by the fixtures and tests
- Yes. The expected order in the fixtures was worked out by hand from Tasks.org's rule, not read off a Tasks.org screen.
- In the file
VALARM- Covered by the fixtures and tests
- Yes, the default "when due" alarm; kept untouched by an edit (
e2e/tasks.e2e.ts)
Buy seeds.ics · a made-up task in Tasks.org's formBEGIN:VCALENDARVERSION:2.0PRODID:+//IDN tasks.org//android-150904//ENBEGIN:VTODODTSTAMP:20261001T080000ZCREATED:20260930T080000ZUID:100200301SUMMARY:Buy seedsPRIORITY:1RELATED-TO:100200300X-APPLE-SORT-ORDER:792512300BEGIN:VALARMTRIGGER;RELATED=END:PT0SACTION:DISPLAYDESCRIPTION:Default Tasks.org descriptionEND:VALARMEND:VTODOEND:VCALENDARAn edit in the browser leaves the rest of the text as it was. Every field
What was tested
A row says "tested" only when a test in caldav-tasks-web's repository backs it. "In daily use" means the author runs it and no automated test does.
| Name | Status |
|---|---|
| Radicale 3.5.4The browser test suite runs against this version, locally and in CI. | Tested |
| Stalwart 0.16The author's own install runs against it. No automated test talks to a Stalwart server. | In daily use, not in CI |
| Nextcloud, Baikal | Untested |
| Others | Untested |
| Name | Status |
|---|---|
| ChromiumThe browser tests run in Chromium only, one spec in a 375 by 812 window. | Tested |
| Firefox, Safari, others | Untested |
The compatibility guide has the evidence for each row.
Where it stands
Works today
- Lists, Today, Upcoming and Search across all lists.
- Add, edit, complete, delete and undo. A quick-add line understands a tag, a time and a priority.
- Subtasks, tags, priority, due and start dates, notes and manual order by drag or keyboard.
- Repeating tasks: daily, weekly, monthly or yearly.
- Works offline: edits made offline are queued and sent when the network returns.
- Keyboard shortcuts; press ? to see them.
Known issueAn edit can be lost in rare cases: two offline edits made from the same stale copy, or a task deleted on another device while you edit it. Issue #119
What is not built yet is on the open issues.
Use it if
- You run a CalDAV server, use Tasks.org on Android, and want the same lists on a computer without a second account or a second copy of your data.
Skip it if
- You want a hosted service with a sign-up: you run the container, and you are the only user.
- You need Firefox or Safari tested: the browser tests run in Chromium only.
The story behind it
Two ways to use it
Use it yourself
The code is on GitHub under the MIT licence.
docker pull antonshubin/caldav-tasks-web:v1.10.0From Docker Hub, pinned to v1.10.0.
Have me build it
Need something like this for your team? That's my day job.
More tools
caldav-mcp
MCP server that lets AI assistants read and write CalDAV events and tasks.
In usemig
tiny self-hosted meeting scheduler.
In usepreact-components
server-rendered Preact and Tailwind components.
The design system, the component styling and the original markup are by Eirene. Eirene on GitHub · isorokina.com
Beta
