Skip to content

A headless, schema-driven React rendering engine built with Tailwind CSS and Shadcn UI.

License

Notifications You must be signed in to change notification settings

objectstack-ai/objectui

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2,057 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Object UI

The Universal Schema-Driven UI Engine

From JSON to world-class UI in minutes

License CI CodeQL TypeScript React Tailwind CSS

Documentation | Quick Start | Migration Guide


πŸŽ‰ What's New in v0.4.0

Component Namespaces

Organize components into namespaces to prevent naming conflicts:

ComponentRegistry.register('button', ButtonComponent, {
  namespace: 'ui'  // ✨ New: Prevent conflicts across plugins
});

Lazy Field Registration

Load only the fields you need for 30-50% smaller bundles:

import { registerField } from '@object-ui/fields';

// Only load what you use
registerField('text');
registerField('number');
// 70% smaller bundle size! πŸš€

Build Performance

  • 3-5x faster CI builds with Turbo v2
  • Parallel package builds with intelligent caching
  • Instant rebuilds for unchanged packages

πŸ‘‰ Read the Migration Guide for details and examples.


πŸš€ Quick Start (Development Mode)

Since this package is not yet published to NPM, here is how to play with the source code:

  1. Clone & Install

    git clone https://github.com/objectstack-ai/objectui.git
    cd objectui
    pnpm install
    # Build the core engine
    pnpm build 
  2. Run the ObjectStack Console

    Start the unified development console to preview your apps and objects:

    pnpm dev
    # Opens http://localhost:5173
  3. Edit & Reload

    Edit the JSON schema files and the changes will be instantly reflected in the browser.

Examples

πŸ“¦ For React Developers

Install the core packages to use <SchemaRenderer> inside your Next.js or Vite app.

npm install @object-ui/react @object-ui/components @object-ui/data-objectstack

🎨 Beautiful by Default

  • Professional designs using Tailwind CSS and Shadcn/UI
  • Light/dark theme support
  • Fully customizable with utility classes
  • WCAG 2.1 AA accessible

⚑ Blazing Fast

  • 3x faster page loads than traditional low-code platforms
  • 6x smaller bundle sizes (< 50KB vs 300KB+)
  • Built on React 18+ with automatic optimizations
  • Tree-shakable architecture

πŸš€ Developer Friendly

  • TypeScript-first with complete type definitions
  • Zero learning curve if you know React
  • Works with existing tools and workflows
  • Full control - extend or customize anything

πŸ› οΈ Production Ready

  • 85%+ test coverage
  • Enterprise security built-in
  • Comprehensive documentation
  • Active development and support

πŸ”₯ Phase 3: Enterprise Data Protocol (NEW!)

  • Advanced Field Types: Vector (AI embeddings), Grid (sub-tables), Formula, Summary
  • Query AST Builder: SQL-like queries with joins, aggregations, subqueries
  • Smart Validation: 30+ rules, async validation, cross-field dependencies
  • Multi-Datasource: Health monitoring, connection pooling, query caching
  • 40+ Filter Operators: Date ranges, lookup filters, full-text search
  • Object Inheritance: Triggers, advanced permissions, metadata caching

Why Object UI?

For You as a Developer

Stop Writing Repetitive UI Code

// Traditional React: 200+ lines
function UserForm() {
  // ... useState, validation, handlers, JSX
}

// Object UI: 20 lines
const schema = {
  type: "crud",
  api: "/api/users",
  columns: [...]
}

Better Performance, Smaller Bundle

  • Automatic code splitting
  • Lazy-loaded components
  • Zero runtime CSS overhead
  • Optimized for production

Full Control & Flexibility

  • Mix with existing React code
  • Override any component
  • Custom themes with Tailwind
  • Export to standard React anytime

vs Other Solutions

Feature Object UI Amis Formily Material-UI
Tailwind Native βœ… ❌ ❌ ❌
Bundle Size 50KB 300KB+ 200KB+ 500KB+
TypeScript βœ… Full Partial βœ… Full βœ… Full
Tree Shakable βœ… ❌ ⚠️ Partial ⚠️ Partial
Server Components βœ… ❌ ❌ ⚠️ Coming
Visual Designer βœ… βœ… ❌ ❌

Quick Start

Option 1: Using CLI (Fastest Way) πŸš€

The easiest way to get started is using the Object UI CLI:

# Install the CLI globally
npm install -g @object-ui/cli

# Create a new app from JSON schema
objectui init my-app

# Start the development server
cd my-app
objectui serve app.schema.json

Your app will be running at http://localhost:3000! πŸŽ‰

Just edit app.schema.json to build your UI - no React code needed.

Option 2: Using as a Library

Installation

# Using npm
npm install @object-ui/react @object-ui/components

# Using yarn
yarn add @object-ui/react @object-ui/components

# Using pnpm
pnpm add @object-ui/react @object-ui/components

Basic Usage

import React from 'react'
import { SchemaRenderer } from '@object-ui/react'
import { registerDefaultRenderers } from '@object-ui/components'

// Register default components once
registerDefaultRenderers()

const schema = {
  type: "page",
  title: "Dashboard",
  body: {
    type: "grid",
    columns: 3,
    items: [
      { type: "card", title: "Total Users", value: "${stats.users}" },
      { type: "card", title: "Revenue", value: "${stats.revenue}" },
      { type: "card", title: "Orders", value: "${stats.orders}" }
    ]
  }
}

function App() {
  const data = {
    stats: { users: 1234, revenue: "$56,789", orders: 432 }
  }
  
  return <SchemaRenderer schema={schema} data={data} />
}

export default App

πŸ“¦ Packages

Object UI is a modular monorepo with packages designed for specific use cases:

Core Packages

Package Description Size
@object-ui/types TypeScript definitions and protocol specs 10KB
@object-ui/core Core logic, validation, registry, expression evaluation 20KB
@object-ui/react React bindings and SchemaRenderer 15KB
@object-ui/components Standard UI components (Tailwind + Shadcn) 50KB
@object-ui/fields Field renderers and registry 12KB
@object-ui/layout Layout components with React Router integration 18KB

CLI & Tools

Package Description Size
@object-ui/cli CLI tool for building apps from JSON schemas 25KB
@object-ui/runner Universal application runner for testing schemas 30KB
vscode-extension VSCode extension with IntelliSense and live preview 32KB

Data Adapters

Package Description Size
@object-ui/data-objectstack ObjectStack data adapter 8KB

Plugins (Lazy-Loaded)

Plugin Description Size
@object-ui/plugin-aggrid AG Grid data grid integration 150KB
@object-ui/plugin-calendar Calendar and event management 25KB
@object-ui/plugin-charts Chart components powered by Recharts 80KB
@object-ui/plugin-chatbot Chatbot interface components 35KB
@object-ui/plugin-dashboard Dashboard layouts and widgets 22KB
@object-ui/plugin-editor Rich text editor powered by Monaco 120KB
@object-ui/plugin-form Advanced form components 28KB
@object-ui/plugin-gantt Gantt chart visualization 40KB
@object-ui/plugin-grid Advanced data grid 45KB
@object-ui/plugin-kanban Kanban boards with drag-and-drop 100KB
@object-ui/plugin-map Map visualization 60KB
@object-ui/plugin-markdown Markdown rendering 30KB
@object-ui/plugin-timeline Timeline components 20KB
@object-ui/plugin-view ObjectQL-integrated views (grid, form, detail) 35KB

πŸ”Œ Data Integration

Object UI is designed to work with any backend through its universal DataSource interface:

ObjectStack Integration

npm install @object-ui/core
import { createObjectStackAdapter } from '@object-ui/core';

const dataSource = createObjectStackAdapter({
  baseUrl: 'https://api.example.com',
  token: 'your-auth-token'
});

// Use with any component
<SchemaRenderer schema={schema} dataSource={dataSource} />

Custom Data Sources

You can create adapters for any backend (REST, GraphQL, Firebase, etc.) by implementing the DataSource interface:

import type { DataSource, QueryParams, QueryResult } from '@object-ui/types';

class MyCustomDataSource implements DataSource {
  async find(resource: string, params?: QueryParams): Promise<QueryResult> {
    // Your implementation
  }
  // ... other methods
}

Data Source Examples β†’

🎯 What Can You Build?

Object UI is perfect for:

  • βœ… Admin Panels - Complete CRUD interfaces in minutes
  • βœ… Dashboards - Data visualization and analytics
  • βœ… Forms - Complex multi-step forms with validation
  • βœ… CMS - Content management systems
  • βœ… Internal Tools - Business applications
  • βœ… Prototypes - Rapid UI prototyping

πŸ›£οΈ Roadmap

Phase 1-2 (Q4 2025 - Q1 2026) βœ… COMPLETED:

  • βœ… Core schema rendering engine
  • βœ… 40+ production-ready components (Shadcn + Tailwind)
  • βœ… Expression system with field references
  • βœ… Action system (AJAX, chaining, conditions)
  • βœ… Theme system (light/dark mode)
  • βœ… Report builder with exports
  • βœ… Visual designer (beta)

Phase 3 (Q1-Q2 2026) βœ… COMPLETED:

  • βœ… Advanced Field Types: Vector (AI embeddings), Grid (sub-tables), Formula, Summary
  • βœ… ObjectSchema Enhancements: Inheritance, triggers, advanced permissions, metadata caching
  • βœ… QuerySchema AST: SQL-like query building with joins, aggregations, subqueries
  • βœ… Advanced Filtering: 40+ operators, date ranges, lookup filters, full-text search
  • βœ… Validation Engine: 30+ rules, async validation, cross-field validation
  • βœ… DriverInterface: Transactions, batch operations, connection pooling, query caching
  • βœ… DatasourceSchema: Multi-datasource management, health monitoring

Phase 4+ (Q2-Q4 2026):

  • πŸ”„ Real-time collaboration features
  • πŸ”„ Mobile-optimized components
  • πŸ”„ AI-powered schema generation
  • πŸ”„ Advanced workflow automation

See PHASE3_IMPLEMENTATION.md for detailed Phase 3 documentation.

🀝 Contributing

We welcome contributions! Please read our Contributing Guide for details.

For Developers

Development Setup

Quick Setup (Recommended):

# Clone the repository
git clone https://github.com/objectstack-ai/objectui.git
cd objectui

# Run automated setup script
./scripts/setup.sh

Manual Setup:

# Clone the repository
git clone https://github.com/objectstack-ai/objectui.git
cd objectui

# Install dependencies
pnpm install

# Build all packages
pnpm build

# Run the development site
pnpm dev

# Run tests
pnpm test

πŸ“„ License

Object UI is MIT licensed.

🌟 Community & Support

πŸ™ Acknowledgments

Object UI is inspired by and builds upon ideas from:


Built with ❀️ by the ObjectQL Team

Website Β· Documentation Β· GitHub

About

A headless, schema-driven React rendering engine built with Tailwind CSS and Shadcn UI.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 6