create-skateboard-app
v2.0.0
Published
Create a React + Rust SaaS app with JWT auth, Stripe, and SQLite
Maintainers
Readme
Create Skateboard App
Scaffolds a Skateboard app: React 19 + Vite 8 + Tailwind 4 on the frontend, and a zero-crate Rust backend with JWT cookies, CSRF, scrypt, SQLite, and Stripe.
What is Skateboard?
Skateboard is a production-ready SaaS boilerplate. New apps inherit UI through @stevederico/skateboard-ui and pull backend/glue updates with scripts/update-skateboard.js.
Quick Start
npx create-skateboard-app
cd my-app
npm install
npm start # frontend http://localhost:5173
cd backend && cargo run # backend http://localhost:8000Copy backend/.env.example to backend/.env and set JWT_SECRET, STRIPE_KEY, and STRIPE_ENDPOINT_SECRET.
Frontend is Vite. Backend is Rust (cargo run). There is no npm run server.
Usage
Interactive Mode
npx create-skateboard-appWith Project Name
npx create-skateboard-app my-appNon-interactive
npx create-skateboard-app my-app -y
npx create-skateboard-app my-app --name "Acme" --color red --icon rocket -yWhat You Get
- React 19, Vite 8, Tailwind CSS 4, TypeScript
@stevederico/skateboard-ui5.1.0 (exact pin)- Thin Vite app (
src/main.tsx,src/constants.json,src/legal.json) plusbackend/ - Zero-crate Rust backend: JWT cookies, CSRF, scrypt, SQLite via system libsqlite3, Stripe via libcurl
- SQLite only
- Dark mode, mobile layout, protected routes
- Sign up / sign in, landing, settings, and legal pages (Privacy, Terms, EULA)
New apps inherit UI by bumping @stevederico/skateboard-ui. Backend and glue files update with:
node scripts/update-skateboard.jsRequirements
- Node.js 24+
- Rust (
cargo runinbackend/) - System
libsqlite3andlibcurl - git or curl (the CLI downloads skateboard 5.6.0)
Configuration
After creating your app:
Copy the environment template:
cp backend/.env.example backend/.envUpdate
backend/.env:JWT_SECRET— token signing keySTRIPE_KEY— Stripe secret keySTRIPE_ENDPOINT_SECRET— webhook secret
SQLite path lives in
backend/config.json(dbTypeissqlite).
How the template is sourced
The CLI clones stevederico/skateboard at tag 5.6.0 (the current master release), then applies project-name and branding substitution. It does not vendor a second copy of the tree, so a pin bump is enough when skateboard ships a new release.
Overrides for development and tests:
SKATEBOARD_REPO— git URL or local checkoutSKATEBOARD_REF— tag or branch (default5.6.0)
Contributing
npm testThe smoke test scaffolds from a local skateboard checkout and checks the 5.6 shape: UI pin, Rust Cargo.toml, Node >=24, SQLite only.
License
MIT
