Launching surojito.com: Setup Log & Honest Audit

📍 Charlotte, NC 📅 June 25, 2026 · 5 min read

STATUSPublished ENVbuild-in-public AUDITv1.0 VIEWS

Launching a personal site taught me that every blocked step is just a negotiation — with a tool, a credential, or a UI that wasn't designed with you in mind.

Everyone has a moment where they think: I should own my own corner of the internet. Not a LinkedIn post. Not a Medium article behind someone else’s paywall. A place that is fully, verifiably mine.

This is the log of how I built and deployed surojito.com — the actual steps, the wrong turns, and what I’d tell myself if I were starting over.


The goal

Build a static personal site with Astro, push it to a private GitHub repository, deploy it automatically to Cloudflare Pages, and connect it to the surojito.com domain I already own.

Simple on paper. Negotiated in practice.


The setup: what I was working with

That last point mattered more than I expected.


The steps, as they actually happened

1. Initialize git and make the first commit

git init
git add -A
git commit -m "Initial commit: surojito.com Astro site"

Before committing, I verified the .gitignore was excluding the right things: node_modules/, build output (dist/), screenshots, bookmarks exports, and private brand notes. Nothing sensitive went into the repo.

What I’d do differently: Set git config --global user.name and git config --global user.email before the first commit so the author identity is clean from the start.


2. Create the GitHub repository

Since gh CLI wasn’t installed, I used the GitHub web UI:

The empty repo gave me the remote URL: https://github.com/surojito-com/surojito.com.git


3. Create a Personal Access Token

GitHub no longer accepts passwords for git push. You need a token.

Path: Profile photo → Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token (classic)

Settings I used:

Copy the token immediately. GitHub shows it exactly once.

The setback: I accidentally tried to run the token as a shell command in the terminal instead of pasting it at the password prompt. The terminal said command not found. That was a clarifying moment.


4. Push to GitHub

git remote add origin https://github.com/surojito-com/surojito.com.git
git push -u origin main

When prompted:

Output when it works:

* [new branch]      main -> main
Branch 'main' set up to track 'origin/main'.

5. Deploy to Cloudflare Pages

This is where I learned that Cloudflare’s dashboard has two creation paths — Workers and Pages — and it’s easy to end up on the wrong one.

The correct path:

  1. Workers & Pages → Create application → Pages → Import an existing Git repository
  2. Connect GitHub account (surojito-com), select surojito.com repo → Begin setup
  3. Build settings:
    • Framework preset: Astro
    • Build command: npm run build
    • Build output directory: dist
  4. Save and Deploy

Cloudflare built the site and gave me surojito-com.pages.dev as a preview URL. The build took about 90 seconds.

The wrong turn I took: I clicked “Create application” and landed on the Workers setup flow (which shows npx wrangler deploy as the deploy command). I went two screens deep before realizing. The fix was clicking Back twice and finding the Pages tab.


6. Connect the custom domain

Inside the Pages project: Custom domains → Set up a custom domain → surojito.com

Because the domain was already registered with Cloudflare, it auto-generated the correct DNS record:

TypeNameContent
CNAME@surojito-com.pages.dev

Clicked Activate domain. Status: Verifying → turns Active within minutes when the domain is already on Cloudflare.


The honest audit

Time log table

What went rightWhat slowed me down
.gitignore was already solidNo gh CLI — had to use web UI + token
Cloudflare auto-detected the DNS setupLanded on Workers flow instead of Pages twice
Astro preset filled in the build settingsToken confusion (ran it as a command)
Domain was already on Cloudflare — no waitGit author identity not set before first commit

Total time: about 45 minutes, including the wrong turns.


The takeaway

Every blocked step in this process was a negotiation — not a failure. The terminal didn’t recognize my token as a command: that was the tool asking me to clarify where the token goes. The Cloudflare UI sent me to Workers instead of Pages: that was a UI that assumed I already knew the difference.

Non-native English speakers know this feeling. You say something, it lands wrong, and the instinct is to go quiet. But the right move — always — is to stay in the conversation and negotiate for clarity: rephrase, redirect, try the next door.

A personal site is the same. It takes a few wrong turns to find the right room. Now the room exists, and it’s mine.


Thank you for reading this far. One question: what’s the thing you’ve been meaning to publish somewhere you actually own — and what’s the one step that’s been blocking you?

← All articles

Comments