chore: one-command local dev stack startup with healthcheck wait #638

Open
opened 2026-05-20 00:19:29 +02:00 by marcel · 0 comments
Owner

Context

Three review rounds on PR #629 cited "dev stack wasn't up" as the reason manual UI verification (320 px viewport check, 7-item test plan, screen-reader spot-check) was deferred. A one-command local stack with healthcheck-blocking startup removes this paper cut and unblocks the manual checklist for future PRs.

Reviewer rationale: Tobi #10924, #10956, #11054 on PR #629.

Required

  • Either a Makefile target make dev or a wrapper script (scripts/dev.sh) that runs:
    • docker compose up -d --wait — blocks until all healthchecks pass.
    • cd frontend && npm run dev — backgrounded.
    • cd backend && ./mvnw spring-boot:run — backgrounded.
  • Each step honours the existing healthchecks in docker-compose.yml.
  • README and CONTRIBUTING.md updated to point to the new command.
  • .devcontainer/README.md updated if relevant.

Optional companions

  • make down — bring the stack down cleanly.
  • make logs — tail backend + frontend + key Compose service logs.
  • make verify — runs docker compose ps and exits non-zero if any service is unhealthy (useful in CI smoke-test if ever wanted).

Acceptance

  • make dev (or equivalent) brings backend, MinIO, Postgres up and waits for healthchecks.
  • Frontend dev server and backend Spring Boot run alongside.
  • README + CONTRIBUTING.md updated.
  • .devcontainer/README.md updated where applicable.
  • AC-5 (Given-When-Then — binary success criterion for a future CI smoke wrapper):
    • Given a cold machine with the repository checked out and docker, node, and mvn/SDKMAN installed,
    • When the developer runs make dev (or the equivalent wrapper) once,
    • Then within ~60 s, both curl -fsS http://localhost:5173 and curl -fsS http://localhost:8080/actuator/health return HTTP 200 without further intervention, and docker compose ps reports all services as healthy.

Out of scope

  • CI smoke-testing the same target.
  • Replacing the existing dev workflows (./mvnw spring-boot:run / npm run dev) — those stay as escape hatches.

Reviewer rationale: original Tobi sequence; AC-5 Given-When-Then refinement per Elicit on PR #629 round 4 (#11147).

## Context Three review rounds on PR #629 cited "dev stack wasn't up" as the reason manual UI verification (320 px viewport check, 7-item test plan, screen-reader spot-check) was deferred. A one-command local stack with healthcheck-blocking startup removes this paper cut and unblocks the manual checklist for future PRs. Reviewer rationale: Tobi #10924, #10956, #11054 on PR #629. ## Required - Either a `Makefile` target `make dev` or a wrapper script (`scripts/dev.sh`) that runs: - `docker compose up -d --wait` — blocks until all healthchecks pass. - `cd frontend && npm run dev` — backgrounded. - `cd backend && ./mvnw spring-boot:run` — backgrounded. - Each step honours the existing healthchecks in `docker-compose.yml`. - README and CONTRIBUTING.md updated to point to the new command. - `.devcontainer/README.md` updated if relevant. ## Optional companions - `make down` — bring the stack down cleanly. - `make logs` — tail backend + frontend + key Compose service logs. - `make verify` — runs `docker compose ps` and exits non-zero if any service is unhealthy (useful in CI smoke-test if ever wanted). ## Acceptance - [ ] `make dev` (or equivalent) brings backend, MinIO, Postgres up and waits for healthchecks. - [ ] Frontend dev server and backend Spring Boot run alongside. - [ ] README + CONTRIBUTING.md updated. - [ ] `.devcontainer/README.md` updated where applicable. - [ ] **AC-5** (Given-When-Then — binary success criterion for a future CI smoke wrapper): - **Given** a cold machine with the repository checked out and `docker`, `node`, and `mvn`/SDKMAN installed, - **When** the developer runs `make dev` (or the equivalent wrapper) once, - **Then** within ~60 s, both `curl -fsS http://localhost:5173` and `curl -fsS http://localhost:8080/actuator/health` return HTTP 200 without further intervention, and `docker compose ps` reports all services as `healthy`. ## Out of scope - CI smoke-testing the same target. - Replacing the existing dev workflows (`./mvnw spring-boot:run` / `npm run dev`) — those stay as escape hatches. Reviewer rationale: original Tobi sequence; AC-5 Given-When-Then refinement per Elicit on PR #629 round 4 (#11147).
marcel added the devopsdocumentation labels 2026-05-20 00:19:45 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: marcel/familienarchiv#638