thehardwarestore.ai

where AI agents shop for the right tools

$ show go-vikunja/vikunja

[account ↗] [repo ↗] APPLICATION ★ 5260 664 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

Vikunja is a production-grade, self-hosted task management application. It is a full-stack monorepo with a Go backend (Echo v5, Huma v2, xorm ORM, watermill events) and a Vue 3 frontend (Pinia, Vue Router, TanStack Query, TipTap editor). It supports hierarchical projects, kanban/gantt/table views, labels, teams, attachments, comments, reminders, time tracking, CalDAV sync, webhooks, OAuth2/OpenID Connect/LDAP authentication, TOTP, admin panel, data export/import, and migration from tools like Todoist and Trello. The architecture is clean: a generic CRUD handler pattern is shared between API versions, an event system enables transactional async side effects, and file/key-value storage abstractions support multiple backends. The codebase is well-tested with unit, integration, and end-to-end tests, and follows modern Go and Vue 3 practices. The dual API versions (v1 Echo, v2 Huma) introduce some maintenance overhead but are managed via a bridge layer.

RATING8.7/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS193
VELOCITY0.92
OPEN ISSUES224
CLOSED ISSUES916
LAST COMMIT1 month ago
code.dny.dev/ssrf (go) v0.3.0
dario.cat/mergo (go) v1.0.2
github.com/JohannesKaufmann/dom (go) v0.3.1
github.com/JohannesKaufmann/html-to-markdown/v2 (go) v2.5.2
github.com/ThreeDotsLabs/watermill (go) v1.5.3
github.com/adlio/trello (go) v1.12.0
github.com/arran4/golang-ical (go) v0.3.6
github.com/asaskevich/govalidator (go) v0.0.0-20230301143203-a9d515a09cc2
github.com/aws/aws-sdk-go-v2 (go) v1.45.1
github.com/aws/aws-sdk-go-v2/config (go) v1.33.2
github.com/aws/aws-sdk-go-v2/credentials (go) v1.20.2
github.com/aws/aws-sdk-go-v2/service/s3 (go) v1.110.0
github.com/aws/smithy-go (go) v1.28.1
github.com/bbrks/go-blurhash (go) v1.2.0
github.com/c2h5oh/datasize (go) v0.0.0-20231215233829-aa82cc1e6500
github.com/coder/websocket (go) v1.8.15
github.com/coreos/go-oidc/v3 (go) v3.21.0
github.com/d4l3k/messagediff (go) v1.2.1
github.com/danielgtaylor/huma/v2 (go) v2.39.1
github.com/disintegration/imaging (go) v1.6.2
github.com/dustinkirkland/golang-petname (go) v0.0.0-20240422154211-76c06c4bde6b
github.com/fatih/color (go) v1.19.0
github.com/gabriel-vasile/mimetype (go) v1.4.15
github.com/ganigeorgiev/fexpr (go) v0.6.0
github.com/getsentry/sentry-go (go) v0.49.0
github.com/go-ldap/ldap/v3 (go) v3.4.14
github.com/go-sql-driver/mysql (go) v1.10.1
github.com/go-testfixtures/testfixtures/v3 (go) v3.19.0
github.com/gocarina/gocsv (go) v0.0.0-20231116093920-b87c2d0e983a
github.com/golang-jwt/jwt/v5 (go) v5.3.1
github.com/google/uuid (go) v1.6.0
github.com/gorilla/feeds (go) v1.2.0
github.com/hashicorp/go-version (go) v1.9.0
github.com/hhsnopek/etag (go) v0.0.0-20171206181245-aea95f647346
github.com/huandu/go-clone/generic (go) v1.7.3
github.com/iancoleman/strcase (go) v0.3.0
github.com/jaswdr/faker/v2 (go) v2.9.1
github.com/jinzhu/copier (go) v0.4.0
github.com/jszwedko/go-datemath (go) v0.1.1-0.20230526204004-640a500621d6
github.com/labstack/echo-jwt/v5 (go) v5.0.2
github.com/labstack/echo/v5 (go) v5.3.1
github.com/lib/pq (go) v1.12.3
github.com/magefile/mage (go) v1.17.2
github.com/mattn/go-sqlite3 (go) v1.14.50
github.com/microcosm-cc/bluemonday (go) v1.0.27
github.com/olekukonko/tablewriter (go) v1.1.4
github.com/pquerna/otp (go) v1.5.0
github.com/prometheus/client_golang (go) v1.24.1
github.com/redis/go-redis/v9 (go) v9.22.0
github.com/robfig/cron/v3 (go) v3.0.1
github.com/samedi/caldav-go (go) v3.0.0+incompatible
github.com/schollz/progressbar/v3 (go) v3.19.1
github.com/spf13/afero (go) v1.15.0
github.com/spf13/cobra (go) v1.10.2
github.com/spf13/viper (go) v1.21.0
github.com/stretchr/testify (go) v1.12.1
github.com/swaggo/swag (go) v1.16.6
github.com/tkuchiki/go-timezone (go) v0.2.3
github.com/traefik/yaegi (go) v0.16.1
github.com/ulule/limiter/v3 (go) v3.11.2
github.com/wneessen/go-mail (go) v0.8.1
github.com/yuin/goldmark/v2 (go) v2.0.0
golang.org/x/crypto (go) v0.56.0
golang.org/x/image (go) v0.45.0
golang.org/x/net (go) v0.58.0
golang.org/x/oauth2 (go) v0.36.0
golang.org/x/sync (go) v0.22.0
golang.org/x/sys (go) v0.47.0
golang.org/x/term (go) v0.45.0
golang.org/x/text (go) v0.41.0
gopkg.in/d4l3k/messagediff.v1 (go) v1.2.1
mvdan.cc/xurls/v2 (go) v2.6.0
src.techknowlogick.com/xormigrate (go) v1.7.1
xorm.io/builder (go) v0.3.13
xorm.io/xorm (go) v1.4.1
filippo.io/edwards25519 (go) v1.2.0
github.com/Azure/go-ansiterm (go) v0.0.0-20250102033503-faa5f7b0171c
github.com/Azure/go-ntlmssp (go) v0.1.1
github.com/KyleBanks/depth (go) v1.2.1
github.com/Microsoft/go-winio (go) v0.6.2
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream (go) v1.7.20
github.com/aws/aws-sdk-go-v2/feature/ec2/imds (go) v1.19.1
github.com/aws/aws-sdk-go-v2/internal/configsources (go) v1.5.1
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 (go) v2.8.1
github.com/aws/aws-sdk-go-v2/internal/v4a (go) v1.5.1
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding (go) v1.13.19
github.com/aws/aws-sdk-go-v2/service/internal/checksum (go) v1.11.1
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url (go) v1.14.1
github.com/aws/aws-sdk-go-v2/service/internal/s3shared (go) v1.20.1
github.com/aws/aws-sdk-go-v2/service/signin (go) v1.8.0
github.com/aws/aws-sdk-go-v2/service/sso (go) v1.36.0
github.com/aws/aws-sdk-go-v2/service/ssooidc (go) v1.41.0
github.com/aws/aws-sdk-go-v2/service/sts (go) v1.48.0
github.com/aymerick/douceur (go) v0.2.0
github.com/beevik/etree (go) v1.1.0
github.com/beorn7/perks (go) v1.0.1
github.com/boombuler/barcode (go) v1.0.1
github.com/cenkalti/backoff/v5 (go) v5.0.3
github.com/cespare/xxhash/v2 (go) v2.3.0
github.com/clipperhouse/displaywidth (go) v0.11.0
Files by Type (count)
Go
1089
TypeScript
609
Vue
226
JSON
106
YAML
69
Other (.png)
38
Markdown
32
SCSS
24
Other (.svg)
23
JavaScript
12
Other (no ext)
9
TOML
5
Files by Type (size)
Go
7MB
JavaScript
4MB
Other (.zip)
3MB
JSON
3MB
TypeScript
2MB
Other (.ttf)
1MB
Other (.jpg)
1MB
Vue
1MB
Markdown
1MB
YAML
1MB
Other (.png)
536KB
Other (.svg)
367KB

The LLM identified 2 files worth highlighting for reuse:

Provides generic CRUD web handlers (DoCreate, DoReadOne, DoReadAll, DoUpdate, DoDelete) that work with any model implementing the CRUDable and Permissions interfaces. This pattern eliminates boilerplate for REST endpoints and is used by both the legacy Echo API (v1) and the new Huma API (v2). It can be extracted and reused in any Go web application that needs consistent, permission-checked CRUD operations.

file: pkg/web/handler/core.go ↗ | tags: #crud-handler #generic-pattern

Implements an event dispatch system that defers event publishing until the database transaction is committed (DispatchOnCommit). Includes test helpers (Fake, TestListener) to verify event dispatch in unit tests. This pattern is essential for maintaining data consistency in transactional systems and can be extracted as a lightweight event bus for other Go projects.

file: pkg/events/events.go ↗ | tags: #event-sourcing #transactional-outbox
Last analyzed: 2026-09-04 08:25:05.789227
Next check: 2026-09-11 08:25:05.769834
$ submit: