react-openapi - a spec-driven admin UI for OpenAPI/REST backends.
Point it at an OpenAPI document and it derives a full CRUD admin (list,
detail, create/edit, filtering, FK selects, streaming views) from the paths
and schemas, plus optional profile screens and auth wiring. No per-resource
hand-written screens are required.
AppProvider loads the spec, validates it, builds a ResourceConfig per
collection, parses x-profile operations, derives auth endpoints and
initializes the shared axios client.
useAppContext exposes that state; useResource(name) adds CRUD helpers
and filter widgets for one resource.
Admin renders the sidebar + routes; the field renderers
(ListCellRenderer, DetailFieldRenderer, FormFieldRenderer) turn each
FieldConfig into the right UI; SseStreamView renders live streams.
react-openapi- a spec-driven admin UI for OpenAPI/REST backends.Point it at an OpenAPI document and it derives a full CRUD admin (list, detail, create/edit, filtering, FK selects, streaming views) from the paths and schemas, plus optional profile screens and auth wiring. No per-resource hand-written screens are required.
Quick start
How it works
AppProviderloads the spec, validates it, builds aResourceConfigper collection, parsesx-profileoperations, derives auth endpoints and initializes the shared axios client.useAppContextexposes that state;useResource(name)adds CRUD helpers and filter widgets for one resource.Adminrenders the sidebar + routes; the field renderers (ListCellRenderer,DetailFieldRenderer,FormFieldRenderer) turn eachFieldConfiginto the right UI;SseStreamViewrenders live streams.Spec extensions
x-primary-key,x-display-format,x-list-columns,x-order,x-label,x-description,x-hidden,x-filterable,x-sortable,x-ui-type,x-edit-as,x-autocompletex-fk(foreign keys), inline$ref/oneOfobject handlingx-upload/x-upload-url(file/image fields)x-sse(streaming collections)x-profile(current-user operations)securitySchemes.bearerAuthx-server-url,x-login-path,x-register-path,x-logout-path,x-me-path,x-introspect-pathNotes
AdminandProfileRoutesmust be nested inside anAppProviderand a router.