Installation

Set up your development environment and run the DX SaaS Template locally

Prerequisites

Make sure you have the following installed:

  • Rust (latest stable) — rustup.rs
  • Dioxus CLIcurl -sSL http://dioxus.dev/install.sh | sh
  • Bunbun.sh (for Tailwind CSS)
  • Docker — for PostgreSQL, Redis, and Mailpit

Quick Start

1

Clone the repository

bash
git clone https://github.com/your-org/dx-saas-template.git
    cd dx-saas-template
2

Bootstrap your env file

bash
just bootstrap

This copies .env.example to .env and generates a fresh SESSION_SECRET for you.

Then edit `.env` to set the rest:
- `DATABASE_URL` — PostgreSQL connection string (default: `postgres://dx_saas:dx_saas@localhost:5432/dx_saas`)
- `REDIS_URL` — Redis connection string (default: `redis://localhost:6379`)
- `FERRISKEY_URL` / `FERRISKEY_REALM` / `FERRISKEY_CLIENT_ID` / `FERRISKEY_CLIENT_SECRET` — Your FerrisKey instance, realm, and OIDC client
- `BASE_URL` — Your app's base URL (default: `http://localhost:8080`)
3

Start infrastructure

bash
docker compose up -d

This starts: - PostgreSQL on port 5432 (database dx_saas, user dx_saas) - Redis (Valkey) on port 6379 - Mailpit with SMTP on 1025 and web UI on 8025

Schema migrations in `migrations/` are applied automatically by `sqlx::migrate!` when the server starts.
4

Install frontend dependencies

bash
bun install
5

Run the development server

bash
dx serve --addr 0.0.0.0

The app will be available at http://localhost:8080. The dev server auto-reloads on code changes and runs Tailwind CSS automatically.

Project Commands

Command Description
dx serve --addr 0.0.0.0 Start development server with hot reload
dx build --release --platform web Production build
bunx @tailwindcss/cli -i tailwind.css -o ./assets/tailwind.css Build Tailwind CSS manually
cargo fmt --all -- --check Check formatting
cargo clippy --workspace --all-targets -- -D warnings Lint
cargo machete Detect unused dependencies

Environment Variables

Renaming the project

After cloning, give the project its own name:

bash
just rename my-new-project

This rewrites the package name, PostgreSQL database name, tracing filter, Dockerfile binary path, and docs in one shot. Run cargo build afterwards to regenerate Cargo.lock.

Navigation