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
| Path | Role |
|---|---|
app/routes/*.atl | HTTP routes (get / post / …) |
app/services/*.atl | Business logic |
app/models/*.atl | Domain shapes |
app/views/**/*.html | Templates for view(...) |
db/migrations/ | Schema evolution |
atlantus.toml | Project 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)
| Env | Use |
|---|---|
ATL_DATABASE_URL | SQLite / Postgres URL |
ATL_ENV | development / production |
ATL_AUTH_SECRET | Required in production when using auth |
ATL_CORS_ORIGINS | CORS allow list (comma-separated) |
ATL_MAX_BODY_BYTES | Max 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.