Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.tovuk.com/llms.txt

Use this file to discover all available pages before exploring further.

Tovuk fullstack apps use one deployable project:
  • Rust backend: APIs, auth callbacks, writes, server-side rules, managed Postgres.
  • Static frontend: TanStack, Vite, or another TypeScript app built to files.
  • One URL: frontend files at /, Rust backend requests under /api/*.

One Command

Put one tovuk.toml in the repo root:
tovuk.toml
api/Cargo.toml
web/package.json
Deploy from the repo root:
npx tovuk deploy --database
Tovuk builds the backend and frontend together, attaches managed Postgres to the backend when requested, and returns one *.tovuk.app URL.
name = "my-app"
kind = "fullstack"

[backend]
root = "api"
check = "cargo fmt --all --check && cargo check --locked && cargo clippy --locked --all-targets --all-features -- -D warnings"
build = "cargo build --release"
command = "./target/release/api"
port = 3000
health = "/api/healthz"

[frontend]
root = "web"
check = "bun ci && bun run typecheck && bun run lint"
build = "bun run build"
output = "dist"

Routing

The runtime serves frontend assets first. Requests to /api and /api/* proxy to the Rust backend without changing the hostname. Frontend JavaScript and TypeScript are browser/build inputs only. Tovuk rejects Next API routes, Astro server endpoints, Svelte +server handlers, middleware, SSR handlers, and backend commands that start Node, Bun, Deno, or TS runtimes. For split projects with separate frontend and backend deploys, configure CORS or use a same-origin custom domain.
npx tovuk env set --app api FRONTEND_ORIGIN=https://web.tovuk.app
npx tovuk deploy api
For a same-origin product URL, connect a custom domain and route frontend and backend paths from your own domain design. Keep the frontend static at runtime and send dynamic work to the Rust backend.
Last modified on May 29, 2026