Roadmap
UIGen is developed in phases. Here's what's been shipped and what's coming next.
Phase 1: Core vertical slice
Complete- Monorepo scaffold (pnpm + Vite + TypeScript)
- IR types (auth, relationships, pagination hints, validation rules)
- OpenAPI 3.x adapter with full `$ref` resolution
- Swagger 2.0 adapter
- View hint classifier (list, detail, create, update, delete, search, wizard, action)
- Relationship detector (hasMany / belongsTo)
- Pagination detector (offset, cursor, page-based)
- Core field components (TextField, NumberField, SelectField, DatePicker, FileUpload, ArrayField, ObjectField)
- ListView with TanStack Table: sorting, pagination, filtering, row actions
- FormView with React Hook Form + Zod validation
- CLI `serve` command with Vite proxy
- Opinionated theme (shadcn/ui dark/light toggle)
- Authentication UI (Bearer token + API Key)
- Environment switching (server dropdown from spec `servers`)
- Error resilience (graceful degradation, error boundary, toast notifications)
Phase 2: Full surface area
Complete- DetailView with related resource links
- EditFormView (pre-populated from current record)
- Delete with confirmation dialog
- Custom action buttons (non-CRUD operations)
- SearchView (global + per-resource filters)
- DashboardView (auto-generated overview with resource counts)
- WizardView (multi-step for large forms)
- Sidebar layout + TopBar + Breadcrumbs + responsive shell
- React Router with full URL navigation and browser history
- Config reconciliation system (runtime annotation merging from `.uigen/config.yaml`)
- Built-in list charts via `x-uigen-chart` (Recharts, query limits, client-side sampling, filter controls)
- Declarative WebSocket live updates via `x-uigen-websocket` and `x-uigen-detail-stream`
- Unified HTTP + WebSocket API proxy on `/api` for `uigen serve`
Phase 3: Extension & distribution
In progress- `x-uigen-*` vendor extension support (label, ignore, ref, chart, websocket, detail-stream, layout, profile, landing page, auth, datetime)
- `.uigen/config.yaml`: theme/behaviour/resource overrides
- `uigen build`: package config, spec, and overrides for deployment
- Publish core packages to npm (`@uigen-dev/core`, `@uigen-dev/react`, `@uigen-dev/cli`)
- Electron desktop target (`uigen serve --target electron`, `@uigen-dev/target-electron`)
- OAuth 2.0 social login (Google, GitHub, Facebook, Microsoft) via `x-uigen-auth`
- Standalone Electron packaging (`.dmg` / `.exe` via `electron-builder`)
- `uigen validate`: spec linting with actionable errors and line numbers
- `uigen generate`: static production HTML build output
- OAuth2 PKCE for web SPA (public clients without client secret)
- Spec hot-reloading (file watcher pushes IR changes to the UI)
- Loading skeletons with shimmer animation
- Virtual scrolling for large datasets (TanStack Virtual)
- Request / response interceptors (config-driven middleware)
- Response transformation (JSONPath + JS functions)
Phase 4: Renderer ecosystem
Planned- `@uigen-dev/svelte`: Svelte renderer consuming the same IR
- `@uigen-dev/vue`: Vue 3 renderer
- `@uigen-dev/react-native`: React Native renderer for device companion apps
- Plugin API: register custom adapters, field types, and view strategies as npm packages
- `uigen ui:config`: visual configuration dashboard
- `@uigen-dev/plugin-charts`: additional chart widgets and custom renderers beyond built-in list charts
- `@uigen-dev/plugin-mapbox`: map renderer for geo coordinate fields
- GraphQL adapter
- OpenAPI 3.1 full support
Current priorities
- Polish (WebSocket streaming UX, chart performance, relationship visualization)
- Better relationship handling and visualization
- Additional renderers (Svelte, Vue, React Native for device companion apps)