Caldo ist eine selbst gehostete Todo-Web-App für Einzelpersonen mit CalDAV/VTODO als führender Datenquelle. Die App ist auf einen einzelnen Go-Prozess ausgelegt und synchronisiert Aufgaben bidirektional mit einem CalDAV-Account, zum Beispiel Nextcloud Tasks.
- Todoist-nahe Bedienung für Self-Hosting
- Aufgaben, Projekte, Labels, Filter und Fälligkeitsdaten
- CalDAV als führende Datenquelle, keine stillen Datenverluste
- Konflikte sichtbar machen und manuell auflösen
- Betrieb als Go-Binary oder mit Docker Compose
Der MVP ist umgesetzt und wird weiter gepflegt. Die maßgeblichen Referenzen sind:
docs/prd.md— Produktanforderungendocs/arch.md— Architektur und Invariantendocs/backlog/— historische Backlog- und Planungsdokumente
- Go 1.26+
- Docker Engine + Docker Compose Plugin für das Referenzdeployment
- Reverse Proxy mit vorgeschalteter Authentifizierung und TLS-Terminierung
- HTTPS-Basis-URL für die Instanz (
BASE_URL) - 32-Byte-Schlüssel als Base64 für
ENCRYPTION_KEY
make build
BASE_URL="https://todos.example.com" ENCRYPTION_KEY="<base64-32-byte-key>" PROXY_USER_HEADER="X-Authentik-Username" DB_PATH="./caldo.db" ./bin/caldodocker compose up -d --buildDie Referenzkonfiguration bindet lokal an 127.0.0.1:8080, nutzt das Volume caldo_data für /data und prüft GET /health.
Pflichtvariablen:
| Variable | Beschreibung |
|---|---|
BASE_URL |
Externe HTTPS-Basis-URL der Instanz |
ENCRYPTION_KEY |
Base64-Schlüssel, der auf exakt 32 Byte decodiert |
PROXY_USER_HEADER |
Headername, über den der Reverse Proxy den Benutzer übergibt |
Optionale Variablen:
| Variable | Default | Beschreibung |
|---|---|---|
LOG_LEVEL |
info |
Loglevel |
PORT |
8080 |
HTTP-Port |
DB_PATH |
/data/caldo.db |
Pfad zur SQLite-Datei |
Beispiel:
BASE_URL=https://todos.example.com
ENCRYPTION_KEY=<base64-encoded-32-byte-key>
PROXY_USER_HEADER=X-Authentik-Username
LOG_LEVEL=info
PORT=8080
DB_PATH=/data/caldo.dbmake build
go test ./...
go test ./... -race
go vet ./...Browser-QA und lokale Staging-Workflows sind in docs/qa/ dokumentiert. Für Setup, Browsertests, Release-Checks, Backup/Restore und Betrieb sind die entsprechenden Runbooks dort verlinkt.
cmd/caldo/— Programmstart und Startup-Sequenzinternal/— Anwendungslogikweb/— statische Assets und Manifestdocs/— Produkt-, Architektur- und Operationsdokumentation
- Nach Änderungen an
.templ-Dateientempl generateausführen und die generierten*_templ.go-Dateien committen. - Migrationen werden über das eingebettete Migrationssystem verwaltet; bereits angewendete Migrationen dürfen nicht geändert werden.
- Alle maßgeblichen Anforderungen und Invarianten stehen in
docs/prd.mdunddocs/arch.md.