--- id: IHUB-WP-0014 type: workplan title: "Pre-flight: Close Deployment Gaps" domain: inter_hub repo: inter-hub status: in_progress owner: custodian topic_slug: inter_hub created: "2026-04-03" updated: "2026-04-04" state_hub_sync: done state_hub_workstream_id: "532761e7-7c97-42e6-a5ea-59a972a80230" --- # IHUB-WP-0014 — Pre-flight: Close Deployment Gaps ## Goal Reach a verified, locally-runnable state of inter-hub before building the public-facing intro/tutorial UI. Three concrete gaps must be closed: CSS pipeline not building, no admin user seeding, and the build never verified in this environment. ## Background All 12 IHF phases are implemented (58 controllers, 115+ views, 1102-line schema, 13 migrations). Nix/direnv are installed. However: - `static/app.css` is empty (0 bytes) — Tailwind build command is commented out in `flake.nix`; views use Tailwind classes throughout all phases. - `Application/Fixtures.sql` is empty — no default admin user, so the app is inaccessible after a clean DB init. - The codebase has never been compiled in this environment — compilation errors from any of the 12 phases would block everything else. ## Tasks ### A1 — Attempt first build Run `devenv up` and record all output. First run downloads Nix deps (20–40 min). Observe for compilation errors; record results. **STATUS: PENDING — requires user to run `devenv up`.** ### A2 — Fix compilation errors ✓ Resolved proactively before first build based on static analysis of all 140+ modified files. Key fixes (commit f1978c3): - Removed inline FK constraints from Schema.sql (IHP schema parser cannot parse them); restored via `1744329600-restore-fk-constraints.sql`. - Renamed `#label` → `#label_` to avoid Haskell built-in clash. - Fixed UUID comparisons (`toUUID hub.id`). - Replaced `setStatus`/`respondJson` with `renderJsonWithStatusCode`. - Refactored 100+ HSX inline lambdas to named helper functions (GHC type inference limitation in quasi-quotes). - Fixed missing imports throughout helpers and controllers. - Moved type-registry INSERT seeds to `1744502400-seed-type-registries.sql`. ### A3 — Enable Tailwind build pipeline ✓ - `tailwindcss` added to `flake.nix` packages. - `tailwind.exec` process uncommented in devenv shell. - `tailwind/tailwind.config.js` and `tailwind/app.css` created. - `static/app.css` will be populated when `devenv up` runs the watcher. ### A4 — Admin user seed migration ✓ - `Application/Migration/1744416000-seed-admin-user.sql`: inserts `admin@inter-hub.local` / `admin1234!` (bcrypt cost 10). - `.env.example` added documenting all required env vars and admin creds. ### A5 — Smoke test Verify: login works, hub list renders styled, one hub can be created, hub dashboard loads, API v2 `/api/v2/widgets` returns `[]`. **STATUS: PENDING — requires running app.** ## Exit Criteria - `devenv up` starts cleanly with no compilation errors - `static/app.css` is non-empty (Tailwind output present) - Login with seeded admin user succeeds at `http://localhost:8000` - Hub list page renders with correct styling - Smoke test A5 passes for all five checks