Standalone App
Use this guide when you want to build a product or service on top of Open Saasframe without modifying the platform core. A standalone app pulls Open Saasframe packages from npm — your modules, overrides, and customisations live in your own repository.
If you need to modify the core itself, use the Monorepo guide instead.
- 🍎 macOS
- 🐧 Linux
- 🪟 Windows
Prerequisites
1. Git
xcode-select --install
# or via Homebrew after installing it (see below)
2. Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
3. Node.js 26
# Via Homebrew
brew install node@26
echo 'export PATH="/opt/homebrew/opt/node@26/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
# Or via nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
# Reopen terminal, then:
nvm install 26 && nvm use 26 && nvm alias default 26
Verify: node --version → v24.x.x
4. Yarn 4.12.0
corepack enable
corepack prepare yarn@4.12.0 --activate
Verify: yarn --version → 4.12.0
5. Infrastructure services — Docker Desktop (recommended)
The standalone app template includes a docker-compose.yml that starts PostgreSQL, Redis, and Meilisearch. Install Docker Desktop for Mac to use it.
Alternative — native PostgreSQL via Homebrew:
brew install postgresql@16
brew services start postgresql@16
createdb saasframe
Then set DATABASE_URL manually (see below).
Create and configure the app
npx create-saasframe-app my-app
cd my-app
This scaffolds a new standalone app. Before starting, configure the environment:
cp .env.example .env
Edit .env and set at minimum:
DATABASE_URL=postgres://postgres:postgres@localhost:5432/saasframe
JWT_SECRET=change-me-dev-secret
REDIS_URL=redis://localhost:6379
Generate a strong JWT_SECRET:
openssl rand -hex 32
Start the infrastructure services:
docker compose up -d
Bootstrap and start
yarn setup
yarn setup installs dependencies, builds packages, generates registries, and runs yarn initialize (migrations + seeding). The admin credentials are printed at the end.
Then start the app:
yarn dev
Open http://localhost:3000/backend and sign in with the credentials printed during setup.
Run multiple persistent standalone apps against the same PostgreSQL server
yarn setup, yarn dev, and friends accept an optional --database-name[=<name>] flag that rewrites the database segment of DATABASE_URL in ./.env. The flag is fully additive — without it, every script keeps its current behavior.
# explicit name; the script asks once whether to update .env (default yes)
yarn setup --database-name=client_a
# bare flag derives the database name from this app's folder
yarn setup --database-name
# one-off review run that does not edit .env
yarn dev --database-name=review_1720 --no-update-env
This makes it easy to run e.g. client-a/ and client-b/ side by side against the same PostgreSQL server without manually editing .env first. CI / non-interactive runs default to updating .env; pass --no-update-env (or set SF_DEV_DATABASE_UPDATE_ENV=false) to opt out.
Add your own modules
Drop modules into src/modules/ and register them in src/modules.ts with from: '@app'. See the customisation guide for details.
Eject a core module for deep customisation
When you need to modify the internals of a core module, eject it:
yarn saasframe eject --list # see which modules support ejection
yarn saasframe eject currencies # copy a module into src/modules/
yarn saasframe generate all
yarn dev
Prerequisites
1. Git
# Debian / Ubuntu
sudo apt update && sudo apt install -y git
# Fedora / RHEL
sudo dnf install -y git
2. Node.js 26 via nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
# Close and reopen terminal, then:
nvm install 26 && nvm use 26 && nvm alias default 26
Verify: node --version → v24.x.x
3. Yarn 4.12.0
corepack enable
corepack prepare yarn@4.12.0 --activate
Verify: yarn --version → 4.12.0
4. Infrastructure services — Docker (recommended)
Docker Desktop for Linux: download here.
Or install the Docker Engine:
# Debian / Ubuntu
sudo apt install -y docker.io docker-compose-v2
sudo usermod -aG docker $USER
newgrp docker
Alternative — native PostgreSQL:
# Debian / Ubuntu
sudo apt install -y postgresql postgresql-contrib
sudo -u postgres createdb saasframe
Then set DATABASE_URL manually (see below).
Create and configure the app
npx create-saasframe-app my-app
cd my-app
cp .env.example .env
Edit .env:
DATABASE_URL=postgres://postgres:postgres@localhost:5432/saasframe
JWT_SECRET=change-me-dev-secret
REDIS_URL=redis://localhost:6379
Start the infrastructure services:
docker compose up -d
Bootstrap and start
yarn setup
Then:
yarn dev
Open http://localhost:3000/backend and sign in with the credentials printed during setup.
Add your own modules
Drop modules into src/modules/ and register them in src/modules.ts. See the customisation guide.
Eject a core module for deep customisation
yarn saasframe eject --list
yarn saasframe eject currencies
yarn saasframe generate all
yarn dev
For the best developer experience on Windows, use WSL2 with Ubuntu — it gives you native Linux tooling, faster file I/O, and full Docker support. See the dedicated Windows with WSL2 guide.
The steps below use native Windows tooling (PowerShell / cmd) and remain a valid alternative.
Prerequisites
1. Git
Download from git-scm.com/download/win. Choose "Git from the command line and also from 3rd-party software" when asked about PATH.
Configure line endings:
git config --global core.autocrlf input
2. Node.js 26
Download the Windows Installer (.msi) from nodejs.org/en/download. After installation, open a new PowerShell or Command Prompt window so the updated PATH takes effect.
Verify: node --version → v24.x.x
3. Yarn 4.12.0
corepack enable
corepack prepare yarn@4.12.0 --activate
If you see:
yarn.ps1 cannot be loaded because running scripts is disabled on this system.
Fix it with a one-time user-scoped change:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Then retry corepack prepare yarn@4.12.0 --activate.
Alternative: use Git Bash or Command Prompt (cmd.exe) — the execution policy restriction does not apply there.
Verify: yarn --version → 4.12.0
4. Infrastructure services
Option A — Native PostgreSQL + pgAdmin (recommended)
The official Windows installer from postgresql.org/download/windows bundles pgAdmin 4, a full-featured database GUI.
-
Run the EDB installer. Note the port (default
5432) and thepostgressuperuser password you set. -
Create the database in pgAdmin's Query Tool or PowerShell:
psql -U postgres -c "CREATE DATABASE \"saasframe\";" -
Set
DATABASE_URLin.env(after scaffolding):DATABASE_URL=postgres://postgres:<your-password>@localhost:5432/saasframe
For Redis (optional but recommended), run only the Redis service via Docker:
docker compose up -d redis
Option B — Docker Desktop (all infrastructure)
Install Docker Desktop for Windows with the WSL 2 backend enabled (Settings → General → "Use the WSL 2 based engine").
After scaffolding the app, start all services:
docker compose up -d
Create and configure the app
npx create-saasframe-app my-app
cd my-app
Copy-Item .env.example .env
Edit .env:
DATABASE_URL=postgres://postgres:<password>@localhost:5432/saasframe
JWT_SECRET=change-me-dev-secret
REDIS_URL=redis://localhost:6379
Bootstrap and start
yarn setup
Then:
yarn dev
Open http://localhost:3000/backend and sign in with the credentials printed during setup.
Add your own modules
Drop modules into src/modules/ and register them in src/modules.ts. See the customisation guide.
Eject a core module for deep customisation
yarn saasframe eject --list
yarn saasframe eject currencies
yarn saasframe generate all
yarn dev
Release channels
# Latest stable (default)
npx create-saasframe-app my-app
# Latest prerelease from the develop branch
npx create-saasframe-app@develop my-app
For a specific version: npx create-saasframe-app@x.y.z my-app
Full guide: customization/standalone-app