Get started
Apso turns a version-controlled schema into a backend service you can run, test, extend, and deploy. Start from a small product workflow, inspect the generated API, and add custom behavior after the data model is stable.
Pick a path
Define a task API in .apsorc, generate NestJS code, and test the REST endpoints locally
Begin with a detailed model for SaaS, CRM, commerce, operations, or an industry system
Starter backendsTurn your coding agent into a backend expert with Apso’s rules, schema knowledge, and project-aware tools
Make your agent an Apso expertThe Apso workflow
- Model the domain. Record entities, fields, and relationships in
.apsorc. - Generate the service. Run
apso generatefor TypeScript, Python, or Go. - Inspect the API. Start the service locally and verify the generated routes and OpenAPI output.
- Add product behavior. Put custom endpoints, hooks, and workflows in
src/extensions/. - Evolve the schema. Run
apso migrateto preview and generate database changes. - Connect and deploy. Use REST or
@apso/sdkfrom the frontend, then choose Apso Cloud or your own infrastructure.
Minimal schema
.apsorc
{
"version": 2,
"language": "typescript",
"rootFolder": "src",
"entities": [
{
"name": "Project",
"created_at": true,
"updated_at": true,
"fields": [
{ "name": "name", "type": "text" },
{ "name": "status", "type": "enum", "values": ["Active", "Archived"] }
]
}
],
"relationships": []
}apso generate
apso devTreat .apsorc as the source of truth. Generated files belong in src/autogen/; code you expect to preserve belongs in src/extensions/.
What the generator creates
| Area | Generated output |
|---|---|
| Data | ORM models, relationships, constraints, and migration support |
| API | REST controllers, request DTOs, validation, filters, and OpenAPI documentation |
| Application | Services, auth guards, tenant context, and extension hooks |
| Operations | Local database configuration, tests, Docker files, and deployment configuration |
Continue
Last updated on