Skip to content

Clone and install

If you finished the six items in 01-prerequisites.md, this step usually takes between 5 and 10 minutes.

There are two ways to bring the base down. If git is new to you, the GitHub Template route is the gentler one.

  1. Open the base’s GitHub page at github.com/ddakit/saas-base.
  2. Click the green Use this template button in the top-right and pick Create a new repository.
  3. Pick a name under your own GitHub account, e.g. my-saas.
  4. Press Create repository.

A new copy of the base lands under your account. Now bring it down to your machine. Open a terminal and run:

Terminal window
cd ~/Desktop # or any folder you like
git clone https://github.com/<your-id>/my-saas.git
cd my-saas

Replace <your-id> with your GitHub username.

B. Plain git clone — if git already feels comfortable

Section titled “B. Plain git clone — if git already feels comfortable”
Terminal window
git clone https://github.com/ddakit/saas-base.git my-saas
cd my-saas
git remote remove origin # detach the base's remote
# Create an empty repo on your GitHub, then re-add it as origin:
# git remote add origin https://github.com/<your-id>/my-saas.git

Instead of removing the base remote, you can rename it and keep using it. That is exactly what 10-staying-up-to-date.md leans on later. git remote rename origin base first, then add your own repo as origin.

Terminal window
pnpm install

If pnpm is new on your machine, one line installs it:

Terminal window
npm install -g pnpm

If a red line shows up midway, follow the suggestion printed on screen first. If that does not unstick it, jump to the “pnpm install fails with a permission error” entry in 09-troubleshooting.md.

The first run does not always go through cleanly. The most common cause is that the nvm activation from step 1 did not carry into the new terminal. Open a fresh terminal, confirm node --version again, and the install usually goes through clean.

Terminal window
ls node_modules | head -5

If you see folder names like react, vite, @supabase, @tanstack, or react-router-dom, the install finished. If nothing shows up, or if the node_modules folder itself does not exist, step 2 failed.

If there is leftover state from a previous attempt, wipe node_modules/ and pnpm-lock.yaml clean and start over:

Terminal window
rm -rf node_modules pnpm-lock.yaml
pnpm install

Stale files from an earlier build occasionally conflict with a fresh install.

The real first run is the next step. But it helps to confirm the environment is in shape before you head into it.

Terminal window
pnpm run typecheck

tsc --noEmit runs once and exits. If there are no errors, you get a short line back; if there are, a red output follows. If errors show up here, dependencies are not in a clean state — wipe and reinstall using the rm -rf block above, then try again.

5) Optional — rename for your own project

Section titled “5) Optional — rename for your own project”

At this point the base is sitting on your machine. If you want to make it yours right away, swap the name and description in package.json, the title in index.html, and the first paragraph of the README. Leave LICENSE and COMMERCIAL-LICENSE.md alone — those are the files spelling out that the template’s usage rights flow through a separate commercial agreement with goldtagworks.

You do not have to rename anything right now. Confirm the first real run goes through, then rename. Branding and design tone get repainted in one pass at 05-customize-design.md.

Once pnpm install and pnpm run typecheck both finish cleanly, head to 03-first-run.md.