Vikunja is a self-hosted, open-source to-do application built in Go with a Vue.js frontend, designed to help individuals and teams organize tasks without relying on third-party cloud services. It offers a clean, intuitive interface for managing to-do lists, projects, and deadlines while providing full control over data through self-hosting. With support for a RESTful API, multi-user collaboration, and integration with external services, Vikunja is ideal for privacy-conscious users, developers, and small teams seeking an alternative to proprietary task managers like Todoist or Microsoft To Do.
The app is designed for users who value transparency, customization, and data ownership. Whether you’re managing personal errands or coordinating a small team’s workflow, Vikunja provides the tools to stay organized without compromising on security or control.
What You Get
- Self-hosted task management - Deploy Vikunja on your own server using Docker, binary, or source build; full control over data and infrastructure without vendor lock-in.
- RESTful API - Full-featured API for programmatic access to tasks, projects, and users; supports authentication via JWT and OAuth2 for integration with custom tools.
- Multi-user support - Create teams, assign tasks to members, and manage permissions for collaborative project management.
- Cross-platform sync - Sync tasks across web, mobile (via third-party apps), and desktop clients using the same backend.
- Docker deployment - Official Docker image available with pre-configured setup; use docker run or docker-compose for quick deployment.
- Vue.js frontend - Modern, responsive web interface with real-time updates and intuitive task management workflows.
Common Use Cases
- Building a personal productivity system - A developer uses Vikunja to track daily coding tasks, bug fixes, and learning goals without relying on cloud-based apps like Notion or Todoist.
- Managing a small team’s project backlog - A startup uses Vikunja to assign developer tasks, set deadlines, and track progress across multiple projects using shared boards and team permissions.
- Privacy-focused task tracking → Self-hosted solution - A user concerned about data privacy migrates from Todoist to Vikunja, hosting it on a private VPS and encrypting the database with their own keys.
- DevOps teams managing internal workflows - Operations teams use Vikunja’s API to auto-create tasks from monitoring alerts or CI/CD pipeline failures, integrating with custom scripts and webhooks.
Under The Hood
Vikunja is a self-hosted, extensible task management platform designed for flexibility and developer experience. It combines a modern Go backend with a Vue.js frontend, supporting plugin architecture and multi-language extensibility to enable customization at scale.
Architecture
Vikunja adopts a monolithic architecture with clear separation between frontend and backend components, emphasizing layered design and component-based structure.
- The system uses MVC and service-oriented patterns to organize functionality across modules such as task management and user authentication
- Frontend components are structured with standardized data flows and model-view bindings for predictable interaction
- Backend APIs are modular and well-defined, enabling scalable integration and maintainability
- Component interactions are managed through consistent data models and API-driven communication
Tech Stack
Vikunja leverages a dual-language tech stack with Go and Vue.js, ensuring modern development practices and extensibility across both layers.
- The backend is built with Go, offering performance and reliability for API handling and data processing
- The frontend uses Vue 3 with TypeScript, Pinia, and Tailwind CSS to support a responsive and maintainable UI
- Key tools include Vite for frontend building, Docker for containerization, and Mage for Go build automation
- Comprehensive testing is supported by Playwright, Vitest, Histoire, and Sentry for end-to-end validation and error monitoring
Code Quality
Code quality in Vikunja is generally solid, with a strong emphasis on automated testing and structured error handling.
- The codebase includes extensive test coverage across modules, ensuring robust validation and reliability
- Error handling is consistently implemented with structured exception management and try/catch patterns
- Code linting and type safety are enforced through TypeScript and linting tools to maintain consistency
- Some technical debt is present in duplicated logic and inconsistent code patterns that could be improved
What Makes It Unique
Vikunja stands out through its unique blend of monorepo frontend and Go backend, offering a modular and extensible architecture.
- The platform supports plugin architecture, enabling developers to extend functionality without modifying core code
- A dual-language approach allows for high performance in backend operations and a rich, responsive frontend experience
- Self-hosted deployment model provides users with control over their data and infrastructure
- Extensive use of modern frontend frameworks and tooling enhances developer productivity and maintainability