Introduction
Before we dive in, this is an updated and more refined version of the DSL approach I shared in earlier posts. It now includes a richer set of features, enabling support for a wider range of scenarios. You can find the full DSL documentation at the link below.
In the world of enterprise software, there’s a constant tug-of-war between flexibility and maintainability — especially when it comes to managing structured data and building complex UI forms. After working through years of pattern repetition, boilerplate, and disconnected validation logic, I’ve built something I believe bridges the gap:
A declarative, human-readable DSL (Domain-Specific Language) that lets you model both your data structures and interactive forms — in a way that is clean, scalable, and UI-framework agnostic.
This DSL is now live and fully documented — you can read the full reference and examples here:
What It Is
The system consists of two tightly integrated parts:
DSL Type | Purpose |
---|---|
data_model DSL | Define entities, fields, constraints, guards, and lifecycle logic |
form DSL | Describe UI layout, logic, actions, styles, and templates |
Together, they form the backbone of a low-code platform or developer-driven UI engine that:
- Keeps validation and business logic centralized
- Enables reusability through components and templates
- Makes forms reactive by default (without custom code)
Why I Built This
Modern platforms often suffer from one of two issues:
- Tightly coupled UIs that are hard to maintain or reuse
- Disconnected schemas and views that duplicate logic
I wanted to solve both problems by:
- Defining models and forms using a shared vocabulary
- Enabling templates, slots, and conditional logic as first-class citizens
- Making async behavior and validation declarative
Key Features
- ✅ Human-readable syntax with
@
,@@
,?
, andEMPTY
conventions - ✅ Computed fields, validation guards, lifecycle triggers
- ✅ Layout primitives (
HORIZONTAL_STACK
,COLUMN
,GRID
) - ✅ Full templating and slot support
- ✅ Conditionals (
IF
,ELSE IF
,ELSE
) and named logic - ✅ Reactive view logic and state-driven style
- ✅ Async data loading with callback injection
Read the Full Guide
The DSL is fully documented with:
- ✅ Syntax reference for both data and form layers
- ✅ Code examples from minimal to enterprise-grade
- ✅ Best practices, patterns, and templating strategies
- ✅ Real-world layout and validation use cases
- ✅ A complete financial system example with
Account
+Transaction
modeling
What’s Next?
This DSL lays the foundation for:
- A full visual low-code editor
- Schema-to-code generators
- DSL interpreters for different UI frameworks
- Rule engines that interact with the models dynamically
If you’re building enterprise software, low-code tools, or internal UI platforms — I think this DSL could change the way you think about forms and data models.