Files
where_woof/docs/TOOLS.md

3.0 KiB

Where Woof — Toolchain

Everything used to build and run the project, with where it fits.

Product stack (public site — "GOAT")

Tool Version Used for
Go 1.26 Frontend: stdlib net/http (no framework), html/template, Go 1.22+ ServeMux routing
HTMX 1.9.12 Inline editing, account panel swaps, contact forms (no page reloads)
Alpine.js 3.x Live phone validation, small client behaviours
Tailwind CSS CDN Utility-first styling (swap to a build step in Phase 3 polish later)
Postgres 16 Single shared database (wherewoof-db on .13)
pgx v5 Postgres driver + pool for Go
sqlc 1.31.1 Type-safe query generation from SQL (compiled-checked queries)
gorilla/sessions Signed cookie sessions
bcrypt Password hashing

Admin stack

Tool Version Used for
Laravel 13 (PHP 8.3) Admin backend; Eloquent reads the shared Postgres schema
Filament v3 Admin panel UI: CRUD resources (User/Tag/Product/Order), dashboard widgets
Livewire (Filament dep) Reactive admin pages
Docker Laravel dev (.27:3030) + prod (.13:3031); Postgres container

Infrastructure & deployment

Tool Role
NixOS .27/.13/.51 hosts; systemd user services; firewall via config
systemd where-woof.service (frontend, auto-restart, linger)
Docker Compose Postgres, admin, other services
Caddy Reverse proxy + TLS on .35 (public domains)
Pi-hole Local DNS (.home.lab domains)
rsync Deploy artifacts to .13
Gitea Git hosting (sam/where_woof)

SMS

Tool Role
SMSGlobal HTTP API Live SMS (api.smsglobal.com/http-api.php, action=sendsms) — verified number as sender
internal/sms (Go) Swappable Sender interface: LogSender (dev), HTTPClient (live), smsglobal REST client (unused fallback)

Development workflow

Tool Role
OpenSpec Spec-driven development: openspec/changes/* (proposal → design → specs → tasks), validated
plannotator Plan review (browser UI) for the first two phases
pi subagents Master/worker delegation: database, coder-pro, code-analysis, devops
Makefile db-up, seed, seed-registry, run, build, generate, psql
Verify suites /tmp/verify.sh (22 checks), verify2.sh (19), verify3.sh (12) — HTTP-level regression tests

Security tooling (guards package installs)

SafeDep Vet (vet), npq (typosquatting), Socket Firewall (socket) — the npm-security skill wraps installs.

Notes / gotchas (hard-won)

  • Filament v3: production 403 unless the User model implements FilamentUser.
  • Behind Caddy, force URL::forceScheme('https') to avoid mixed-content asset blocks.
  • sqlc: nullable columns → pgtype.*; explicit INSERT column lists must include new columns.
  • NixOS: CGO_ENABLED=0 for Go builds (no gcc); make via nix profile; psql via docker exec.
  • Admin files created by Docker are root-owned — edit via docker cp.