|
| 1 | +# Object UI |
| 2 | + |
| 3 | +<div align="center"> |
| 4 | + |
| 5 | + |
| 6 | + |
| 7 | +**The Universal Schema-Driven UI Engine** |
| 8 | + |
| 9 | +*From JSON to world-class UI in minutes* |
| 10 | + |
| 11 | +[](LICENSE) |
| 12 | +[](https://www.typescriptlang.org/) |
| 13 | +[](https://reactjs.org/) |
| 14 | +[](https://tailwindcss.com/) |
| 15 | + |
| 16 | +[**Documentation**](https://www.objectui.org) | [**Quick Start**](#quick-start) | [**Examples**](#examples) | [**Studio**](https://www.objectui.org/studio/) |
| 17 | + |
| 18 | +</div> |
| 19 | + |
| 20 | +--- |
| 21 | + |
| 22 | +## What is Object UI? |
| 23 | + |
| 24 | +Object UI is a **modern, lightweight, schema-driven UI engine** that transforms JSON configurations into beautiful, performant React interfaces. Build enterprise-grade applications without writing repetitive UI code. |
| 25 | + |
| 26 | +```json |
| 27 | +{ |
| 28 | + "type": "form", |
| 29 | + "title": "Contact Us", |
| 30 | + "body": [ |
| 31 | + { "type": "input", "name": "email", "label": "Your Email", "required": true }, |
| 32 | + { "type": "textarea", "name": "message", "label": "Message" } |
| 33 | + ], |
| 34 | + "actions": [ |
| 35 | + { "type": "submit", "label": "Send Message", "level": "primary" } |
| 36 | + ] |
| 37 | +} |
| 38 | +``` |
| 39 | + |
| 40 | +That's it! This JSON creates a complete, accessible, and beautiful form. |
| 41 | + |
| 42 | +## ✨ Features |
| 43 | + |
| 44 | +### 🎨 **Beautiful by Default** |
| 45 | +- Professional designs using **Tailwind CSS** and **Shadcn/UI** |
| 46 | +- Light/dark theme support |
| 47 | +- Fully customizable with utility classes |
| 48 | +- WCAG 2.1 AA accessible |
| 49 | + |
| 50 | +### ⚡ **Blazing Fast** |
| 51 | +- **3x faster** page loads than traditional low-code platforms |
| 52 | +- **6x smaller** bundle sizes (< 50KB vs 300KB+) |
| 53 | +- Built on React 18+ with automatic optimizations |
| 54 | +- Tree-shakable architecture |
| 55 | + |
| 56 | +### 🚀 **Developer Friendly** |
| 57 | +- **TypeScript-first** with complete type definitions |
| 58 | +- **Zero learning curve** if you know React |
| 59 | +- Works with existing tools and workflows |
| 60 | +- Full control - extend or customize anything |
| 61 | + |
| 62 | +### 🛠️ **Production Ready** |
| 63 | +- 85%+ test coverage |
| 64 | +- Enterprise security built-in |
| 65 | +- Comprehensive documentation |
| 66 | +- Active development and support |
| 67 | + |
| 68 | +## Why Object UI? |
| 69 | + |
| 70 | +### For You as a Developer |
| 71 | + |
| 72 | +**Stop Writing Repetitive UI Code** |
| 73 | +```tsx |
| 74 | +// Traditional React: 200+ lines |
| 75 | +function UserForm() { |
| 76 | + // ... useState, validation, handlers, JSX |
| 77 | +} |
| 78 | + |
| 79 | +// Object UI: 20 lines |
| 80 | +const schema = { |
| 81 | + type: "crud", |
| 82 | + api: "/api/users", |
| 83 | + columns: [...] |
| 84 | +} |
| 85 | +``` |
| 86 | + |
| 87 | +**Better Performance, Smaller Bundle** |
| 88 | +- Automatic code splitting |
| 89 | +- Lazy-loaded components |
| 90 | +- Zero runtime CSS overhead |
| 91 | +- Optimized for production |
| 92 | + |
| 93 | +**Full Control & Flexibility** |
| 94 | +- Mix with existing React code |
| 95 | +- Override any component |
| 96 | +- Custom themes with Tailwind |
| 97 | +- Export to standard React anytime |
| 98 | + |
| 99 | +### vs Other Solutions |
| 100 | + |
| 101 | +| Feature | Object UI | Amis | Formily | Material-UI | |
| 102 | +|---------|-----------|------|---------|-------------| |
| 103 | +| **Tailwind Native** | ✅ | ❌ | ❌ | ❌ | |
| 104 | +| **Bundle Size** | 50KB | 300KB+ | 200KB+ | 500KB+ | |
| 105 | +| **TypeScript** | ✅ Full | Partial | ✅ Full | ✅ Full | |
| 106 | +| **Tree Shakable** | ✅ | ❌ | ⚠️ Partial | ⚠️ Partial | |
| 107 | +| **Server Components** | ✅ | ❌ | ❌ | ⚠️ Coming | |
| 108 | +| **Visual Designer** | ✅ | ✅ | ❌ | ❌ | |
| 109 | + |
| 110 | +## Quick Start |
| 111 | + |
| 112 | +### Installation |
| 113 | + |
| 114 | +```bash |
| 115 | +# Using npm |
| 116 | +npm install @object-ui/react @object-ui/components |
| 117 | + |
| 118 | +# Using yarn |
| 119 | +yarn add @object-ui/react @object-ui/components |
| 120 | + |
| 121 | +# Using pnpm |
| 122 | +pnpm add @object-ui/react @object-ui/components |
| 123 | +``` |
| 124 | + |
| 125 | +### Basic Usage |
| 126 | + |
| 127 | +```tsx |
| 128 | +import React from 'react' |
| 129 | +import { SchemaRenderer } from '@object-ui/react' |
| 130 | +import { registerDefaultRenderers } from '@object-ui/components' |
| 131 | + |
| 132 | +// Register default components once |
| 133 | +registerDefaultRenderers() |
| 134 | + |
| 135 | +const schema = { |
| 136 | + type: "page", |
| 137 | + title: "Dashboard", |
| 138 | + body: { |
| 139 | + type: "grid", |
| 140 | + columns: 3, |
| 141 | + items: [ |
| 142 | + { type: "card", title: "Total Users", value: "${stats.users}" }, |
| 143 | + { type: "card", title: "Revenue", value: "${stats.revenue}" }, |
| 144 | + { type: "card", title: "Orders", value: "${stats.orders}" } |
| 145 | + ] |
| 146 | + } |
| 147 | +} |
| 148 | + |
| 149 | +function App() { |
| 150 | + const data = { |
| 151 | + stats: { users: 1234, revenue: "$56,789", orders: 432 } |
| 152 | + } |
| 153 | + |
| 154 | + return <SchemaRenderer schema={schema} data={data} /> |
| 155 | +} |
| 156 | + |
| 157 | +export default App |
| 158 | +``` |
| 159 | + |
| 160 | +### Try the Visual Studio |
| 161 | + |
| 162 | +Explore our interactive drag-and-drop designer: |
| 163 | + |
| 164 | +🚀 [**Launch Object UI Studio**](https://www.objectui.org/studio/) - Design visually, export JSON instantly. |
| 165 | + |
| 166 | +## 📦 Packages |
| 167 | + |
| 168 | +Object UI is a modular monorepo with packages designed for specific use cases: |
| 169 | + |
| 170 | +| Package | Description | Size | |
| 171 | +|---------|-------------|------| |
| 172 | +| **[@object-ui/types](./packages/types)** | TypeScript definitions and protocol specs | 10KB | |
| 173 | +| **[@object-ui/core](./packages/core)** | Core logic, validation, registry (Zero React) | 20KB | |
| 174 | +| **[@object-ui/react](./packages/react)** | React bindings and `SchemaRenderer` | 15KB | |
| 175 | +| **[@object-ui/components](./packages/components)** | Standard UI components (Tailwind + Shadcn) | 50KB | |
| 176 | +| **[@object-ui/designer](./packages/designer)** | Visual drag-and-drop schema editor | 80KB | |
| 177 | + |
| 178 | +**Plugins** (lazy-loaded): |
| 179 | +- `@object-ui/plugin-charts` - Chart components (Chart.js) |
| 180 | +- `@object-ui/plugin-editor` - Rich text editor components |
| 181 | + |
| 182 | +## 📚 Documentation |
| 183 | + |
| 184 | +### Getting Started |
| 185 | +- [Introduction](./docs/guide/introduction.md) - Learn what Object UI is and why it exists |
| 186 | +- [Quick Start](./docs/guide/quick-start.md) - Build your first app in 5 minutes |
| 187 | +- [Installation](./docs/guide/installation.md) - Detailed setup instructions |
| 188 | +- [Visual Studio](./docs/guide/studio.md) - Use the drag-and-drop designer |
| 189 | + |
| 190 | +### Core Concepts |
| 191 | +- [Schema Rendering](./docs/spec/schema-rendering.md) - Understand the rendering system |
| 192 | +- [Architecture](./docs/spec/architecture.md) - Technical architecture overview |
| 193 | +- [Component System](./docs/spec/component.md) - How components work |
| 194 | + |
| 195 | +### Protocol Specifications |
| 196 | +- [Protocol Overview](./docs/protocol/overview.md) - Complete protocol reference |
| 197 | +- [Form Protocol](./docs/protocol/form.md) - Form schema specification |
| 198 | +- [View Protocol](./docs/protocol/view.md) - Data view specifications |
| 199 | +- [Page Protocol](./docs/protocol/page.md) - Page layout specifications |
| 200 | + |
| 201 | +### API Reference |
| 202 | +- [Core API](./docs/api/core.md) - `@object-ui/core` API reference |
| 203 | +- [React API](./docs/api/react.md) - `@object-ui/react` API reference |
| 204 | +- [Components API](./docs/api/components.md) - Component library reference |
| 205 | +- [Designer API](./docs/api/designer.md) - Visual designer API |
| 206 | + |
| 207 | +### Advanced |
| 208 | +- [Lazy-Loaded Plugins](./docs/lazy-loaded-plugins.md) - Plugin architecture |
| 209 | +- [Component Packages](./docs/spec/component-package.md) - Creating custom components |
| 210 | + |
| 211 | +## 🎯 What Can You Build? |
| 212 | + |
| 213 | +Object UI is perfect for: |
| 214 | + |
| 215 | +- ✅ **Admin Panels** - Complete CRUD interfaces in minutes |
| 216 | +- ✅ **Dashboards** - Data visualization and analytics |
| 217 | +- ✅ **Forms** - Complex multi-step forms with validation |
| 218 | +- ✅ **CMS** - Content management systems |
| 219 | +- ✅ **Internal Tools** - Business applications |
| 220 | +- ✅ **Prototypes** - Rapid UI prototyping |
| 221 | + |
| 222 | +## 🏗️ Examples |
| 223 | + |
| 224 | +Check out complete example applications: |
| 225 | + |
| 226 | +```bash |
| 227 | +# Clone the repository |
| 228 | +git clone https://github.com/objectql/objectui.git |
| 229 | +cd objectui |
| 230 | + |
| 231 | +# Install dependencies |
| 232 | +pnpm install |
| 233 | + |
| 234 | +# Run the playground |
| 235 | +pnpm playground |
| 236 | + |
| 237 | +# Run the visual designer demo |
| 238 | +pnpm designer |
| 239 | + |
| 240 | +# Run the prototype example |
| 241 | +pnpm prototype |
| 242 | +``` |
| 243 | + |
| 244 | +## 🛣️ Roadmap |
| 245 | + |
| 246 | +See our [detailed roadmap](./docs/ROADMAP.md) for upcoming features and release timeline. |
| 247 | + |
| 248 | +**Q1 2026** (Available March 2026): |
| 249 | +- ✅ Core schema rendering |
| 250 | +- ✅ 20+ production-ready components |
| 251 | +- ✅ Expression system |
| 252 | +- ✅ Visual designer (beta) |
| 253 | + |
| 254 | +**Q2-Q4 2026**: |
| 255 | +- 🔄 Advanced data binding |
| 256 | +- 🔄 Real-time collaboration |
| 257 | +- 🔄 Mobile components |
| 258 | +- 🔄 AI-powered schema generation |
| 259 | + |
| 260 | +## 🤝 Contributing |
| 261 | + |
| 262 | +We welcome contributions! Please read our [Contributing Guide](./CONTRIBUTING.md) for details. |
| 263 | + |
| 264 | +### Development Setup |
| 265 | + |
| 266 | +```bash |
| 267 | +# Clone the repository |
| 268 | +git clone https://github.com/objectql/objectui.git |
| 269 | +cd objectui |
| 270 | + |
| 271 | +# Install dependencies |
| 272 | +pnpm install |
| 273 | + |
| 274 | +# Run tests |
| 275 | +pnpm test |
| 276 | + |
| 277 | +# Build all packages |
| 278 | +pnpm build |
| 279 | + |
| 280 | +# Run documentation site |
| 281 | +pnpm docs:dev |
| 282 | +``` |
| 283 | + |
| 284 | +## 📄 License |
| 285 | + |
| 286 | +Object UI is [MIT licensed](./LICENSE). |
| 287 | + |
| 288 | +## 🌟 Community & Support |
| 289 | + |
| 290 | +- ⭐ [Star on GitHub](https://github.com/objectql/objectui) - Show your support! |
| 291 | +- 📖 [Documentation](https://www.objectui.org) - Comprehensive guides and API reference |
| 292 | +- 💬 [GitHub Discussions](https://github.com/objectql/objectui/discussions) - Ask questions and share ideas |
| 293 | +- 🐛 [Report Issues](https://github.com/objectql/objectui/issues) - Found a bug? Let us know |
| 294 | +- 📧 [Email Us](mailto:hello@objectui.org) - Get in touch |
| 295 | + |
| 296 | +## 🙏 Acknowledgments |
| 297 | + |
| 298 | +Object UI is inspired by and builds upon ideas from: |
| 299 | +- [Amis](https://github.com/baidu/amis) - Schema-driven UI framework |
| 300 | +- [Formily](https://github.com/alibaba/formily) - Form solution |
| 301 | +- [Shadcn/UI](https://ui.shadcn.com/) - UI component library |
| 302 | +- [Tailwind CSS](https://tailwindcss.com/) - Utility-first CSS framework |
| 303 | + |
| 304 | +--- |
| 305 | + |
| 306 | +<div align="center"> |
| 307 | + |
| 308 | +**Built with ❤️ by the [ObjectQL Team](https://github.com/objectql)** |
| 309 | + |
| 310 | +[Website](https://www.objectui.org) · [Documentation](https://www.objectui.org) · [GitHub](https://github.com/objectql/objectui) |
| 311 | + |
| 312 | +</div> |
0 commit comments