This chapter gets you from "no Suprnova on this machine" to a running scaffolded project. If you're already there, jump to the Quickstart.
Requirements
- Rust 1.91.1+ (the workspace uses the 2024 edition). Install via
rustup:
| - Node.js 20+ and npm (or pnpm/yarn/bun) for the frontend toolchain. Suprnova uses Vite 8 and your starter ships TypeScript + Tailwind v4. Install via nodejs.org or your package manager.
- A database client library that matches the driver you want to use:
- SQLite - no extras needed; sqlite is bundled
- PostgreSQL -
libpqon most systems (often pre-installed) - MySQL or MariaDB -
libmariadb/libmysqlclienton most systems
You don't have to choose a database now. The default scaffolder picks SQLite so a fresh app runs with zero setup.
Install the CLI
Suprnova is distributed as a Cargo project, and the CLI installer pulls the framework from git (not from crates.io - see the Pre-launch note below):
This compiles the suprnova binary and drops it into ~/.cargo/bin.
Confirm it worked:
You should see suprnova 0.x.x.
If suprnova isn't found, your ~/.cargo/bin isn't on PATH. Add this
to your shell config:
Create a project
suprnova new scaffolds a complete project - backend + chosen frontend
- Vite config + auth migrations + sample routes. It's interactive by default:
The wizard asks for, in order:
- Project name - skipped when you pass it as the argument (
my-app) - Description - used in
Cargo.toml - Author - used in
Cargo.toml; defaults to your gituser.name - Frontend framework - one of
svelte(default),react,vue
If you want to skip the prompts (CI, scripted setup), pass
--no-interaction and pick a frontend explicitly:
--no-interaction accepts the defaults for description ("A web
application built with Suprnova") and author (empty). To set those,
edit the generated Cargo.toml after scaffolding.
The three frontend choices each ship their own runes-on/Svelte-5, React-19, or Vue-3.5 starter. All three use Inertia v3 + Vite 8 + Tailwind v4 and pre-wire a Login/Register/Dashboard flow with session-based auth.
Suprnova also ships a slimmer API starter for service backends with no SPA:
The API starter has the same backend stack but no frontend, no Inertia, and uses token-based auth instead of session cookies.
First run
# Run migrations (users, sessions, etc.)
# Install frontend dependencies
# Start the backend + Vite together
suprnova serve runs the backend on http://127.0.0.1:8765 and Vite
on http://127.0.0.1:5765. Hit the backend URL - Vite is proxied so
you don't need to visit it directly.
You should see the welcome page. Then visit /register to make an
account and /login to log in.
What got scaffolded
my-app/
├── Cargo.toml # crate manifest, two [[bin]] targets
├── .env # local config (DB URL, app key, ports)
├── .env.example # template for ops/CI
├── .gitignore
├── cmd/
│ └── main.rs # the binary entry; calls Application::new().run()
├── src/
│ ├── lib.rs # module wiring
│ ├── bootstrap.rs # service registration (the Suprnova analogue of providers)
│ ├── routes.rs # the routes! macro tree
│ ├── bin/
│ │ └── console.rs # `cargo run --bin console <subcommand>`
│ ├── actions/ # single-method invokable controllers
│ ├── commands/ # `#[command]`-annotated handlers
│ ├── config/ # typed config sections (database, mail)
│ ├── controllers/ # home, auth, dashboard
│ ├── middleware/ # logging, authenticate
│ ├── migrations/ # SeaORM migrators (users, sessions, etc.)
│ └── models/ # `#[suprnova::model]` structs (user)
├── frontend/
│ ├── package.json
│ ├── vite.config.ts
│ ├── tsconfig.json
│ ├── index.html
│ └── src/
│ ├── main.{tsx,ts}
│ ├── app.css
│ ├── pages/
│ │ ├── Home, Dashboard
│ │ └── auth/{Login,Register}
│ └── types/
│ └── inertia-props.ts
└── public/
└── assets/ # Vite production build output
The full directory tour is in Directory Structure.
Updating the CLI
The CLI lives in your ~/.cargo/bin. To update to the latest:
--force makes Cargo overwrite the existing binary.
Updating your app's framework version
A scaffolded app depends on the suprnova framework crate via a git
dependency in Cargo.toml:
suprnova = { git = "https://github.com/eas4ai/suprnova.git", tag = "v1.2.0" }
To pull the latest framework changes:
The git dependency tracks the named release tag. Update the tag in
Cargo.toml, then run cargo update -p suprnova; your Cargo.lock records the
exact commit it resolved, so builds stay reproducible between updates -
there's no need to hand-pin a rev in Cargo.toml.
Distribution model
Suprnova is distributed through git, not crates.io - both the framework
and the CLI install from GitHub. Each version is published as a tagged
GitHub Release (e.g. v0.7.2) for the changelog, but you don't depend on
the tag: the git dependency tracks the default branch, and Cargo.lock
pins the exact commit your app resolved, so builds are reproducible between
cargo update runs - no need to hand-pin a tag or rev.
Editor setup
A few VS Code extensions make the experience smoother:
- rust-analyzer - the Rust language server
- Svelte for VS Code (or React/Vue if you chose those)
- Tailwind CSS IntelliSense
- Even Better TOML
rust-analyzer will index the project on first open; expect 1–2
minutes the first time, then incremental.
Next
- Quickstart - build a tiny app in 5 minutes
- Directory Structure - what's in each file the scaffolder generated
- Configuration - the
.envand typed config story - Routing - add your first route
