Quick Start

Create your first TriStack project in minutes

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

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

LanguageStatus
PythonScaffolding
GoScaffolding
RustScaffolding

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:

# run on demand — no install needed
uvx tristack

# or install once with uv
uv tool install tristack

Get Started

Prerequisites

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

LanguageRuntimePackage manager
PythonPython 3.12+ (python.org)uv (astral.sh/uv) — or poetry / pip
GoGo 1.22+ (go.dev)go
RustRust 1.75+ (rustup)cargo

CLI (prompts)

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:

uvx tristack --yes

Stack Builder (UI)

  • Visit /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:
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)

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.

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

Common Setups — Python

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

Default Stack

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

Postgres API

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

Django Monolith

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

Minimal Flask Service

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

Server-rendered (HTMX)

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

The Go CLI runs as the standalone tristack binary.

Gin + GORM + SQLite

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

Fiber + sqlx + Postgres

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

The Rust CLI runs as the standalone tristack binary.

Axum + SeaORM + SQLite

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

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

See the full list in the CLI Reference. 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

On this page