Skip to content
Zutra HyperSaaS — 6 languages, auth UI, dashboard, 69 tests
Get it on Gumroad

Zutra v1.3.0 — 6 languages, auth UI, dashboard, 69 tests. Saves 80+ hours.

See what's included

Installation

Get Zutra running locally in under 5 minutes.

Prerequisites

You need:

  • Node.js 20+ (LTS recommended) — node -v to check
  • pnpm 9+ — install with npm i -g pnpm
  • Git — for cloning

A GitHub account helps if you want to fork first.

Clone the repo

git clone https://github.com/Juanalfaros/zutra-saa.git my-saas
cd my-saas

Or fork on GitHub first, then clone your fork:

git clone https://github.com/<your-username>/zutra-saa.git my-saas
cd my-saas

Install dependencies

pnpm install

This installs Astro, Tailwind v4, the Phosphor icon set, and all other deps in package.json. Takes ~30 seconds on a clean cache.

Configure environment

Copy the example file and edit the values you need:

cp .env.example .env

Only PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY, PUBLIC_STRIPE_KEY, and STRIPE_SECRET_KEY are required if you want the auth forms and pricing CTAs to work end-to-end. The build will succeed with empty .env — every variable has a safe default. See the Environment Variables reference for the full list.

Start the dev server

pnpm dev

The server boots at http://localhost:4321. Astro will print:

┃ Local    http://localhost:4321/
┃ Network  use --host to expose

Hot module reload is on — every file save triggers a refresh.

Verify it works

Open http://localhost:4321 in your browser. You should see:

  • The homepage with the hero, features, pricing, and FAQ sections
  • The dark industrial design with the floating accent picker (bottom-right)
  • The nav with all menu items rendering

Click around — /pricing, /about, /blog, /es/pricing, /es/about (Spanish mirror) should all return 200.

Run the tests

pnpm test          # unit tests (vitest)
pnpm lint          # eslint
pnpm typecheck     # astro check + tsc

All three should pass on a fresh clone. If something fails, see Troubleshooting.

Build for production

pnpm build

Output goes to dist/. Since this project uses the @astrojs/node adapter with mode: 'standalone', you can run the production server with:

node ./dist/server/entry.mjs

See Deploy to Vercel or Deploy to Cloudflare for hosted deployment guides.

Next steps