Skip to content

feat(frontend): slice 1 — foundation + OKH design catalog (typed clie…#202

Closed
touchthesun wants to merge 1 commit into
mainfrom
feat/frontend-slice1-okh-catalog
Closed

feat(frontend): slice 1 — foundation + OKH design catalog (typed clie…#202
touchthesun wants to merge 1 commit into
mainfrom
feat/frontend-slice1-okh-catalog

Conversation

@touchthesun

Copy link
Copy Markdown
Contributor

First vertical slice of the v1 frontend (PRD #184, slice #197), establishing the patterns every later slice copies:

  • Typed API client (module 1): openapi-fetch over the generated OpenAPI types (src/api/ohm/*). Path/param/envelope are type-checked against the real contract; items narrowed to the OkhManifest view type. fetch() is resolved per-call so test interceptors (MSW) are honored.
  • State primitives (module 6): shadcn-based LoadingState / EmptyState / ErrorState with role=status / role=alert, component-tested.
  • OKH design catalog list rebuilt on the typed client + primitives, preserving search / sort / pagination and the renderable-item filter; explicit loading / empty / error states.

Tests: unit (typed OKH wrapper via MSW — happy path, query params, ApiError), component (state primitives), mocked-lane E2E (browse / empty / error) + real-api lane (route loads against live API) + /okh screenshot.

make frontend-ready green; real-api lane green against the live backend.

…nt, state primitives)

First vertical slice of the v1 frontend (PRD #184, slice #197), establishing the
patterns every later slice copies:

- Typed API client (module 1): openapi-fetch over the generated OpenAPI types
  (src/api/ohm/*). Path/param/envelope are type-checked against the real
  contract; items narrowed to the OkhManifest view type. fetch() is resolved
  per-call so test interceptors (MSW) are honored.
- State primitives (module 6): shadcn-based LoadingState / EmptyState /
  ErrorState with role=status / role=alert, component-tested.
- OKH design catalog list rebuilt on the typed client + primitives, preserving
  search / sort / pagination and the renderable-item filter; explicit
  loading / empty / error states.

Tests: unit (typed OKH wrapper via MSW — happy path, query params, ApiError),
component (state primitives), mocked-lane E2E (browse / empty / error) +
real-api lane (route loads against live API) + /okh screenshot.

`make frontend-ready` green; real-api lane green against the live backend.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@touchthesun touchthesun closed this Jul 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants