SynUI
A drag-and-drop UI kit: sites as folders of JSON
- Type
- Library
- Built with
- TypeScript
- Source
- Private repository
Overview
A drag-and-drop UI kit for React: build any front end — a shop, a landing page, a portal, an app's screens — as a folder of small JSON files, then render it anywhere. One package renders, one builds.
Core features
@synui/renderer renders a built site from its JSON folder (also shipped as a CDN script); @synui/builder is the visual editor with an app-defined API list, template library and media API, plus headless tools. Both are objects created from a config rather than components with props, so there is no provider or context to keep in sync.
Architecture
Two packages with a hard boundary: the builder's code never ships in a site — a build check enforces that the renderer contains none of it — and the builder uses the renderer as a same-version peer dependency. Built with Vite, React 19, Tailwind CSS 4 and Radix primitives, versioned through packed releases (v3.5 to v3.8), with the public renderer mirrored to a CDN repository served by jsDelivr. Commerza consumes it as its storefront designer.
Frameworks, tools & libraries
The stack behind it
Frameworks
- React 19
- Vite
- Tailwind CSS 4
- React Router
Tools & infrastructure
- Vitest
- jsDelivr CDN
- GitHub
Libraries
- Radix UI
- shadcn/ui
- class-variance-authority
- react-resizable-panels
- lucide-react
- Sonner
Skills applied
What I brought to it
- 01
Schema-driven rendering: a site format expressed as JSON files
- 02
Visual builder design with panels, drag and drop and live preview
- 03
Package-boundary enforcement through build checks
- 04
Semantic versioning and release flow across two packages
- 05
CDN distribution of a renderer script
- 06
Design-system work on Radix and Tailwind
Languages
What it's written in
- TypeScript~213 files
renderer, builder and catalog
- CSS~34 files
theme and component styles
- JavaScript~14 files
scripts and CDN build
Next project
WorthLedger