Skip to content

Quickstart

This page walks through generating, running and exercising a brand-new project end-to-end.

1. Generate the project

Bash
apogee new my-project
cd my-project

This produces a 31-file scaffold:

Text Only
my-project/
β”œβ”€β”€ docker-compose.yml
β”œβ”€β”€ Dockerfile.dev
β”œβ”€β”€ alembic.ini
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ domain/
β”‚   β”œβ”€β”€ application/
β”‚   β”œβ”€β”€ infrastructure/
β”‚   └── presentation/
β”œβ”€β”€ migrations/
β”œβ”€β”€ tests/
└── apogee.yml

2. Add a domain entity

Bash
apogee make:entity Customer \
  --field name:str \
  --field email:str \
  --field active:bool=true

This generates:

  • src/domain/customer/entity.py
  • src/domain/customer/repository.py (port)
  • src/application/customer/use_cases.py
  • src/infrastructure/customer/orm.py
  • src/infrastructure/customer/repository.py
  • src/presentation/api/customer/router.py
  • migration file in migrations/

3. Run the project

Bash
apogee up

This starts:

Service Port Purpose
app 8000 FastAPI server
postgres 5432 Relational DB

Visit http://localhost:8000/docs for the auto-generated OpenAPI UI.

4. Exercise the API

Bash
curl -X POST http://localhost:8000/customers \
  -H 'Content-Type: application/json' \
  -d '{"name": "Ada Lovelace", "email": "ada@example.com"}'

curl http://localhost:8000/customers

5. Stop and clean up

Bash
apogee down              # stops containers
apogee down --volumes    # also removes the database volume

Where to go next

  • Want to add authentication? β†’ see the apogee-auth module.
  • Want to add a chatbot or RAG? β†’ see the apogee-ai-rag module.
  • Want to scaffold a frontend? β†’ see the apogee-frontend module.
  • Want to understand the design? β†’ Concepts.