- 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
53 lines
1.2 KiB
Markdown
53 lines
1.2 KiB
Markdown
# 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`.
|
|
|