Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Project layout

A product app is a directory with atlantus.toml and an app/ tree of .atl files.

my-api/
  atlantus.toml
  .vscode/                # VS Code / Cursor: .atl settings, extension tip, tasks
  app/
    main.atl              # entry / composition
    routes/               # HTTP handlers (*.atl)
    models/
    services/
    repositories/
    jobs/
    events/
    policies/
    providers/
    views/                # HTML templates (*.html)
  config/                 # env / database config (when scaffolded)
  db/
    migrations/           # SQL migrations

Open the project folder in VS Code or Cursor: install the recommended Atlantus (.atl) extension when prompted for syntax highlighting. .vscode/settings.json already associates *.atl and points atl.lsp at the atl-lsp binary if you have it on PATH.

Rules of thumb

PathRole
app/routes/*.atlHTTP routes (get / post / …)
app/services/*.atlBusiness logic
app/models/*.atlDomain shapes
app/views/**/*.htmlTemplates for view(...)
db/migrations/Schema evolution
atlantus.tomlProject name, server defaults

No Rust required for handlers. atlantus new creates this tree for you.

Multi-file modules

// app/routes/users.atl
module users

import services.users as Users

get "/users/{id}" {
  def show(req) {
    return json(Users.find(req.param("id")))
  }
}

The compiler loads app/**/*.atl into one module + route table for the runtime.

Environment variables (common)

EnvUse
ATL_DATABASE_URLSQLite / Postgres URL
ATL_ENVdevelopment / production
ATL_AUTH_SECRETRequired in production when using auth
ATL_CORS_ORIGINSCORS allow list (comma-separated)
ATL_MAX_BODY_BYTESMax request body size

Commands in a project directory

atlantus check --path .
atlantus db migrate --path .
atlantus dev --path . --port 3000
atlantus start --path . --host 0.0.0.0 --port 3000

Next: Syntax.