Skip to content

Phase 1: Walking Skeleton

Choose a tag to compare

@smallchungus smallchungus released this 18 Apr 00:19
· 93 commits to main since this release

First milestone: deployable Go API binary + full test/CI infrastructure. No queue logic yet (that's Phase 2).

What works

  • Single Go binary (cmd/api) exposing /healthz and /version, graceful shutdown on SIGTERM
  • Local dev: docker compose up brings api + postgres + redis online
  • Tests: unit (race-enabled) + integration (real Postgres + Redis via testcontainers-go, no mocks)
  • Lint: golangci-lint v2 with errcheck, govet, ineffassign, staticcheck, unused, gosec, misspell
  • Git hooks: pre-commit (gofmt + vet + short tests) and pre-push (lint + race tests), opt-in via make install-hooks
  • CI: GitHub Actions runs lint + unit + integration + image build on every push and PR
  • K8s manifests authored under deploy/k8s/, validated offline with kubeconform
  • Docker: multi-stage build to distroless/static-debian12:nonroot

Not yet (by design)

  • Queue logic (Phase 2)
  • Gmail/Drive integration (Phase 3)
  • Live deployment to Hetzner (Phase 1.5)
  • Dashboard UI (Phase 4)

Stack

Go 1.25, chi, pgx/v5, go-redis/v9, slog, testcontainers-go, Docker, GitHub Actions, k3s manifests.