DEVELOPMENT / SOURCE FORMAT
Dowe syntax from the first line
Dowe is a whitespace-oriented declarative language. Learn the three value shapes, then let the shared compiler and formatter keep source consistent across every target.
1 / VALUE SHAPES
Choose the delimiter that matches the data
A scalar is one value, an object gives values names, and an array keeps values in order. Responsive props are objects; imported route graphs and HTTP methods are arrays.
Shape | Example | What it means |
|---|---|---|
No dataThere are no records to display | ||
2 / ARRAYS
Use spaces between ordered values
The canonical array form has no commas. Empty arrays remain [], nested braces or brackets keep their contents together, and nested arrays support more than one dimension.
main
views:[HomeViews DocsViews]
server port:8081
cors methods:["GET" "POST" "PATCH" "DELETE"] headers:["Content-Type" "Authorization"]
const cards:
value:[
{ title:"First card" tags:["new" "featured"] }
{ title:"Second card" tags:["stable"] }
]3 / OBJECTS AND PROPS
Use key:value pairs inside braces
Objects also use spaces, but every entry has a key. Props use the same key:value shape and come before child nodes.
Grid columns:{ xs:1 lg:2 }
Button show:{ xs:false md:true } iconStart:{ when:isReady value:"check" }
"Continue"
Grid:
columns:{ xs:1 lg:3 }
gap:4
Text
"Three responsive columns"4 / FIRST-PROJECT CHECKLIST
Avoid the mistakes that slow down a first project
Run the compiler early. Diagnostics, formatting, and the editor integrations all share the same source contract.
Mistake | Correction |
|---|---|
No dataThere are no records to display | |
5 / NEXT STEP
Start with the generated project
dowe init creates a blank or CRUD project with the same syntax documented here. After initialization, run the formatter and then compile the server and web targets.