Vikunja

vikunja.iocontributed by Samuele Ongaro

YES

Replaceable in one session with an AI coding agent.

A self-hostable to-do and project app with lists, kanban, a calendar and a Gantt view, plus a CalDAV interface so ordinary calendar apps can see your tasks.

Promptfree, for everyone, and the only version there is
Build me the task and project app I actually need instead of a hosted Vikunja: lists, a board, a calendar, and my tasks visible in the calendar app I already use.

Read this first: Vikunja is open source and self-hosting it is free — the fee buys hosting, backups and upgrades. Build this when you want the model to be exactly yours, and note that the CalDAV interface is the genuinely clever part: it puts your tasks into the applications already on your phone, with no app to write.

STACK
- Node 20+ with Fastify, server-rendered HTML with a little vanilla JS
- SQLite through better-sqlite3, WAL mode, with FTS5
- Caddy in front

THE DATA MODEL
- projects: id, parent_id, title, description_md, colour, position, is_archived, owner_id
- buckets: id, project_id, title, position, limit — the board columns
- tasks: id, project_id, bucket_id, identifier, title, description_md, done_at, due_at, start_at, end_at, priority, percent_done, position, repeat_json, parent_id, created_by, created_at
- labels, task_labels, assignees, attachments, comments
- relations: id, task_id, other_task_id, kind — subtask, blocking, blocked, related, duplicate
- reminders: id, task_id, at, relative_to, offset_minutes, sent_at
- saved_filters: id, title, filter_json, owner_id
- activity: id, task_id, field, old_value, new_value, actor_id, at — append-only
- shares: project_id, user_id, right — read, write, admin
- The identifier is a per-project prefix and number, allocated in the creating transaction and never reused

FIVE VIEWS OVER ONE SET OF DATA
- List: grouped, sorted, with inline editing and a quick-add field
- Board: buckets with drag between them, a limit per bucket that warns rather than blocks
- Table: every field as a column, sortable and filterable, which is the view power users live in
- Calendar: tasks with dates, draggable to reschedule
- Gantt: start and end dates on a timeline with dependencies drawn
- Each is real work, and each must read the same rows with no duplication of logic. One query builder, five renderers
- Ordering on the board and in the list uses fractional positions, not floats — floats run out of precision after enough drags and tasks start swapping places by themselves

CALDAV, WHICH IS THE FEATURE WORTH THE EFFORT
- Serve tasks as VTODO over CalDAV, so the calendar and reminder applications already on every phone and laptop show them with nothing installed
- Implement enough of the protocol properly: discovery, a collection per project, ETags, conditional requests, and reporting on a time range
- Map fields honestly: summary, description, due, start, priority, percent complete, categories, status, and recurrence. Anything with no VTODO equivalent stays in the web interface and is not invented
- Two-way: a task completed on the phone is completed here
- Clients are all subtly different. Test against at least three real ones, because a CalDAV server that works with one client and not the others is worse than none
- Optionally serve dated tasks as a read-only calendar feed too, which is a much simpler thing and covers half of what people want

QUICK ADD
- One line becomes a task: a date, a label, a priority, a project and an assignee parsed out of ordinary typing
- Parsed on the device, instantly, with the result shown as chips that can be corrected before saving. Never applied silently
- Everything typeable is also selectable, because most people never learn a syntax

REPEATING TASKS
- Two kinds, and they differ: every Monday, and every two weeks after completion
- Completing a repeating task creates the next occurrence and keeps the completion. The history must survive
- Daylight saving handled by storing the intent with a named zone and recomputing, not by shifting an offset

FILTERS
- A filter language over every field, saved as a pseudo-project that behaves like any other list
- Filters shareable, and used as the source of any view
- Full-text search with FTS5 across titles, descriptions and comments, respecting permissions inside the query

SHARING
- Per project, with read, write or admin
- Link shares by token for people with no account, read-only or write, revocable
- Team assignment, comments with mentions, notifications batched into a digest with mentions immediate

OPERATIONS
- .env: DATABASE_PATH, STORAGE_PATH, BASE_URL, SESSION_SECRET, SMTP_URL
- Migrations on boot, each once
- Nightly backup off the machine, restore script
- Health endpoint

WHAT MATTERS MOST
CalDAV and the shared query layer. Get tasks into the phone's own applications and build the five views on one query builder rather than five, then use it for a fortnight. Without CalDAV this is another task app; with it, it is in every device you own without writing a single client.

Give me the repository, the CalDAV server with its client compatibility notes, migrations, .env.example, a seed project, and a README with deploy steps behind Caddy.

What you lose

  • A CalDAV interface, which is what lets your phone's built-in apps show the same tasks
  • Five views over the same data, each of which is real work to build
  • Hosting, backups and upgrades if you take the paid plan

If you would rather not build

  • Todoist, if you want polish over ownership
  • A Markdown file, which many people never outgrow

What it costs

as published on their pricing page

PlanBilled monthlyBilled yearlyLast read
—$5/mo——

Their pricing page is where these came from. Seeing a different price? Tell us.

The escape hatch

open source · no votes, no paid placement

Vikunja

$0

The product itself, self-hostable, with CalDAV support.

go-vikunja/vikunjafree · open source

Focalboard

$0

A self-hosted board-and-table task tool, archived but still usable.

mattermost-community/focalboardfree · open source

Why this verdict

our own opinion · changed only by a person

84/100

Verdict yes at 84. The iCalendar feed is the cheapest way to make a home-made task app usable from a phone, and it is about thirty lines.

History

tracked since 10 Aug 2026 · nothing is ever overwritten

Interest · last 30 dayspeak 2/day
views01230 Aug4 Sept9 Sept14 Sept19 Sept24 Sept28 Sept
— views— prompt copies none yet— votes none yet

Questions about Vikunja

answered from the record above

Is Vikunja free?

No — the plan we track is $5 a month. Around €5/month for the hosted plan; the software is free to self-host under an AGPL licence.

Can you replace Vikunja by building your own?

YES. Replaceable in one session with an AI coding agent. Replacement score 84 out of 100, build time one session. Read what you lose before you decide.

How much does Vikunja cost?

$5 a month on Hosted — $60 a year. Recorded 10 Aug 2026.

What do you lose by replacing Vikunja?

A CalDAV interface, which is what lets your phone's built-in apps show the same tasks; Five views over the same data, each of which is real work to build; Hosting, backups and upgrades if you take the paid plan. If any of those carry weight for you, keep paying.

Is there an open-source alternative to Vikunja?

Yes: Vikunja, Focalboard. The prompt on this page is for when you want it your way instead.

Related entries

same category first, most replaced first

All 33 in Tasks & project management

Not sending yet

Every week, something stops being worth paying for.

New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.

free forever · no tracking pixel · stored here, never passed to anyone

Esc