Official Vikunja import
Go to file
kolaente 98f2893ffe fix(db): use WAL mode for SQLite and temp file for ephemeral databases
Three SQLite connection issues are fixed:

1. The refactoring in 26c0f71 accidentally dropped _busy_timeout from
   the file-based SQLite connection string. Without it, concurrent
   transactions get instant SQLITE_BUSY errors instead of waiting.

2. _txlock=immediate forced ALL transactions (including reads) to
   acquire the write lock at BEGIN, serializing all database access.
   WAL mode makes this unnecessary: readers use snapshots and never
   block writers, so the SHARED-to-RESERVED deadlock cannot occur.

3. In-memory shared cache (file::memory:?cache=shared) uses table-level
   locking where _busy_timeout is ineffective (returns SQLITE_LOCKED,
   not SQLITE_BUSY) and concurrent connections deadlock. Replace with a
   temp file using WAL mode for proper concurrency.
2026-03-03 10:41:19 +01:00
.claude chore(dev): add prepare worktree command to mage 2026-01-24 18:32:23 +01:00
.github feat: add dependency diff and provenance GitHub Action for PRs 2026-02-17 12:00:31 +01:00
.vscode feat(dev): add frontend and api to launch config 2025-06-19 14:54:08 +02:00
.zed fix(dev): zed frontend task 2025-06-26 12:32:04 +02:00
build fix(release): use openrc for alpine (#1016) 2025-06-25 10:40:11 +00:00
contrib feat: improve clean-translations script (#964) 2025-06-16 19:31:41 +00:00
desktop chore(deps): upgrade transitive minimatch from 10.2.1 to 10.2.3+ 2026-02-26 23:33:39 +01:00
examples/plugins/example fix(deps): update module github.com/labstack/echo/v4 to v5 (#2131) 2026-01-24 20:38:32 +01:00
frontend fix(nav): project drag handle position 2026-03-02 11:38:45 +01:00
pkg fix(db): use WAL mode for SQLite and temp file for ephemeral databases 2026-03-03 10:41:19 +01:00
rest chore: add missing eof newlines (#969) 2025-06-17 09:11:32 +00:00
.devcontainer.json chore(dev): use latest devenv docker container for devcontainer 2025-07-02 20:17:29 +02:00
.dockerignore Revert "feat: improve docker layers (#803)" 2025-05-21 10:18:57 +02:00
.editorconfig chore(dev): insert final newline 2025-05-23 11:56:50 +02:00
.envrc chore: add missing eof newlines (#969) 2025-06-17 09:11:32 +00:00
.gitignore fix(db): prevent SQLite "database is locked" errors under concurrent writes 2026-03-02 12:37:55 +01:00
.golangci.yml refactor: remove typesense support 2026-02-25 12:15:28 +01:00
.opensourcefinder-verify chore: add opensourcefinder verification 2026-02-26 17:12:26 +01:00
AGENTS.md docs: instruct agents to save test output instead of re-running tests 2026-02-25 09:22:14 +01:00
CHANGELOG.md chore: v2.1.0 release preparations 2026-02-27 15:00:53 +01:00
CLAUDE.md docs: add AGENTS.md file with instructions for AI coding agents 2025-06-10 14:23:55 +02:00
CONTRIBUTING.md chore: update contributing guidelines 2023-10-10 17:48:10 +02:00
CRUSH.md docs: add link for crus coding agent instructions 2025-08-01 16:52:30 +02:00
Dockerfile fix: add /tmp directory to Docker image to fix data export 2026-03-02 17:15:20 +01:00
LICENSE fix: correct license header references (#882) 2025-06-10 12:18:38 +02:00
README.md chore: v2.1.0 release preparations 2026-02-27 15:00:53 +01:00
cliff.toml fix: add \n between scoped and unscoped commits in git cliff config 2024-11-08 11:19:50 +01:00
code-header-template.txt fix: correct license header references (#882) 2025-06-10 12:18:38 +02:00
conductor.json chore(dev): add conductor config 2025-12-07 23:02:19 +01:00
config-raw.json refactor: remove typesense support 2026-02-25 12:15:28 +01:00
crowdin.yml chore: add missing eof newlines (#969) 2025-06-17 09:11:32 +00:00
devenv.lock chore(deps): update devenv 2025-12-20 19:13:51 +01:00
devenv.nix feat: migrate cypress e2e tests to playwright (#1739) 2025-11-27 16:34:48 +01:00
devenv.yaml feat: switch from nix flakes to devenv 2024-08-12 12:17:31 +02:00
go.mod refactor: remove typesense support 2026-02-25 12:15:28 +01:00
go.sum refactor: remove typesense support 2026-02-25 12:15:28 +01:00
magefile.go feat(dev): print commit statistics during tag-release 2026-02-25 13:45:04 +01:00
main.go fix: correct license header references (#882) 2025-06-10 12:18:38 +02:00
nfpm.yaml fix(release): use openrc for alpine (#1016) 2025-06-25 10:40:11 +00:00
publiccode.yml docs: update publiccode.yml [skip ci] 2024-02-25 14:06:23 +01:00
renovate.json chore(renovate): group playwright npm package and docker image together 2026-02-11 09:56:20 +01:00
tools.go chore(deps): update golangci-lint to 2.6.0 (#1737) 2025-10-31 17:28:52 +00:00
tsconfig.json fix: correct trailing comma in tsconfig (#970) 2025-06-26 12:30:24 +00:00
vikunja.initd fix(release): use openrc for alpine (#1016) 2025-06-25 10:40:11 +00:00
vikunja.service chore: add missing eof newlines (#969) 2025-06-17 09:11:32 +00:00

README.md

Build Status License: AGPL-3.0-or-later Install Docker Pulls Swagger Docs Go Report Card

Vikunja

The Todo-app to organize your life.

If Vikunja is useful to you, please consider buying me a coffee, sponsoring me on GitHub or buying a sticker pack. I'm also offering a hosted version of Vikunja if you want a hassle-free solution for yourself or your team.

Table of contents

Security Reports

If you find any security-related issues you don't want to disclose publicly, please use the contact information on our website.

Features

See the features page on our website for a more exhaustive list or try it on try.vikunja.io!

Docs

All docs can be found on the Vikunja home page.

Roadmap

See the roadmap (hosted on Vikunja!) for more!

Contributing

Please check out the contribution guidelines on the website.

License

Most of this repository is licensed under AGPL3.0orlater. The contents of desktop/ are licensed under GPL3.0orlater.

Unsplash Images

Background images from Unsplash are distributed under the Unsplash License. The license requires giving credit to the photographer and Unsplash. See Unsplashs terms for more information.