RustRover cargo-generate template: Axum + Vue 3 + TypeScript + Tailwind + sqlx
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 
 
 

2.0 KiB

rust-template

RustRover-ready fullstack starter: Axum + PostgreSQL + sqlx on the backend, Vue 3 + TypeScript + Tailwind 4 on the frontend.

The backend route table is the API contract. utoipa-axum builds OpenAPI from the same handlers Axum serves. just generate-api writes packages/contracts/openapi.json and a typed Vue client. Vite reads config/*.toml and reverse-proxies /api and /health to the server bind address.

Layout

config/                  shared TOML (server + Vite)
apps/server/             Axum, sqlx, request logging, OpenAPI
apps/web/                Vue 3 + TS + Tailwind
packages/contracts/      generated openapi.json
scripts/generate-api.mjs typed client from that spec
infra/compose/           local Postgres

Run it

cp .env.example .env
docker compose -f infra/compose/docker-compose.yml up -d postgres
cargo run -p server
cd apps/web && npm install && npm run dev

Vite binds 127.0.0.1 on purpose. localhost can resolve to ::1 and miss the proxy.

RustRover

Open the repo root. Run cargo run -p server with APP_ENV=development.

To use this as a New Project template: Settings → Languages & Frameworks → Rust → custom cargo-generate template → paste the Git URL of this repo.

Config

Load order:

  1. config/default.toml
  2. config/{APP_ENV}.toml
  3. APP__SECTION__KEY environment variables
APP__SERVER__PORT=9000 cargo run -p server

Both processes honor APP_CONFIG_DIR if you need the files somewhere else.

Add an endpoint

  1. Handler + #[utoipa::path(...)]
  2. .routes(routes!(your_handler)) in apps/server/src/routes/mod.rs
  3. just generate-api
  4. Import the new function from apps/web/src/api/generated.ts

Request logs include method, path, status, latency, and X-Request-Id.

Useful commands

just server
just web
just generate-api
just check