Vikunja
vikunja.io Web, Android LinuxVikunja is an open-source to-do application. It is suitable for a wide variety of projects, supporting List, Gantt, Table and Kanban views to visualize all tasks in different contexts. For collaboration, it has sharing support via private teams or public links. It can be self-hosted or used as a managed service for a small fee.
- Homepage: vikunja.io
- GitHub: github.com/go-vikunja/vikunja
- Web info: web-check.xyz/results/vikunja.io
Vikunja Source Code
Author
Description
The to-do app to organize your life.
Homepage
https://vikunja.ioLicense
AGPL-3.0
Created
28 Nov 18
Last Updated
26 Feb 26
Latest version
Primary Language
Go
Size
75,646 KB
Stars
3,434
Forks
322
Watchers
3,434
Language Usage
Star History
Top Contributors
-
@kolaente (6007)
-
@renovate[bot] (883)
-
@dpschen (773)
-
@vikunja-bot (111)
-
@Elscrux (35)
-
@Copilot (27)
-
@WofWca (16)
-
@dependabot[bot] (11)
-
@JohnStarich (10)
-
@maggch97 (9)
-
@adrinux (6)
-
@profi248 (5)
-
@jyte (4)
-
@davidangel (4)
-
@shilch (4)
-
@jtojnar (4)
-
@freaktechnik (4)
-
@andreymal (4)
-
@eljef (3)
-
@LucaBernstein (3)
-
@mithileshgupta12 (3)
-
@NeoHuncho (3)
-
@rhclayto (3)
-
@Viehlieb (3)
-
@zapp88 (2)
-
@azymondrian (2)
-
@vlasov-y (2)
-
@CrazyWolf13 (2)
-
@MGChecker (2)
-
@Quiwy (2)
Recent Commits
-
renovate[bot] (25 Feb 26)
chore(deps): update dependency autoprefixer to v10.4.26
-
renovate[bot] (25 Feb 26)
chore(deps): update dependency stylelint to v17.4.0
-
Frederick [Bot] (25 Feb 26)
[skip ci] Updated swagger docs
-
kolaente (25 Feb 26)
chore: v2.0.0 release preparations
-
kolaente (25 Feb 26)
feat(dev): print commit statistics during tag-release
-
kolaente (25 Feb 26)
feat(frontend): use Password component in password update settings Replace FormField with Password component for new password input: - Provides real-time validation feedback (8-72 char requirement) - Remove redundant password confirmation field - Disable save button when form is invalid (validation errors or empty fields)
-
kolaente (25 Feb 26)
test(api): add tests for password validation in reset and update flows - Add httpCodeGetter interface to handle ValidationHTTPError in test helper - Add test case for password too short in password reset - Add test case for password too short in password update - Fix existing test data to use valid 8+ char passwords
-
kolaente (25 Feb 26)
feat(api): enforce password validation on reset and update flows Add bcrypt_password validation to password reset and update endpoints: - Add validation tag to PasswordReset.NewPassword struct field - Add validation tag to UserPassword.NewPassword struct field - Add c.Validate() calls in both handlers - Fix off-by-one error in bcrypt_password validator (use <= 72 not < 72) Password requirements: min 8 chars, max 72 bytes (bcrypt limit)
-
kolaente (25 Feb 26)
fix: detect and fail on oversized zip entries instead of silent truncation Replace io.LimitReader with a new readZipEntry helper that reads one extra byte to detect when content exceeds maxZipEntrySize (500MB). This prevents silent data corruption where partial file bytes would be stored as if the upload succeeded. The import now fails with ErrFileTooLarge instead of accepting truncated content for attachments and background blobs.
-
kolaente (24 Feb 26)
fix(restore): extract preValidateTableData to reduce cyclomatic complexity
-
kolaente (24 Feb 26)
fix(auth): use checked type assertions for all JWT claims
-
kolaente (24 Feb 26)
fix(restore): pre-validate all table data JSON before wiping database
-
kolaente (24 Feb 26)
fix(restore): limit zip entry read size to prevent decompression bombs
-
kolaente (24 Feb 26)
fix(attachments): use mime.FormatMediaType for Content-Disposition header
-
kolaente (24 Feb 26)
fix(db): validate table names and quote identifiers in raw SQL
-
kolaente (24 Feb 26)
fix(migration): use checked type assertion for background file id
-
kolaente (24 Feb 26)
fix(migration): limit zip entry read size to prevent decompression bombs
-
kolaente (24 Feb 26)
fix(migration): reject zip entries with path traversal in vikunja-file import
-
kolaente (24 Feb 26)
refactor(utils): extract ContainsPathTraversal to shared utils package
-
kolaente (24 Feb 26)
fix(restore): validate migration data before wiping database Move archive validation (migration file existence and slice bounds check) before the database wipe. Previously a malformed archive would first destroy the database and then panic, leaving the instance in an irrecoverable state with total data loss. Now the migration data is fully parsed and validated before any destructive operations occur.
-
kolaente (24 Feb 26)
fix(restore): validate database file names in zip archive Check that database entries in the zip have a .json suffix and a non-empty base name before slicing the extension off. This prevents a panic from index-out-of-range when the filename is too short. Also use TrimPrefix instead of ReplaceAll for correctness.
-
kolaente (24 Feb 26)
fix(restore): sanitize config file path to prevent zip slip Use filepath.Base() on the config file name from the zip archive before passing it to os.OpenFile, ensuring the config file is always written to the current directory regardless of what path the zip entry claims to have.
-
kolaente (24 Feb 26)
fix(restore): reject zip entries with path traversal sequences Validate all zip entry names during restore to reject entries containing directory traversal sequences (e.g. ../../../pwned.txt). This prevents a Zip Slip attack where a malicious archive could write files outside the intended extraction directory.
-
kolaente (25 Feb 26)
feat(cli): reorganize repair commands under unified 'vikunja repair' parent (#2300) Consolidate four scattered repair/maintenance CLI commands into a unified `vikunja repair` parent command with subcommands.
-
kolaente (25 Feb 26)
refactor: remove typesense support Typesense was an optional external search backend. This commit fully removes the integration, leaving the database searcher as the only search implementation. Changes: - Delete pkg/models/typesense.go (core integration) - Delete pkg/cmd/index.go (CLI command for indexing) - Simplify task search to always use database searcher - Remove Typesense event listeners for task sync - Remove TypesenseSync model registration - Remove Typesense config keys and defaults - Remove Typesense doctor health check - Remove Typesense initialization from startup - Clean up benchmark test - Add migration to drop typesense_sync table - Remove golangci-lint suppression for typesense.go - Remove typesense-go dependency
-
kolaente (25 Feb 26)
fix: prevent XSS via innerHTML injection in link edit prompt Replace innerHTML with DOM API calls in inputPrompt.ts. The oldValue parameter (sourced from a link's href attribute in the TipTap editor) was interpolated directly into an HTML string, allowing stored XSS if an attacker crafted a malicious href. Using document.createElement and setting .value as a property ensures the value is never parsed as HTML.
-
kolaente (25 Feb 26)
fix: prevent reflected HTML injection via filter URL parameter TipTap's setContent() parses strings as HTML via DOMParser, allowing crafted ?filter= URL parameters to inject SVG phishing buttons, anchor tags, and formatted content into the trusted UI. Use ProseMirror JSON document format instead of raw strings so the filter value is always set as a text node, bypassing HTML parsing entirely.
-
kolaente (25 Feb 26)
feat: add repair-projects CLI command
-
kolaente (25 Feb 26)
feat: add RepairOrphanedProjects function
-
kolaente (25 Feb 26)
test: add failing tests for RepairOrphanedProjects
Vikunja Website
Website
The open-source, self-hostable to-do app | Vikunja
Vikunja - the open-source to-do app to organize your life.
Redirects
Does not redirect
Security Checks
All 66 security checks passed
Server Details
- IP Address 116.203.32.97
- Hostname static.97.32.203.116.clients.your-server.de
- Location Nuremberg, Bayern, Germany, EU
- ISP Hetzner Online GmbH
- ASN AS24940
Associated Countries
-
US -
DE
Safety Score
Website marked as safe
100%
Blacklist Check
vikunja.io was found on 0 blacklists
- ThreatLog
- OpenPhish
- PhishTank
- Phishing.Database
- PhishStats
- URLhaus
- RPiList Not Serious
- AntiSocial Blacklist
- PhishFeed
- NABP Not Recommended Sites
- Spam404
- CRDF
- Artists Against 419
- CERT Polska
- PetScams
- Suspicious Hosting IP
- Phishunt
- CoinBlockerLists
- MetaMask EthPhishing
- EtherScamDB
- EtherAddressLookup
- ViriBack C2 Tracker
- Bambenek Consulting
- Badbitcoin
- SecureReload Phishing List
- Fake Website Buster
- TweetFeed
- CryptoScamDB
- StopGunScams
- ThreatFox
- PhishFort
Website Preview
Vikunja Docker
Container Info
Vikunja
The to-do app to organize your life.| Before use create custom template and Edit: VIKUNJA_SERVICE_FRONTENDURL , VIKUNJA_API_URL & VIKUNJA_SERVICE_JWTSECRET
Run Command
docker run -d \
-e PUID=${PUID} \
-e PGID=${PGID} \
-e PORT=${PORT} \
undefined Compose File
version: 3.8
services:
vikunja:
image: undefined
ports:
environment:
PUID: 1000
PGID: 1000
PORT:
volumes:
restart: undefined Environment Variables
- Var Name Default
- PUID 1000
- PGID 1000
- PORT null
Vikunja Reviews
More Cloud Productivity Suites
-
A zero knowledge cloud productivity suite. Provides Rich Text, Presentations, Spreadsheets, Kanban, Paint a code editor and file drive. All notes and user content, are encrypted by default, and can only be accessed with specific URL. The main disadvantage, is a lack of Android, iOS and desktop apps - CryptPad is entirely web-based. You can use their web service, or you can host your own instance. Price for hosted: free for 50mb or $5/ month for premium.
-
A complete self-hosted productivity platform, with a strong community and growing app store. NextCloud is similar to (but arguably more complete than) Google Drive, Office 365 and Dropbox. Clear UI and stable native apps across all platforms, and also supports file sync. Supports encrypted files, but you need to configure this yourself. Fully open source.
-
A platform providing online services based on principles of freedom, privacy, federation and decentralization. It is an implementation of NextCloud, with strong encryption configured - it is widely used by journalists, activists and whistle-blowers. It is free to use, but there have been reported reliability issues of the cloud services.
-
An open source platform for self-hosting web apps. Once you've set it up, you can install items from the Sandstorm App Market with -click, similar to NextCloud in terms of flexibility.
About the Data: Vikunja
API
You can access Vikunja's data programmatically via our API.
Simply make a GET request to:
https://api.awesome-privacy.xyz/productivity/cloud-productivity-suites/vikunja The REST API is free, no-auth and CORS-enabled. To learn more, view the Swagger Docs or read the API Usage Guide.
About the Data
Beyond the user-submitted YAML you see above, we also augment each listing with additional data dynamically fetched from several sources. To learn more about where the rest of data included in this page comes from, and how it is computed, see the About the Data section of our About page.
Share Vikunja
Help your friends compare Cloud Productivity Suites, and pick privacy-respecting software and services.
Share Vikunja and Awesome Privacy with your network!