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.

2) Confirm your GitHub repo is the one wired up

Section titled “2) Confirm your GitHub repo is the one wired up”

From this point on, every commit you make flows into your own GitHub repo. Check the wiring once and move on.

Terminal window
git remote -v

If you came through route A, two lines should appear:

origin https://github.com/<your-id>/my-saas.git (fetch)
origin https://github.com/<your-id>/my-saas.git (push)

If your own repo URL sits in the origin slot, you are done. From here a single git push lifts your changes to your repo.

If you came through route B and either origin is missing or still points at the base, create an empty repo on your GitHub account first, then attach it with these two lines:

Terminal window
git remote add origin https://github.com/<your-id>/my-saas.git
git push -u origin main

The -u flag pins this destination so later pushes only need git push. You only need it this once.

The base repo gets re-attached as a second remote named base in 10-staying-up-to-date.md. origin for your repo and base for the ddakit update channel end up living side by side.

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.

6) Optional — rename for your own project

Section titled “6) 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.