--- description: Cognitive orientation - project identity and constraints alwaysApply: true --- # LiquidRender DSL-to-React rendering engine built on TurboStarter. ## What This Is A system that compiles a domain-specific language into React UI components. The DSL describes interfaces declaratively; the renderer produces interactive dashboards, forms, and data visualizations. ## Structure ``` packages/liquid-render/ ← Core engine ├── src/compiler/ ← DSL → render tree ├── src/renderer/ ← React components (47 components) │ └── components/ ← DataTable, Charts, Forms, Layout └── src/types/ ← Type definitions packages/liquid-code/ ← Code generation packages/liquid-survey/ ← Survey/form builder apps/web/ ← Next.js web app apps/mobile/ ← Expo mobile app packages/db/ ← Drizzle schemas (10 tables) ``` ## Core Files | What | Where | |------|-------| | Main renderer | `liquid-render/src/renderer/LiquidUI.tsx` | | Design tokens | `liquid-render/src/renderer/components/utils.ts` | | DSL types | `liquid-render/src/types/` | | DB schemas | `packages/db/src/schema/` | ## Before Building Anything **Read `capabilities.yaml` first.** Most things already exist. ## Conventions - Design tokens in `utils.ts` - never hardcode colors/spacing - Components need `data-liquid-type` attribute - Handle empty/null states in all components ## Expand - Creating components → `cache/answers/how-to-create-component.md` - Full entity map → `knowledge.json` - Library docs → `libraries.json` + MCP