Files
khata-ui/CONCEPT.md

2.1 KiB
Raw Blame History

Concept Overview

The application is a metadatadriven admin UI built on top of an OpenAPI description. By describing each resource in a small JSON config (type ResourceConfig), the UI automatically generates:

  1. Data tables (with pagination, sorting, and actions) EnhancedTable.
  2. Dynamic filters FilterBar creates appropriate filter widgets (autocomplete, numberrange, daterange) based on field metadata.
  3. Forms for create/edit A generic form component can render inputs for every ResourceField, handling relations via the displayFormat template.
  4. Authentication layer reactauth supplies a central AuthProvider, a useAuth hook, and route guarding, ensuring only authenticated users reach the admin pages.

Core Principles

  • Declarative configuration: Adding a new resource is just a JSON entry; no handcoded tables or forms.
  • Templatebased display: displayFormat (e.g. "{{firstName}} {{lastName}}") defines how related objects are shown across the UI, eliminating the need for separate displayField props.
  • Extensible UI: Consumers can plug custom components (components prop) to override cell renderers, filter widgets, or action buttons without altering core logic.
  • Unified state: TanStack Query caches server data, while reactauth manages JWTs and user info. Both are provided via React context for easy access.
  • Responsive design: The UI automatically switches to a cardbased layout on mobile, preserving functionality with a consistent look.

Migration Goal for Lovable

The current repo implements these ideas with a solid foundation but could benefit from:

  • Improved UI/UX (e.g., better loading states, richer snackbars, darkmode toggle).
  • More robust error handling (centralized toast system, retry logic on auth failures).
  • Enhanced theming (customizable palette, brand colors).
  • Accessibility (ARIA roles, keyboard navigation).

By reusing the existing ResourceConfig schema and displayFormat logic, the Lovable implementation can focus on UI polish and advanced handling while keeping the powerful codegeneration approach intact.