[1] Repository scaffold #11

Closed
dernbu wants to merge 1 commit from feat/1-repository-scaffold into main
Owner

Summary

  • add the PostgreSQL 18, Flyway, scheduler, worker, and TanStack Start Compose stack
  • enforce the planned backend, egress, and web-edge network topology with only 127.0.0.1:3406:3000 published
  • add independent uv/Python and pnpm/Node 22 package roots, production Dockerfiles, lockfiles, health checks, and placeholder runtimes
  • add Flyway V1 bootstrap readiness, root configuration, Justfile commands, README documentation, and automated Compose smoke assertions

Verification

  • just config
  • just lint
  • just typecheck
  • just test

The Compose smoke suite verifies PostgreSQL health, Flyway completion/history, web database readiness, scheduler/worker health, exact network membership, port isolation, PostgreSQL connectivity, and worker HTTPS egress to both source hosts.

Resolves #1

## Summary - add the PostgreSQL 18, Flyway, scheduler, worker, and TanStack Start Compose stack - enforce the planned `backend`, `egress`, and `web-edge` network topology with only `127.0.0.1:3406:3000` published - add independent `uv`/Python and pnpm/Node 22 package roots, production Dockerfiles, lockfiles, health checks, and placeholder runtimes - add Flyway V1 bootstrap readiness, root configuration, Justfile commands, README documentation, and automated Compose smoke assertions ## Verification - `just config` - `just lint` - `just typecheck` - `just test` The Compose smoke suite verifies PostgreSQL health, Flyway completion/history, web database readiness, scheduler/worker health, exact network membership, port isolation, PostgreSQL connectivity, and worker HTTPS egress to both source hosts. Resolves #1
Author
Owner

Full Justfile command run

Executed every recipe on 14 June 2026 against commit 5cdd1a9d7a7a.

Recipe Result Key output
just (default) PASS Listed all 18 available recipes.
just config PASS Rendered a valid 159-line Compose configuration.
just build PASS Built web, scheduler, and worker images successfully.
just up PASS PostgreSQL became healthy, Flyway exited successfully, then web/scheduler/worker started.
just logs web PASS (interactive) Streamed Listening on: http://localhost:3000/ (all interfaces); manually interrupted follow-mode with Ctrl-C, hence the expected exit 130.
just migrate PASS PostgreSQL 18.4 connected; schema version 1 was current; no migration necessary.
just lint PASS Ruff clean, 9 Python files formatted, ESLint clean, Prettier clean.
just typecheck PASS Pyright: 0 errors/warnings; TypeScript tsc --noEmit clean.
just test-ingest PASS 3 pytest tests passed.
just test-web PASS 1 Vitest test passed.
just smoke PASS Full Compose smoke assertions passed.
just test PASS Re-ran ingest tests, web tests, and full Compose smoke suite successfully.
just down PASS Removed containers and networks; named volume lawnet-scraper_postgres-data remained preserved.
just generate-db-types EXPECTED DEFERRED Exit 2: implemented in Phase 8 after the catalog schema exists.
just check-db-types EXPECTED DEFERRED Exit 2: implemented in Phase 8 after generated Kysely types exist.
just enqueue-discovery all EXPECTED DEFERRED Exit 2: queue command is not implemented until Phase 3.
just requeue-dead 1 EXPECTED DEFERRED Exit 2: queue command is not implemented until Phase 3.

Smoke details

  • PostgreSQL health passed.
  • Flyway V1 history/readiness passed.
  • Web, scheduler, and worker health passed.
  • Exact network membership and host-port isolation passed.
  • Web remained bound only to 127.0.0.1:3406:3000.
  • Worker HTTPS egress succeeded:
    • api.lawnet.com responded HTTP 404, confirming TLS/DNS/routing connectivity.
    • www.elitigation.sg responded HTTP 302, confirming TLS/DNS/routing connectivity.

No repository files were changed by this verification run. The stack is stopped and the PostgreSQL development volume is preserved.

## Full Justfile command run Executed every recipe on 14 June 2026 against commit `5cdd1a9d7a7a`. | Recipe | Result | Key output | |---|---:|---| | `just` (`default`) | PASS | Listed all 18 available recipes. | | `just config` | PASS | Rendered a valid 159-line Compose configuration. | | `just build` | PASS | Built web, scheduler, and worker images successfully. | | `just up` | PASS | PostgreSQL became healthy, Flyway exited successfully, then web/scheduler/worker started. | | `just logs web` | PASS (interactive) | Streamed `Listening on: http://localhost:3000/ (all interfaces)`; manually interrupted follow-mode with Ctrl-C, hence the expected exit 130. | | `just migrate` | PASS | PostgreSQL 18.4 connected; schema version 1 was current; no migration necessary. | | `just lint` | PASS | Ruff clean, 9 Python files formatted, ESLint clean, Prettier clean. | | `just typecheck` | PASS | Pyright: 0 errors/warnings; TypeScript `tsc --noEmit` clean. | | `just test-ingest` | PASS | 3 pytest tests passed. | | `just test-web` | PASS | 1 Vitest test passed. | | `just smoke` | PASS | Full Compose smoke assertions passed. | | `just test` | PASS | Re-ran ingest tests, web tests, and full Compose smoke suite successfully. | | `just down` | PASS | Removed containers and networks; named volume `lawnet-scraper_postgres-data` remained preserved. | | `just generate-db-types` | EXPECTED DEFERRED | Exit 2: implemented in Phase 8 after the catalog schema exists. | | `just check-db-types` | EXPECTED DEFERRED | Exit 2: implemented in Phase 8 after generated Kysely types exist. | | `just enqueue-discovery all` | EXPECTED DEFERRED | Exit 2: queue command is not implemented until Phase 3. | | `just requeue-dead 1` | EXPECTED DEFERRED | Exit 2: queue command is not implemented until Phase 3. | ### Smoke details - PostgreSQL health passed. - Flyway V1 history/readiness passed. - Web, scheduler, and worker health passed. - Exact network membership and host-port isolation passed. - Web remained bound only to `127.0.0.1:3406:3000`. - Worker HTTPS egress succeeded: - `api.lawnet.com` responded HTTP 404, confirming TLS/DNS/routing connectivity. - `www.elitigation.sg` responded HTTP 302, confirming TLS/DNS/routing connectivity. No repository files were changed by this verification run. The stack is stopped and the PostgreSQL development volume is preserved.
Author
Owner

Superseded by the smaller stacked PR sequence:

  1. #12 data-ingest service
  2. #13 Flyway service
  3. #14 web service
  4. #15 final Compose/repository wiring

PR #15 retains Resolves #1. This original combined PR is being closed without merge.

Superseded by the smaller stacked PR sequence: 1. #12 data-ingest service 2. #13 Flyway service 3. #14 web service 4. #15 final Compose/repository wiring PR #15 retains `Resolves #1`. This original combined PR is being closed without merge.
dernbu closed this pull request 2026-06-13 19:44:58 +02:00

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
dernbu/lawnet-scraper!11
No description provided.