Installation
Three tools have to exist on your machine before anything else works: Node, pnpm, and Docker. After that it is one command, and the CLI does the rest.
For the rest of the setup surface, see Commands (scripts), Onboarding (pack env walkthrough), and Env variables (full catalog).
Prerequisites
| Tool | Version | Why |
|---|---|---|
| Node.js | 20 or newer | Runs the backend, the frontend dev server, and the CLI. |
| pnpm | 12 or newer | The template pins pnpm 12. npm and yarn will not resolve the workspace. |
| Docker | Any recent | Runs Postgres, Valkey, and RustFS locally so you do not install them by hand. |
The CLI checks the first two before it touches anything and stops with the fix when one is missing. Docker is only
recommended: without it you skip the local databases and point DATABASE_URL at your own.
Node.js
Check what you have:
node --versionIf it prints anything below v20, install a current version. On macOS and Linux the least painful route is a version
manager, because you will want to switch versions eventually:
# macOS / Linux
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
nvm install 22
nvm use 22On Windows, install from nodejs.org or use nvm-windows.
pnpm
pnpm 12 ships as a native binary, and older tooling trips over that. The shortest path is npm:
npm install -g pnpm@12
pnpm --versionIf you manage pnpm through Corepack, update Corepack first, because a Corepack that predates pnpm 11 looks for a file the package no longer ships:
npm install -g corepack@latest
corepack enable
corepack prepare pnpm@12 --activatepnpm is not optional
The repo is a pnpm workspace. Running npm install in it will produce a broken node_modules and a lockfile that
conflicts with everyone else's. If pnpm --version fails, stop here and fix that first. If your pnpm is too old to run
the project's pinned version, the CLI notices and runs the install through npx pnpm@12 for you, then tells you how to
fix the toolchain properly. See Troubleshooting for the exact errors.
Docker
Install Docker Desktop on macOS or Windows, or Docker Engine on Linux. Start it and confirm the daemon is up:
docker infoDocker only runs Postgres, Valkey, and RustFS (S3-compatible storage) for local development. If you already have a
Postgres you want to use, skip the Docker step when the CLI offers it and point DATABASE_URL at yours instead.
Create the project
npx @hype-stack/cli create my-appThe CLI asks which AI assistants your team uses and writes the agent rules in each tool's own format. Tick as many as
you need. Pass --editor cursor,claude,codex to skip the question; the valid values are cursor, t3code, claude,
codex, copilot, opencode, and windsurf. Then it asks for a color theme and corner radius for the frontend, and
whether the admin, mobile, and extension apps should copy those settings.
After the prompts, create does the whole first run for you:
- Clones the template at its latest release and strips its git history.
- Renames the workspace scope to your project name and writes
stack.json. - Writes the editor rules you picked, wires the MCP server into the project config where the editor supports it, and pulls a starter set of agent skills from skills.sh.
- Runs
pnpm install. - Makes the first git commit.
- Copies every
.env.exampleto.env. The defaults point at the Docker containers, so the app boots as-is. - Asks whether to start Docker and run migrations. Say yes and it runs
docker compose up -dinapps/backend, remaps any busy port, waits for Postgres, runsprisma migrate devto create the tables, and mirrors the schema into the isolated test database sopnpm testworks right away.
Every answer has a flag. --no-setup skips step 7, --no-skills skips the skills, --no-install skips pnpm install
(and therefore step 7 too), and --yes with a name skips every confirmation. See Create a Project for the
full list.
If you said no to Docker and migrations
Nothing is lost. Run the same steps yourself whenever you are ready:
cd my-app/apps/backend
docker compose up -d
docker compose psThe compose file lives in apps/backend, not at the repo root. It starts Postgres, Valkey, and RustFS on ports scoped
to this project, so several Hype Stack projects can run side by side without colliding.
Then, from the repo root, create the tables and generate the Prisma client that Kysely types its queries against:
pnpm --filter @hype-stack/backend migration:createStart everything
cd my-app
pnpm dev| App | URL |
|---|---|
| Frontend | http://localhost:4200 |
| Backend | http://localhost:3000 |
| Admin | its own Vite port, printed by Nx |
| Mobile | Metro QR (Expo Go) |
Everything runs with hot reload. pnpm dev starts Metro for apps/mobile too. To open the app on a phone you need Expo
Go from sign.expo.dev, not the App Store. See Mobile.
For the Electron desktop build instead of the browser:
pnpm --filter @hype-stack/frontend start:appSame codebase, native window.
Verify
Before you move on, confirm the stack is actually healthy:
- Open the frontend at
http://localhost:4200and confirm it loads. - Hit the backend health check:
curl http://localhost:3000/ping(or open it in a browser). - Run a typecheck from the repo root:
pnpm typecheckIf those three pass, the workspace is wired correctly.
Related setup pages
| Page | When you need it |
|---|---|
| Commands | Full list of pnpm / Nx scripts |
| Onboarding | Fill .env after installing packs |
| Env variables | Typed catalog of backend and frontend keys |
| Mobile | Expo Go, device testing, Metro, mobile tests |
| Troubleshooting | Common failures by area |
When it does not work
docker compose up fails with a port already in use. The CLI remaps busy ports when it runs Docker for you. If you
ran it by hand, something else is on the Postgres, Valkey, or RustFS port. Either stop it, or change the host port in
apps/backend/docker-compose.yml, then update DATABASE_URL and VALKEY_URL to match.
Migrations fail to connect. The containers are probably still starting. Run docker compose ps in apps/backend
and wait for the health check, then try again.
Types are wrong after a schema change. The Prisma client is generated, not written. Re-run the migrate command,
which regenerates it, or pnpm --filter @hype-stack/backend generate.
pnpm dev starts but the frontend cannot reach the API. Check that apps/frontend/.env exists. Without it the
frontend has no API URL and every request fails.
Next
- Fastest Template to start from a finished app instead of the bare starter.
- Compose Your Stack to add auth, billing, or notifications.
- Mobile to run the Expo app on a phone or simulator.
- Commands for everything
pnpm devis doing under the hood. - Going to production when you are ready to ship.
Every purchase and sponsorship funds my 8+ years of work on open source given freely to the community. It keeps the lights on, funds new packs, and keeps the ecosystem alive. Even a small tier means a lot. Thank you!
