- dev auth flow (side-step OAuth) - db event processing integration tests - dev scripts (eg Makefile) - db / test db migration setup scripts.
3.4 KiB
Work Summary — 2026-08-03 23:58
Task
Add a Makefile with a make dev target: apply pending DB migrations, start the Tailwind watcher, and run the server, all from one command.
Context
User pushed back on the initial framing ("I can already start the server with go run .") — fair, since that part was never the friction. The real friction, confirmed via .zsh_history, is the other two steps done by hand around it: the migrate CLI invoked with its full DSN spelled out literally ~10 times over recent weeks (migrate -path database_migrations -database "postgres://app_client:app_password@localhost:5432/inventory_2?sslmode=disable" up 1), and tailwind.sh (which already runs --watch) needing to be started manually in a separate terminal — easy to forget, leading to template/CSS changes silently not showing up. Framed the Makefile's value around removing those two specific manual steps, not around wrapping go run ..
Changes
- New
Makefileat repo root:-include .env+exportsoDATABASE_URL(and everything else in.env) is available to recipes without hand-typing it — fixes the DSN-drift risk where the hand-typed migrate command could silently diverge from what's actually in.env.dev(default goal): depends onmigrate-up, then backgrounds./tailwind.sh, captures its PID, sets a trap to kill it onEXIT/INT/TERM, then runsgo run .in the foreground. Ctrl-C (or any termination) stops both cleanly.migrate-up/migrate-down/migrate-version: thin wrappers around themigrateCLI using$(DATABASE_URL), so the DSN is typed once (in.env) instead of per-invocation.tailwind: one-shot alias for./tailwind.sh(still watch mode, matching existing script behavior).run: plaingo run ., for when you don't want migrations/CSS touched.
Verification
make migrate-version/make migrate-up— ran cleanly against the real local DB (idempotent: reported "no change" since already at the latest migration).make devunder atimeout— confirmed via log output that migrations ran, Tailwind's watcher started (tailwindcss v4.1.18banner), the server bound and served a 200 on/ui, and on SIGTERM both the server and the Tailwind watcher shut down (verified no leftovertailwindcss/npxprocess survived — first check was apgrepself-match false positive on the search string appearing in the invoking shell's own command line, re-verified cleanly withps aux).
Incident during verification (self-caused, fixed)
Killing make dev mid-run once truncated the committed styles/index.css to empty (1370 lines → 0) — the Tailwind watcher was killed while mid-write on its first build. Caught it in the post-test git status/git diff review before finishing; restored via git checkout -- styles/index.css. Worth knowing for next time: killing the watcher while it's actively writing that file is a real (if narrow) way to corrupt a tracked file — not something make dev itself introduces (same risk exists running tailwind.sh directly), but noting it here since it's the kind of thing to double check after using this target.
Follow-ups / not done here
- Next planned step per the dev-iteration plan: broaden test coverage beyond
server/ui/charts/*_test.go(nothing currently coversdomains/accounts,domains/reports,domains/raw_events, or the Amazon mock pipeline).