Tech stack quick reference
SHC is a Go CLI + daemon with no web frontend. See architecture/core/tech-stack for the full technical specification.
Quick Reference
Section titled “Quick Reference”| Component | Choice | Notes |
|---|---|---|
| Language | Go 1.25+ | Statically linked binaries (shc + shcd) |
| Build toolchain | asdf, pure Go | CGO_ENABLED=0; rqlited bundled at package time |
| CLI Framework | spf13/cobra | Standard Go command tree |
| Terminal Output | charmbracelet/bubbletea + lipgloss | Bubbletea TUI for HUD, lipgloss for styling |
API & Database
Section titled “API & Database”| Component | Choice | Notes |
|---|---|---|
| API Framework | go-chi | Lightweight chi router + middleware |
| Database | sqlite / rqlite | Pure-Go modernc sqlite single-node; raft-replicated rqlite in clusters |
| DB driver | database/sql | ”sqlite” (modernc) single-node; “shc-rqlite” in cluster mode |
| Migrations | Atlas | Declarative schema in migrations/*.sql |
Cluster & HA
Section titled “Cluster & HA”| Component | Choice | Notes |
|---|---|---|
| Distributed DB | rqlite | SQLite with Raft consensus (external rqlited process) |
| Inter-node Comms | mTLS | Ports 4001-4003 |
| Container Runtime | Swarm | HA mode with automatic failover |
Code Quality
Section titled “Code Quality”| Tool | Purpose |
|---|---|
| gofmt | Code formatting |
| golangci-lint | Lint suite (forbidigo, gocritic, staticcheck, errcheck, …) |
| go test | Unit + integration testing |
| Bats | E2E + bash-level testing |
| shfmt | Shell script formatting |
NOT Used
Section titled “NOT Used”| Technology | Reason |
|---|---|
| React/Vue/Svelte | No web UI |
| CSS/Tailwind | No frontend |
| JavaScript/TS | Pure Go |
| PostgreSQL/MySQL | SQLite/rqlite sufficient |
| Kubernetes | Docker Compose focused |
shc@docs:~$