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)