Developer Workflow
This page outlines how development with Minimal works from setup to production.
Phase 1 — Setup (Once)
Done by DevOps or an admin. Happens once per product.
- Deploy Minimal on your server
- Configure
config.yml— server key, database defaults - Set up your gateway — JWT validation, header injection into Minimal
- Create your organization → get
org_id - Create your project → get
project_idand three spaces — dev, staging, prod
After this, Minimal is live and ready to accept requests.
Phase 2 — Auto API
No code required. As soon as Minimal is pointed at your database, every table has four live endpoints:
GET /minimal/api/rest/auto/v1/{org_abbr}/{project_abbr}/{db_type}/{db_name}/{table} — list rows
POST /minimal/api/rest/auto/v1/{org_abbr}/{project_abbr}/{db_type}/{db_name}/{table} — create row
PUT /minimal/api/rest/auto/v1/{org_abbr}/{project_abbr}/{db_type}/{db_name}/{table} — update row
DELETE /minimal/api/rest/auto/v1/{org_abbr}/{project_abbr}/{db_type}/{db_name}/{table} — delete row
Use Auto API for standard CRUD — dashboards, admin panels, simple data operations.
Phase 3 — Custom API
When Auto API isn't enough — JOINs, transformations, multi-step logic — write a YAML definition.
- Write the YAML definition locally
- Generate a new
feature_id(ULID) - Deploy to dev space —
POST /minimal/rest/definition/v1 - Call the endpoint with
?version=0.1 - Iterate — update with
PUT, bumphttp.versioneach time - When ready — promote to staging and production via
space/copy
Phase 4 — Promote to Production
dev space → build and test
↓
staging space → QA and sign off
↓
production → live, zero restart
Promotion is a single API call — pass a list of definition_id values and a target space. Minimal copies them instantly.
Day-to-Day Loop
Write YAML
→ deploy to dev
→ call endpoint
→ tweak, bump version, redeploy
→ copy to staging → production
What You Don't Write
| Traditional | With Minimal |
|---|---|
| Route handlers | ❌ Not needed |
| ORM models | ❌ Not needed |
| Auth middleware | ❌ Handled by gateway |
| Server restart on new endpoint | ❌ Not needed |
The only code you write is SQL inside a YAML file — and optionally Starlark or Expr for data transformation.