Skip to main content
Photo of Anton ShubinAnton ShubinContact

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.

1 min 2 s · with captions and music · demo tasks on a local Radicale

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.

Pick a field Tasks.org shows
In the file
SUMMARY, DESCRIPTION
Covered by the fixtures and tests
Yes (the repeating task has notes)
In the file
PRIORITY 1, 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 no RELTYPE)
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 form
BEGIN: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:VCALENDAR

An 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.

CalDAV servers
NameStatus
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, BaikalUntested
OthersUntested
Browsers
NameStatus
ChromiumThe browser tests run in Chromium only, one spec in a 375 by 812 window.Tested
Firefox, Safari, othersUntested

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.0

From Docker Hub, pinned to v1.10.0.

View on GitHub

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 use
  • mig

    tiny self-hosted meeting scheduler.

    In use
  • preact-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

All tools