This repository is the Marionette organization’s independent migration of Vikunja, the open-source task manager. Thank you to the Vikunja maintainers and contributors for making this application open source and for the work behind its features, design and documentation. Please consider supporting Vikunja.
The goal is to replace the Vue frontend with Marionette 5.0.0-rc.2, while preserving Vikunja’s appearance and user-visible behavior. The Go backend, upstream assets, translations, models and services are retained where reusable. This is an experimental migration and development case study, independent of the upstream project; upstream endorsement is not implied.
The current RC2 implementation contains no Vue runtime, imports or dependencies in its shipped frontend. This is not a completion claim. The final frozen checkpoint passed 775 unit tests, 24 paired six-surface cases and 40 paired notice cases, with development/production graph audits. The full regression passed 477 of 480 cases, with exactly three preserved baseline failures (bot re-enable and two mobile rich-task bottom markers), zero skipped/flaky and no new failures. Fresh matched three-build n20 measurements passed both datasets; see results and limits. Publication uses pinned Vikunja baseline 5d22d730, intentionally replacing newer fork-main file changes; existing main was preserved and verified under backup/upstream-main-before-rc2-20261007, then reviewed snapshot e32efc1d was published with an exact-SHA guarded non-force update. Broader route/device/accessibility parity and licensed-backend, external-provider, Electron and operating-system IME verification remain incomplete. See the final acceptance and publication record.
The six-reference UI follow-up has separate focused verification. The subsequent scoped native recovery/presentation correction fixes those admin failures and notification announcement/fade differences, with778units and82/84browser cases; its two failures are unchanged Vue-baseline mobile assertions. Earlier benchmark and aggregate results remain pinned to their measured frontend; they were not rerun for the label correction.
A frozen original Vue version and historical tests are kept as references. The clean RC2 branch starts from pinned Vue upstream. See the migration record, route/feature inventory, architecture review, acceptance ledger and production comparison and benchmark protocol. Benchmarks measure bounded workloads and do not certify parity or general performance superiority.
Use Node 24 or newer and the pnpm version pinned in frontend/package.json; the Go version is declared in go.mod. Follow Vikunja’s development setup for backend configuration and Mage installation. Use a local development/test backend rather than production data.
cd frontend
pnpm install --frozen-lockfile
pnpm devConfigure the local API address in the frontend’s API settings. For a production frontend build, run pnpm build from frontend/.
# From frontend/
pnpm typecheck
pnpm lint
pnpm lint:styles
pnpm test:unit --run
# From the repository root; Mage manages an isolated test backend
mage test:e2e '--config=../migration/acceptance/architecture-logo.config.ts'The focused command runs representative logo, reader, draft and visual checks. The full migration/acceptance/playwright.config.ts suite additionally requires the local OpenID provider and public-team fixture configuration described in the acceptance ledger; licensed cases require an enabled test backend. Save test output and preserve failed assertions/results. Original frontend test suites remain available through their existing configuration. Upstream project information, attribution and license notices are preserved below; those upstream links describe Vikunja itself rather than a production release of this migration.
The task manager you actually own.
If Vikunja is useful to you, please consider supporting the project. You can buy a coffee, sponsor on GitHub or buy a sticker pack. We're also offering a hosted version of Vikunja if you want a hassle-free solution for yourself or your team. If you or your company needs admin panel, audit logs or time tracking, check out Vikunja Pro.
Note
For the development of Vikunja, we're using LLM-Assisted coding tools in various parts of the codebase. Most contributions made @tink-bot are built that way.
If you find any security-related issues you don't want to disclose publicly, please use the contact information on our website.
See the features page on our website for a more exhaustive list or try it on try.vikunja.io!
All docs can be found on the Vikunja home page.
See the roadmap (hosted on Vikunja!) for more!
Please check out the contribution guidelines on the website.
Most of this repository is licensed under AGPL‑3.0‑or‑later.
The contents of desktop/ are licensed under
GPL‑3.0‑or‑later.
Background images from Unsplash are distributed under the Unsplash License. The license requires giving credit to the photographer and Unsplash. See Unsplash’s terms for more information.