# Quick Start (/docs)



## Philosophy [#philosophy]

* Roll your own stack: pick only what you need, nothing extra.
* Minimal templates: bare-bones scaffolds with zero bloat.
* Latest dependencies: always current and stable by default.
* Idiomatic per language: a generated Python project should look like a Python developer wrote it — and a Go or Rust one should look like a Go or Rust developer wrote it.
* Free and open source: forever.

## Languages [#languages]

TriStack scaffolds backend projects in multiple languages. Each has its own option set (framework, ORM, migrations, package manager, addons) in the [Compatibility reference](/docs/cli/compatibility).

| Language | Status      |
| -------- | ----------- |
| Python   | Scaffolding |
| Go       | Scaffolding |
| Rust     | Scaffolding |

## Install the CLI [#install-the-cli]

TriStack installs as a standalone native binary for Windows, macOS, and Linux, or runs on demand with `uv` over Python. Pick your platform:

<CodeBlockTabs defaultValue="python">
  <CodeBlockTabsList>
    <CodeBlockTabsTrigger value="python">
      Python (any OS)
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="windows">
      Windows
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="macos">
      macOS
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="linux">
      Linux
    </CodeBlockTabsTrigger>
  </CodeBlockTabsList>

  <CodeBlockTab value="python">
    ```bash
    # run on demand — no install needed
    uvx tristack

    # or install once with uv
    uv tool install tristack
    ```
  </CodeBlockTab>

  <CodeBlockTab value="windows">
    `powershell irm https://tristack.space/install.ps1 | iex `
  </CodeBlockTab>

  <CodeBlockTab value="macos">
    `bash curl -fsSL https://tristack.space/install.sh | bash `
  </CodeBlockTab>

  <CodeBlockTab value="linux">
    ```bash
    curl -fsSL https://tristack.space/install.sh | bash
    ```
  </CodeBlockTab>
</CodeBlockTabs>

## Get Started [#get-started]

### Prerequisites [#prerequisites]

You only need the runtime of whatever language you scaffold, plus **Git** (optional, [git-scm.com](https://git-scm.com/)) to initialize a repository:

| Language | Runtime                                              | Package manager                                                         |
| -------- | ---------------------------------------------------- | ----------------------------------------------------------------------- |
| Python   | Python 3.12+ ([python.org](https://www.python.org/)) | `uv` ([astral.sh/uv](https://docs.astral.sh/uv/)) — or `poetry` / `pip` |
| Go       | Go 1.22+ ([go.dev](https://go.dev/dl/))              | `go`                                                                    |
| Rust     | Rust 1.75+ ([rustup](https://rustup.rs/))            | `cargo`                                                                 |

### CLI (prompts) [#cli-prompts]

```bash
uvx tristack
```

Follow the interactive prompts to pick your language, framework, frontend, ORM/migrations, database, package manager, and addons.

Skip prompts and use the default stack:

```bash
uvx tristack --yes
```

### Stack Builder (UI) [#stack-builder-ui]

* Visit [/new](/new) to pick your stack, preview the generated file tree live, and copy the exact CLI command. The builder supports Python, Go, and Rust stacks.
* The command you copy runs verbatim:

```bash
uvx tristack my-tristack-app \
  --language python \
  --framework fastapi \
  --frontend none \
  --orm sqlmodel \
  --migrations alembic \
  --database sqlite \
  --package-manager uv \
  --addons docker ruff pytest \
  --install
```

### AI agent (JSON-first) [#ai-agent-json-first]

Let an LLM CLI or CI job scaffold projects for you with the fully JSON-first `create-json` command — no prompts, one machine-readable payload. See [Agent Workflows](/docs/cli/agent-workflows).

Native Claude Code / Codex plugins ship in a later phase.

## Common Setups — Python [#common-setups--python]

The examples below use the Python runner (`uvx tristack`).

### Default Stack [#default-stack]

```bash
uvx tristack my-api \
  --language python \
  --framework fastapi \
  --orm sqlmodel \
  --migrations alembic \
  --database sqlite \
  --package-manager uv \
  --addons docker ruff pytest
```

### Postgres API [#postgres-api]

```bash
uvx tristack my-api \
  --language python \
  --framework fastapi \
  --orm sqlalchemy \
  --migrations alembic \
  --database postgres \
  --package-manager uv \
  --addons docker pytest
```

### Django Monolith [#django-monolith]

```bash
uvx tristack my-django \
  --language python \
  --framework django \
  --database postgres \
  --package-manager poetry \
  --addons docker ruff mypy pytest
```

### Minimal Flask Service [#minimal-flask-service]

```bash
uvx tristack my-micro \
  --language python \
  --framework flask \
  --database none \
  --package-manager uv \
  --addons pytest
```

### Server-rendered (HTMX) [#server-rendered-htmx]

```bash
uvx tristack my-app \
  --language python \
  --framework fastapi \
  --frontend htmx \
  --orm sqlmodel \
  --migrations alembic \
  --database sqlite \
  --package-manager uv \
  --addons ruff pytest
```

## Common Setups — Go [#common-setups--go]

The Go CLI runs as the standalone `tristack` binary.

### Gin + GORM + SQLite [#gin--gorm--sqlite]

```bash
tristack my-api \
  --language go \
  --framework gin \
  --orm gorm \
  --migrations goose \
  --database sqlite \
  --package-manager go \
  --addons docker air golangci-lint
```

### Fiber + sqlx + Postgres [#fiber--sqlx--postgres]

```bash
tristack my-api \
  --language go \
  --framework fiber \
  --orm sqlx \
  --migrations golang-migrate \
  --database postgres \
  --package-manager go \
  --addons docker air golangci-lint
```

## Common Setups — Rust [#common-setups--rust]

The Rust CLI runs as the standalone `tristack` binary.

### Axum + SeaORM + SQLite [#axum--seaorm--sqlite]

```bash
tristack my-api \
  --language rust \
  --framework axum \
  --orm seaorm \
  --migrations none \
  --database sqlite \
  --package-manager cargo \
  --addons docker cargo-watch clippy
```

### Actix Web + Diesel + Postgres [#actix-web--diesel--postgres]

```bash
tristack my-api \
  --language rust \
  --framework actix-web \
  --orm diesel \
  --migrations none \
  --database postgres \
  --package-manager cargo \
  --addons docker cargo-watch clippy
```

## Flags Cheat Sheet [#flags-cheat-sheet]

See the full list in the [CLI Reference](/docs/cli). Option sets are per language:

* `--language`: python, go, rust
* `--framework` (python): fastapi, litestar, django, flask
* `--framework` (go): gin, fiber, echo, chi, stdlib
* `--framework` (rust): axum, actix-web, rocket, warp, salvo, loco
* `--frontend` (python): htmx, none
* `--frontend` (go): htmx, none
* `--frontend` (rust): htmx, none
* `--orm` (python): sqlmodel, sqlalchemy, tortoise, none
* `--orm` (go): sqlc, gorm, sqlx, none
* `--orm` (rust): seaorm, diesel, sqlx-rust, none
* `--migrations` (python): alembic, none
* `--migrations` (go): goose, golang-migrate, none
* `--migrations` (rust): none
* `--database`: sqlite, postgres, mysql, none
* `--package-manager` (python): uv, poetry, pip
* `--package-manager` (go): go
* `--package-manager` (rust): cargo
* `--addons` (python): docker, ruff, mypy, pytest, github-actions, none
* `--addons` (go): docker, air, golangci-lint, github-actions, none
* `--addons` (rust): docker, cargo-watch, clippy, github-actions, none

## Next Steps [#next-steps]

<Cards>
  <Card href="/docs/cli" title="CLI reference">
    Flags, usage, and examples for each command
  </Card>

  <Card href="/docs/project-structure" title="Project Structure">
    How a generated project is laid out per language
  </Card>

  <Card href="/docs/cli/compatibility" title="Compatibility">
    Valid options per language and how the CLI validates them
  </Card>

  <Card href="/docs/tristack-config" title="tristack.jsonc">
    The config file written to every generated project
  </Card>

  <Card href="/docs/guides/python-quick-start" title="Python quick start">
    Scaffold and run your first FastAPI project end to end
  </Card>

  <Card href="/docs/guides/go-quick-start" title="Go quick start">
    Scaffold and run your first Gin + GORM project end to end
  </Card>

  <Card href="/docs/guides/rust-quick-start" title="Rust quick start">
    Scaffold and run your first Axum + SeaORM project end to end
  </Card>

  <Card href="/docs/contributing" title="Contributing">
    Dev setup and contribution flow
  </Card>
</Cards>
