suprnova new scaffolds a Suprnova project - a fresh Cargo crate with
controllers, routes, migrations, an Inertia SPA, and a working auth
flow already wired together. Run it once per app, then live in
suprnova serve from there.
Usage
If name is omitted, the interactive wizard prompts for it. The
name becomes the project directory, the Cargo package name (after
snake-casing), and the default APP_NAME in .env. Names must be
ASCII letters/digits/-/_, start with a letter, contain no path
separators or .., and be 64 characters or fewer.
Options
| Option | Description |
|---|---|
--frontend <svelte|react|vue> |
Pick the SPA framework non-interactively. Conflicts with --api. |
--api |
Scaffold a JSON:API-only project (no Inertia, no SPA, token auth instead of sessions). |
--no-interaction |
Skip all prompts and use defaults (name my-suprnova-app, frontend svelte, empty author/description). |
--no-git |
Skip git init in the new project. |
--with-portless |
Emit a portless.json so suprnova dev:tls can serve the app at https://<name>.localhost. Opt-in; changes nothing else. |
Interactive mode
The wizard asks four questions, in this order:
- Project name - defaults to the directory argument (
my-app) - Description - used as the Cargo package description
- Author - used as the Cargo package author; defaults to your
git config user.name <name@email>if set - Frontend framework -
Svelte (recommended),React, orVue
After confirming, the scaffolder writes the project, runs git init
(unless --no-git), and prints the next steps:
Backend http://localhost:8765
Frontend http://localhost:5765
Non-interactive mode
For CI, dotfiles, or scripted setup, pass --no-interaction plus the
flags you want to override:
Defaults under --no-interaction:
- Frontend:
svelte - Description:
"A web application built with Suprnova" - Author: empty
- Git: initialized
There are no --description or --author flags; those values are
only set via the interactive prompts or accept their defaults.
API-only project
For service backends with no SPA, use --api:
The API starter is significantly smaller: no frontend/ directory, no
Inertia, no auth views, single-crate src/main.rs layout (instead of
the SPA starter's cmd/main.rs workspace), token-based auth, and a
sample users controller plus UserResource JSON serializer. The API
starter binds to port 8765 in its .env.
--api is mutually exclusive with --frontend; passing both errors.
Under --api, only the project name is prompted - the
description/author/frontend prompts are skipped.
What gets scaffolded
A full directory tour lives in Directory Structure; the short version is:
cmd/main.rs- binary entry; callsApplication::new()…run()src/- controllers, actions, commands, config, middleware, models, migrations, plusbootstrap.rsandroutes.rssrc/bin/console.rs- the per-projectphp artisananaloguefrontend/- Vite 8 + Tailwind v4 + your chosen framework, with Home / Dashboard / Login / Register pages already wired through Inertiasrc/migrations/-users,sessions, andremember_tokenstables ready to go.env- SQLite database by default, with a freshly-generatedAPP_KEYso the app boots without operator intervention.gitignore,Cargo.toml
Why Suprnova diverges
Laravel ships with Blade and pulls a frontend in via Breeze/Jetstream
after the fact. Suprnova goes the other way: suprnova new always
scaffolds either a real SPA (Svelte/React/Vue on Inertia) or a real
JSON:API project. There is no template-engine-first starter - if you
want server-rendered HTML, Tera is available, but it's not the default
shape and there's no scaffolder path that puts views in the front of
your app.
The default frontend is Svelte 5 (runes-on), not React. We picked it because it's the lightest of the three at runtime and the closest to the framework's "compile-time wins over runtime cleverness" philosophy. React and Vue are equally first-class - pick what your team knows.
Distribution
The CLI itself ships via git, not crates.io (pre-launch):
--force on the same command updates an existing install. Scaffolded
projects depend on the framework crate the same way - a git
dependency in their Cargo.toml, pinned to the current release tag.
See Installation for the full
toolchain prerequisites.
Next
- Installation - Rust/Node/DB prerequisites and toolchain setup
- Directory Structure - what each scaffolded file does
- Quickstart - first 5 minutes after
suprnova new - suprnova serve - the dev runner you'll use next
- Console -
cargo run --bin consoleand the#[command]system
