Vikunja is an open-source task management application built for individuals and teams who want full ownership of their data. It solves the problem of fragmented to-do tools by offering a unified, privacy-focused platform with multiple task visualization methods. Designed for self-hosting on your own infrastructure, it’s ideal for privacy-conscious users, developers, and teams avoiding SaaS lock-in.
Built with Go for the backend and Vue.js for the frontend, Vikunja provides a RESTful API, Docker-based deployment, and native binaries. It supports PostgreSQL, MySQL, and SQLite databases, and integrates with existing workflows via importers for Todoist, Trello, and Microsoft To-Do. The AGPLv3 license ensures transparency and community-driven development.
What You Get
- List, Kanban, Gantt, and Table Views - Four distinct task visualization modes to suit different workflows: view tasks as a simple list, drag-and-drop Kanban board, timeline-based Gantt chart, or structured table with custom columns.
- Built-in Task Importers - Directly import projects and tasks from Todoist, Trello, and Microsoft To-Do via the UI, eliminating manual re-entry and enabling seamless migration from other tools.
- Self-Hosting Support - Deploy Vikunja on your own server using Docker, native binaries, or Kubernetes — with full control over data storage, access, and backups.
- Team Collaboration Features - Share projects with team members, assign tasks to individuals, and track progress without leaving the platform — all with role-based permissions.
- AGPLv3 Open Source License - Full access to source code under the AGPLv3 license, allowing inspection, modification, and self-hosting without vendor lock-in or hidden costs.
- Low-Latency UI - Every interaction optimized to complete in under 100ms, with no loading spinners, ensuring a snappy experience even with large task lists.
Common Use Cases
- Running a personal productivity system - A freelancer uses Vikunja to track client deadlines, personal goals, and side projects in a self-hosted environment to avoid cloud data leaks.
- Managing a small development team - A startup team uses Vikunja’s Kanban and Gantt views to plan sprints, assign tasks, and visualize dependencies without relying on Jira or Asana.
- Migrating from Todoist or Trello - A project manager imports 500+ existing tasks from Todoist into Vikunja to regain data ownership and eliminate monthly subscription fees.
- Privacy-focused education institution - A university department deploys Vikunja on-premises to manage research tasks and student assignments while complying with data sovereignty regulations.
Under The Hood
Architecture
- Clean separation of concerns with a Go-based API backend that delegates logic to service and model layers, though module boundaries are not fully explicit
- Dependency injection is implied through a structured command-line entrypoint, suggesting a containerized component initialization pattern
- Configuration is externally managed via hierarchical JSON with environment-aware defaults, adhering to 12-factor principles
- Monolithic Go binary built with Mage and bundled with a Vue.js frontend in a minimal Docker image, indicating tight integration rather than microservices
- Clear polyglot boundaries between the native Go HTTP server and the Vue.js frontend, with well-defined API contracts
Tech Stack
- Go backend leveraging the standard library and Mage for build automation, with a modular service-oriented design
- Vue.js frontend powered by Vite, TypeScript, and Pinia, communicating via a RESTful API
- SQLite as the primary database with built-in migration support, enhanced by CalDAV protocol integration for calendar synchronization
- Docker-based multi-stage builds using Alpine Linux and cross-compilation tooling to produce secure, minimal containers
- Comprehensive deployment tooling including package generation, systemd integration, and hardened container practices
- Internationalization supported via Crowdin with aligned JSON locale files across frontend and backend
Code Quality
- Extensive test coverage spanning unit, component, and end-to-end layers with robust tooling for UI and state validation
- Clear separation of test concerns with reusable factories and utilities that abstract complex setup logic
- Strong type safety enforced through TypeScript interfaces and strict component prop definitions, with type-aware assertions
- Consistent, descriptive naming conventions across code and tests that enhance readability and reduce cognitive load
- Defensive parsing and error handling with comprehensive input validation, though custom error types are absent
- Well-structured CI-ready test architecture with DRY principles, reusable fixtures, and deterministic test scenarios
What Makes It Unique
- Native Tiptap editor integration with real-time filter parsing and custom syntax highlighting for natural language task queries
- Built-in date detection and interactive date pickers embedded directly within rich text filters for seamless in-context editing
- Project and label autocompletion powered by ProseMirror plugins, enabling dynamic entity references without leaving the editor
- Unified model service abstraction that synchronizes data fetching logic between frontend and API layers, reducing boilerplate
- Storybook-based component testing with live controls and router mocking for isolated UI development
- End-to-end filter transformation system that auto-converts visual editor content to API-compatible queries with automatic entity resolution