feat: implement Havenllo single-board kanban (Go+SQLite backend, Preact/Vite frontend)
Some checks failed
Build and deploy Havenllo / Verify Go and frontend (push) Failing after 7s
Build and deploy Havenllo / Build and push image (push) Has been skipped
Build and deploy Havenllo / Apply and restart Havenllo (push) Has been skipped

- Single fixed 'Haven' board: lists (To do/In progress/Done) + cards, no multi-board
- Go 1.24 backend, CGO-free modernc.org/sqlite, embedded SPA, REST /api
- Preact + Vite + TS frontend, native HTML5 drag-and-drop, optimistic UI, dark Haven theme
- PVC (nfs-client) for SQLite, root container on NFS, simple nginx ingress havenllo.haven
- Dockerfile multi-arch build, Gitea CI via pipeline-actions@main
This commit is contained in:
Hermes
2026-07-14 10:13:51 -03:00
commit 041c3fab4b
44 changed files with 5931 additions and 0 deletions

52
README.md Normal file
View File

@@ -0,0 +1,52 @@
# Havenllo
Havenllo is a small, single-board kanban app for the Haven homelab. It serves a
Preact SPA and a same-origin Go/SQLite API from one binary. On first start it
creates the fixed **To do**, **In progress**, and **Done** columns.
## Local development
Use a writable database path outside the default container location:
```powershell
$env:HAVENLLO_DATABASE_PATH = "$PWD\havenllo.db"
go run ./cmd/havenllo
```
In another terminal, run the frontend development server:
```powershell
Set-Location web
npm ci
npm run dev
```
For the embedded production bundle, run `npm run build` in `web/` before
`go build ./...`.
## Verification
```powershell
go test ./...
Set-Location web; npm ci; npm run build
Set-Location ..; go build ./...
```
## Container and deployment
Build and push the multi-architecture image on `docker-build.haven`:
```sh
docker buildx build --platform linux/amd64,linux/arm64 -t git.ivanch.me/ivanch/havenllo:latest --push .
```
Or push `main` / dispatch the Gitea workflow. Apply the manifest and restart
the deployment:
```sh
kubectl apply -f deploy/havenllo.yaml -n default
kubectl -n default rollout restart deployment/havenllo
```
The app is available internally at `http://havenllo.haven`.