Vikunja
Self-hosted task management with natural-language quick-add, multiple views, and a fully documented REST API — your tasks, your infrastructure, zero lock-in.
Vikunja is an open-source, self-hosted task management application that gives individuals and teams complete ownership of their data. Instead of sending your tasks to a third-party cloud, you run Vikunja on your own server and access it from any device through a polished web interface or the REST API. The project has been in active development since 2018 and reached v2.0 in early 2026, making it a mature option for anyone tired of SaaS subscriptions.
The application ships as a single Go binary that bundles the Vue.js frontend, so deployment is as simple as running the binary or pulling the official Docker image. It supports PostgreSQL, MySQL/MariaDB, and SQLite out of the box and can be reversed-proxied behind Caddy or nginx in minutes. Real-time updates arrive over WebSockets so collaborators see task changes immediately without refreshing.
Vikunja’s standout feature for power users is Quick Add Magic: type a task like “Call client !2 *weekly +work @alice due:Friday” and the parser extracts the priority, repeat interval, project, assignee, and due date automatically — no extra clicks required. This natural-language input system is backed by a comprehensive test suite and works in the full task form as well as the quick-add bar.
The project is licensed under AGPLv3, ensuring the core is perpetually open. A small set of enterprise-grade features (admin panel, time tracking, audit logs) require a paid license key, which funds ongoing development. Everything else — Kanban, Gantt, CalDAV sync, importers, and the full API — is free and self-hostable.
What You Get
- Natural-Language Quick Add - Type priorities, due dates, labels, assignees, and projects inline using configurable prefix characters; the parser extracts and applies them instantly without extra dialogs.
- Four Task Views (List, Kanban, Gantt, Table) - Switch between a simple checklist, drag-and-drop Kanban board, timeline Gantt chart, and structured table with custom sorting — all on the same task data.
- CalDAV Sync - Expose tasks and reminders as a CalDAV feed so any calendar app (Thunderbird, Apple Calendar, DAVx5 on Android) can read and update tasks natively.
- Seven Migration Importers - One-click import from Todoist, Trello, Microsoft To-Do, TickTick, Wekan, CSV, and Vikunja export files — your data is never stranded in another tool.
- Real-Time WebSocket Updates - All connected clients see task edits, new comments, and status changes the moment they happen, with no manual refresh required.
- Fully Documented REST API - Every endpoint is covered by an interactive Swagger UI at /api/v1/docs, with JWT, API token, and BasicAuth (CalDAV) support for programmatic access.
- Scoped API Tokens - Create per-feature tokens that grant only the permissions a script or integration actually needs, reducing the blast radius of credential leaks.
Common Use Cases
- Personal GTD system on a home server - A developer runs Vikunja on a Raspberry Pi, syncs tasks to their phone via CalDAV, and uses Quick Add Magic to capture tasks from the command line without opening a browser.
- Small team sprint planning - A five-person startup uses the Kanban view to run two-week sprints, assigns tasks to individuals, and tracks time on support tickets with the time-tracking feature.
- Escaping a SaaS subscription - A project manager exports 800 tasks from Todoist, imports them into a self-hosted Vikunja instance, and eliminates a recurring cloud bill while keeping all historical data.
- Privacy-compliant task management for regulated industries - A healthcare IT team deploys Vikunja on-premises to track internal tickets without routing patient-adjacent data through external cloud services.
- Automated task creation via API - A CI/CD pipeline posts new Jira-style tasks to Vikunja through the REST API whenever a monitoring alert fires, linking them to the relevant project automatically.
Under The Hood
Architecture
Vikunja follows a layered monolith design with a clear split between the Go API backend and the Vue.js frontend, which communicate exclusively through the versioned REST API. The backend organizes logic into a pkg/ tree with distinct packages for models, routes, configuration, cron jobs, WebSocket hubs, CalDAV handling, and pluggable migration modules — each with its own concerns and minimal cross-package coupling. The command-line entrypoint delegates to a Cobra command tree that bootstraps the Xorm ORM, runs database migrations, registers cron jobs, and starts the Echo-based HTTP server in sequence. Configuration follows 12-factor principles: a hierarchical config file with per-key environment variable overrides, so the same binary runs in development, Docker, and bare-metal production without code changes. A WebSocket hub manages per-user connection pools for real-time task event broadcasting. Overall the architecture is solid and purposeful, earning a high score for separation of concerns.
Tech Stack
The backend is written in Go 1.25 and uses the Echo v5 web framework (via a thin wrapper package) with Xorm for database access against PostgreSQL, MySQL/MariaDB, or SQLite. Build automation runs through Mage (a Go-based Makefile alternative) and cross-compilation through xgo for multi-platform release binaries. The frontend is Vue 3 with TypeScript, Vite for bundling, Pinia for state management, and Tiptap for the rich-text task description editor; FontAwesome provides icons. CalDAV is handled by the arran4/golang-ical library. Email notifications are sent through a configurable SMTP relay. The Docker image uses a multi-stage build ending with FROM scratch and a single statically linked binary, keeping the final image as small as possible. CI runs on GitHub Actions and uses golangci-lint for Go and ESLint plus Prettier for the frontend.
Code Quality
The backend has extensive test coverage with 249 Go test files that include unit tests for model logic, integration tests against a real database, and a dedicated webtests package for HTTP-level API route testing. The frontend combines 54 Playwright end-to-end tests in a tests/e2e/ directory with Vitest unit tests for pure logic modules such as the Quick Add Magic parser. Error handling in Go is explicit throughout — functions return typed error values and the web package propagates them through a central error handler that maps them to structured JSON responses with both HTTP status codes and machine-readable error codes. TypeScript strict mode enforces type safety across all frontend model types and service interfaces. Naming conventions are consistent and descriptive in both languages. The overall picture is a well-maintained codebase with production-grade testing discipline.
What Makes It Unique
Vikunja’s Quick Add Magic parser is the feature that most distinguishes it from self-hosted alternatives. Users configure single-character prefix symbols (e.g. ! for priority, * for repeat, + for project, @ for assignee, # for label) and the parser extracts structured data from freeform text using a dedicated tokenizer with its own test suite. This means tasks can be created entirely from the keyboard without touching a form. Complementing this, Vikunja ships a WebSocket real-time layer from the start — most simpler self-hosted task managers are polling-only. The license system is also notable: it gates exactly three enterprise features (admin panel, time tracking, audit logs) behind a paid key while leaving all core collaboration, multi-view, API, and import functionality completely free, making the open-source version genuinely complete rather than a stripped-down trial.
Self-Hosting
Vikunja is released under the GNU Affero General Public License v3.0-or-later for all core backend and frontend code, with the optional desktop wrapper licensed under GPL-3.0-or-later. AGPL-3.0 is a strong copyleft license: you can use, modify, and deploy Vikunja commercially for free, but if you distribute a modified version or run it as a network service with modifications, you must release your changes under the same license. For the overwhelming majority of self-hosters — organizations running an unmodified Vikunja for internal use — the AGPL imposes no practical obligation. Integrations and scripts that call the REST API are not derivative works and are not covered by the AGPL.
Running Vikunja yourself means you are responsible for server provisioning, TLS termination, database backups, binary upgrades, and monitoring. The single-binary Docker deployment keeps the operational surface area modest: a small VPS with 1 GB RAM and a reverse proxy is enough for teams of up to a few dozen users. SQLite works well for personal use; teams handling concurrent writes should use PostgreSQL or MySQL. The project publishes detailed upgrade notes for each release, and breaking changes between major versions come with migration scripts. There is no official SLA or enterprise support contract for self-hosted instances, so critical production deployments should budget engineering time for maintenance and incident response.
Vikunja Cloud (vikunja.cloud) is the hosted version maintained by the project author. It adds zero-configuration setup, managed backups, automatic upgrades, and priority support — none of which are available in the self-hosted free tier. Three paid license features — an admin panel for bulk user management, time tracking with reports, and audit logs — are gated behind a license key that works on self-hosted instances as well, so you can pay for those features without migrating to the cloud. For most self-hosted deployments these enterprise features are optional, and the core product covering tasks, projects, multiple views, CalDAV, importers, and the full API is entirely free.
Related Apps
AppFlowy
Productivity · Project Management · Collaboration
The open-source AI workspace that puts your data, your rules — with local LLMs, CRDT collaboration, and full self-hosting built in.
AppFlowy
AGPL 3.0AFFiNE
Productivity · Project Management · Note Taking
Write, draw, and plan in one infinite canvas — the open-source alternative to Notion and Miro that keeps your data yours.
AFFiNE
OtherGitea
Devops · Developer Tools · Project Management
Self-hosted DevOps in a single Go binary — Git hosting, GitHub Actions-compatible CI/CD, and 30+ package registries without any SaaS dependency.