Quick Start
1. Create your project
npx @ndnci/codabra@alpha create my-app
cd my-app
pnpm install
2. Define a model
Edit config/models/User.json:
{
"name": "User",
"fields": {
"email": "string",
"name": "string",
"createdAt": "date_now"
}
}
3. Define routes
Edit config/routes/Users.json:
{
"routes": [
{ "method": "GET", "path": "/api/users", "response": "User[]" },
{ "method": "POST", "path": "/api/users", "body": { "email": "string", "name": "string" }, "response": "User" },
{ "method": "GET", "path": "/api/users/:id", "params": { "id": "uuid" }, "response": "User" },
{ "method": "DELETE", "path": "/api/users/:id", "params": { "id": "uuid" } }
]
}
4. Define a view
Edit config/views/LoginPage.json:
{
"name": "LoginPage",
"path": "/login",
"root": {
"type": "form",
"fields": [
{ "type": "input", "id": "email", "label": "Email" },
{ "type": "input", "id": "password", "label": "Password" },
{ "type": "button", "label": "Login" }
]
}
}
5. Generate and start
pnpm codabra generate # generates TypeScript types, API routes, pages
pnpm codabra dev # generates + starts the dev server
Your app is now running at http://localhost:3000 with:
GET /api/users— returns[]POST /api/users— returns{ success: true }GET /api/users/:id— returns{}DELETE /api/users/:id— returns{ success: true }/login— renders a login form
All generated from config — no manual code written!