---
obj: application
website: https://vikunja.io
---

# Vikunja
open-source, self-hostable to-do app.

![Screenshot](./vikunja.webp)

## Features
- Tasks with Labels, Relations, Priorities, Due Dates, Attachments and Delegations
- Organizing tasks into projects with list, gantt, kanban or table view
- Support for teams and assigning tasks to members.

## Docker Compose
```yaml
version: '3'

services:
  db:
    image: mariadb:10
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_USER: vikunja
      MYSQL_PASSWORD: password
      MYSQL_DATABASE: vikunja
    volumes:
      - ./db:/var/lib/mysql
    restart: unless-stopped
  api:
    image: vikunja/api
    environment:
      VIKUNJA_DATABASE_HOST: db
      VIKUNJA_DATABASE_PASSWORD: password
      VIKUNJA_DATABASE_TYPE: mysql
      VIKUNJA_DATABASE_USER: vikunja
      VIKUNJA_DATABASE_DATABASE: vikunja
      VIKUNJA_SERVICE_JWTSECRET: password
      VIKUNJA_SERVICE_FRONTENDURL: https://domain.com/
      VIKUNJA_SERVICE_ENABLEREGISTRATION: "false"
    ports:
      - 3456:3456
    volumes:
      - ./files:/app/vikunja/files
    depends_on:
      - db
    restart: unless-stopped
  frontend:
    image: vikunja/frontend
    ports:
      - 3457:80
    environment:
      VIKUNJA_API_URL: https://domain.com/api/v1
    restart: unless-stopped
```

The API Service needs to be reachable at `VIKUNJA_API_URL`.
