title: "Step 10 — Deploy" active_step: 10

# Step 10 — Deploy

Ship to production. Static build, compiled binary, or Docker.

## Option 1 — Static build

For sites without sessions or auth, build a fully static output. Every page is pre-rendered to HTML. Deploy to any CDN: Cloudflare Pages, Netlify, Vercel, S3.

    run-what build --path . --output dist

Output is in `dist/`. All assets are fingerprinted. Upload the directory to your CDN.

## Option 2 — Compiled binary

For apps with sessions, database, or auth — compile a single binary. Copy it to any Linux server. No runtime dependencies.

    # Build the binary
    cargo build --release --bin run-what

    # Copy binary + project to your server
    scp target/release/run-what user@server:/app/
    scp -r site/ components/ wwwhat.toml user@server:/app/

    # Run it
    ./run-what dev --path /app --port 8085

## Option 3 — Docker

    FROM rust:1.75-slim AS builder
    WORKDIR /app
    COPY . .
    RUN cargo build --release --bin run-what

    FROM debian:bookworm-slim
    WORKDIR /app
    COPY --from=builder /app/target/release/run-what .
    COPY site/ site/
    COPY components/ components/
    COPY wwwhat.toml .

    EXPOSE 8085
    CMD ["./run-what", "dev", "--path", ".", "--port", "8085"]

## Production databases

SQLite works well for single-server deployments. For scale-out or serverless, switch to Cloudflare D1 or Supabase — same `local:` query syntax, no code changes.

Cloudflare D1

    [database]
    type = "d1"
    account_id = "..."
    database_id = "..."
    api_token = "..."

Free tier. Serverless SQLite at the edge.

Supabase

    [database]
    type = "supabase"
    url = "https://xyz.supabase.co"
    anon_key = "..."

Postgres via PostgREST API. Free tier.

## Deployment via CLI

    # Build a static deployment
    run-what deploy --target static --output dist

    # Generate sitemap.xml
    run-what sitemap --host https://yoursite.com

    # Run project health checks
    run-what doctor

You made it. Tutorial complete.

You now know how to build full-stack apps with nothing but HTML. Routing, components, layouts, sessions, database CRUD, form validation, authentication, and deployment — all without writing a line of JavaScript or backend code.

Read the full docs → Start over
What you learned

- `run-what build` generates a static site — deploy to any CDN
- Single compiled binary — copy to any Linux server, no runtime needed
- Docker build with multi-stage Dockerfile keeps image size small
- Switch databases with a `wwwhat.toml` config change — no code changes
- D1 (Cloudflare) and Supabase are both supported as production backends