--- id: IHUB-WP-0015 type: workplan title: "Local Deployment — Intro and Tutorial Web UI" domain: inter_hub repo: inter-hub status: done owner: custodian topic_slug: inter_hub created: "2026-04-03" updated: "2026-04-03" state_hub_sync: done state_hub_workstream_id: "946d50b8-441c-4c0a-b1a0-2a4fb3340d16" depends_on: IHUB-WP-0014 --- # IHUB-WP-0015 — Local Deployment: Intro and Tutorial Web UI ## Goal Deploy inter-hub locally and add the public-facing intro/tutorial web interface so that the running instance presents both a self-contained introduction to the framework and access to the management UI — with no domain extensions registered yet. ## Background Depends on IHUB-WP-0014 (clean build, Tailwind CSS, admin user). Once the pre-flight gaps are closed, this workplan adds the missing web layer: a landing page, capabilities overview, and domain-extension tutorial as actual rendered pages within the IHP app — surfacing the rich content already in `docs/` and `specs/` through the web interface rather than only as files. The management UI (58 controllers, all dashboards) already exists and needs no new code — only a navigational entry point. ## Tasks ### B1 — Create `StaticPages` controller New `Web/Controller/StaticPages.hs` with actions: `LandingAction`, `CapabilitiesAction`, `TutorialAction`, `ExtensionGuideAction`. No auth guard — these pages are public. Register routes in `Web/Routes.hs`. ### B2 — Landing page view `Web/View/StaticPages/Landing.hs` — what inter-hub is, the traceability chain (Widget → InteractionEvent/Annotation → RequirementCandidate → Requirement → DecisionRecord → DeploymentRecord → OutcomeSignal → Learning), key capabilities at a glance, and two CTAs: "Explore Capabilities" + "Go to Management UI". Content drawn from `SCOPE.md` and `ARCHITECTURE-LAYERS.md`. ### B3 — Capabilities page view `Web/View/StaticPages/Capabilities.hs` — the 12-phase capability map, GAAF scorecard (3.68 Strong), the API surface (v1 + v2), the learning loop, the type registry system, and the hub federation model. Structured HTML with section anchors. Draws from `ARCHITECTURE-LAYERS.md` and `specs/InteractionHubFrameworkSpecification_v0.2.md`. ### B4 — Tutorial and extension guide views `Web/View/StaticPages/Tutorial.hs` — step-by-step overview of how the IHF works from a developer perspective (Widget lifecycle, governance flow, outcome loop). `Web/View/StaticPages/ExtensionGuide.hs` — how to build and register a domain hub extension: HubCapabilityManifest, type registry entries, hub-owned widget types, hub-scoped controllers. Content drawn from `docs/domain-hub-extension-guide.md`. ### B5 — Update root route Change `GET /` from `HubsAction` to `LandingAction` in `Web/FrontController.hs` or `Web/Routes.hs`. Management entry point becomes `GET /hubs`. ### B6 — Navigation integration Add "Docs" / "About" / "Tutorial" links to the existing nav bar in `Web/FrontController.hs`. Add "Management" link pointing to `/hubs`. Ensure the nav is accessible from all static pages without requiring login. ### B7 — Final deployment run and verification ✓ Verified 2026-04-29 on haskelseed (192.168.178.135:8080): - / → Landing (200), /capabilities (200), /tutorial (200), /extension-guide (200) - Login as admin@inter-hub.local succeeds, all dashboards load - Root route fix: parseRoute' changed from endOfInput to string "/" >> endOfInput - Tagged v0.2.0-alpha.1 ## Exit Criteria - `http://localhost:8000` shows the landing page (no login required) - Landing → Capabilities → Tutorial → ExtensionGuide navigation works - "Management UI" link from landing takes authenticated users to `/hubs` - Hub management, all dashboards, and API v2 remain functional - No domain extensions pre-registered (clean starting state confirmed) - All pages render with correct Tailwind styling