A content management system and administrative platform for web applications. Built with a Rust backend and a Nuxt frontend.
- Rust 1.93.1 — core application language
- Axum 0.8 — HTTP framework
- SQLx 0.8 — async PostgreSQL driver with compile-time query checking
- Tokio 1 — async runtime
- JWT (jsonwebtoken) — authentication
- bcrypt — password hashing
- Clap — CLI tooling for admin commands
- Node.js v24.7.0
- Nuxt 4 (Vue 3) — full-stack framework
- Nuxt UI 4 — component library
- Pinia — state management
- TailwindCSS 4 — styling
- TypeScript — type safety
- Zod / Valibot — schema validation
- TanStack Table — data tables
- PostgreSQL 15 — primary database
- Docker / Docker Compose — containerized services
- just — task runner
- Rust 1.93.1+
- Node.js v24.7.0+
- Docker with Docker Compose
- just task runner
- sqlx-cli (
cargo install sqlx-cli) - cargo-watch (
cargo install cargo-watch)
git clone <repo-url>
cd backofficecp .env.example .env.localEdit .env.local and fill in the required values (at minimum JWT_SIGNING_KEY, and any external service keys you need).
just installThis installs both Cargo and frontend npm dependencies.
docker compose up -d databasejust dbjust run-initThis creates the super-admin user defined in your .env.local.
Backend + database:
just runFrontend (separate terminal):
just run-frontendThe API listens on the port set by PORT (default 5006) and the frontend on http://localhost:7000.
| Command | Description |
|---|---|
just run |
Start backend with hot-reload |
just run-frontend |
Start Nuxt dev server |
just watch |
Start full stack via Docker Compose |
just build-frontend |
Build and export frontend static assets |
just db |
Run migrations + prepare SQLx |
just test |
Run backend test suite |
just lint |
Lint frontend and format Rust code |
just logs |
Tail Docker Compose app logs |
just kill |
Stop and remove Docker containers |
just restart |
Kill then watch |
just run-cli |
Run CLI — create user |
just run-init |
Run CLI — initialize super admin |
Run just with no arguments to see all available commands.