Skip to Content
Apso is in public beta. Get started
GuidesFrameworksOverview

Choose a framework

The Apso CLI implements generators for three standard backend stacks. The .apsorc schema is language-independent, while each generator writes framework-native models, handlers, validation, services, and migration support.

Framework outputsOne contract, three familiar stacks.
Standard tooling
.apsorcentities • relationships • auth • scope
TypeScript

NestJS + TypeORM

REST API, OpenAPI, migrations, validation, and extension boundaries.

npm run build
Python

FastAPI + SQLAlchemy

REST API, OpenAPI, migrations, validation, and extension boundaries.

pytest
Go

Gin + GORM

REST API, OpenAPI, migrations, validation, and extension boundaries.

go test ./...
Pick the framework your team already knows. The generated project uses its normal build, test, package, and deployment conventions.

Available frameworks

Create a project

# TypeScript apso init --name my-api --language typescript --skip-platform # Python apso init --name my-api --language python --skip-platform # Go apso init --name my-api --language go --skip-platform

After editing .apsorc, run the same generation command in each project:

apso generate

Compare the stacks

LanguageHTTP frameworkData layerValidationMigrationsGenerated directory
TypeScriptNestJSTypeORMclass-validatorTypeORMsrc/autogen/
PythonFastAPISQLAlchemy 2Pydantic 2Alembicapp/autogen/
GoGinGORMgo-playground/validatorGooseautogen/

Choose a language

  • Choose TypeScript for NestJS conventions, decorators, dependency injection, and a shared language with a JavaScript frontend.
  • Choose Python for FastAPI, Pydantic models, async SQLAlchemy, and Python-based application logic.
  • Choose Go for a compact compiled service with Gin handlers and GORM models.

Switching languages creates a new project from the same .apsorc schema. Custom extension code is framework-specific and must be ported separately.

Shared generation boundary

Every template separates generated and custom code:

AreaOwnership
autogen/Rewritten by apso generate
extensions/Written and maintained by your team
.apsorcVersion-controlled source of truth

Keep application rules in extensions/ so schema regeneration remains a routine part of development.

Last updated on