Deployment Guide

This document covers everything needed to deploy the site. The rule: staging first, production only after QA passes.


Quick Reference

ItemValue
Build commandnpm install && npm run build
Publish directorypublic
Node.js version22 (set automatically via netlify.toml)
Hugo version0.162.1 (extended — set via HUGO_EXTENDED=true)
Repo baseseekersabodepl/ in WSL
Live domainseekersabodepl.com (do not connect until staging passes)

Overview: The Two-Phase Deploy

Phase 1 (now)
├── Push repo to GitHub             ← you are here
├── Import into Netlify
├── Get staging URL (netlify.app)
├── Run QA checks on staging URL
└── ✅ Approve

Phase 2 (after approval)
  ├── Connect seekersabodepl.com in Netlify
  ├── Configure GoDaddy DNS
  ├── Wait for DNS + HTTPS
  └── 🚀 Live

Prerequisites

  • A GitHub account (github.com/signup)
  • A Netlify account (netlify.com → Sign up with GitHub)
  • GoDaddy access for DNS configuration (domain purchase already done)
  • WSL terminal open at the repo directory

Step 1: Push the Repo to GitHub

The site lives at this path on your machine:

/mnt/c/Users/PRASHANT/Documents/Codex/2026-05-30/you-installed-hermes-agent-on-my/seekersabodepl/

1a. Create a GitHub repository

  1. Go to github.com/new
  2. Repository name: seekersabodepl
  3. Visibility: Public or Private — both work with Netlify free tier
  4. Do NOT check “Add a README”, “.gitignore”, or “License” (the repo already has these)
  5. Click Create repository

1b. Push from WSL

Copy the commands from the GitHub page, or run these exactly:

cd /mnt/c/Users/PRASHANT/Documents/Codex/2026-05-30/you-installed-hermes-agent-on-my/seekersabodepl/

# Replace YOUR-USERNAME with your actual GitHub username
git remote add origin https://github.com/YOUR-USERNAME/seekersabodepl.git
git branch -M main
git push -u origin main

GitHub will ask for your username and password. Use a personal access token instead of your password:

  1. Go to github.com/settings/tokens
  2. Click Generate new token (classic)
  3. Check repo (full control) — this is the minimum needed for pushing
  4. Copy the token and paste it at the password prompt

1c. Verify

git status
# Should say: "nothing to commit, working tree clean"

Step 2: Create the Staging Branch

Deploying main straight to Netlify would activate the production context (pointing to seekersabodepl.com which isn’t connected yet). Instead, push from a staging branch so Netlify gives you a free staging URL.

git checkout -b staging
git push -u origin staging

Step 3: Import into Netlify

  1. Log into app.netlify.com
  2. Click Add new siteImport an existing project
  3. Choose GitHub as your Git provider
  4. Authorize Netlify to access your GitHub account (if prompted)
  5. Search for and select the seekersabodepl repository

Verify build settings

When Netlify shows the deploy settings screen, check these are auto-detected:

SettingExpected valueWhere it’s set
Branch to deploystaging ↓ change to stagingChange from default mainstaging
Base directory(leave blank)
Build commandnpm install && npm run buildnetlify.toml
Publish directorypublicnetlify.toml

If any field is empty, it wasn’t auto-detected. You can fill it manually — the values above are correct.

  1. Click Deploy site

Step 4: Wait for the First Build

Netlify’s first build takes 2–4 minutes. You don’t need to watch it — Netlify will email you when it’s done.

After completion, your site gets a Netlify subdomain like:

https://starlit-croissant-abc123.netlify.app

This is the staging URL. Write it down — you’ll need it for QA.

The staging branch deploy uses [context.branch-deploy] in netlify.toml, which sets the base URL to this staging URL automatically. All links and sitemap entries will use the staging URL, not the production domain.

If the build fails

Check the Deploy log on Netlify for error details. Common fixes:

ErrorFix
pagefind: not foundThe build command npm install && npm run build should install it automatically. Check that npm install ran successfully.
hugo: not foundHugo version may need setting. netlify.toml sets HUGO_VERSION = "0.162.1" — if Netlify doesn’t pick it up, set it manually under Site settings → Environment → Environment variables.
Node.js version not supportedNetlify’s default Node.js is usually 18+. The netlify.toml sets NODE_VERSION = "22". If it’s not honoured, set it manually as an environment variable in Netlify.
Permission errors with scripts/These files aren’t served to the web — they’re local tools. No action needed.

Step 5: Run QA Checks

5a. Local QA (first — catches problems before they hit the staging URL)

# From the repo directory
cd /mnt/c/Users/PRASHANT/Documents/Codex/2026-05-30/you-installed-hermes-agent-on-my/seekersabodepl/

npm run build
python3 scripts/qa_checks.py

Expected output:

============================================================
PRE-DEPLOYMENT QA CHECKS
============================================================

--- 1. Build output ---
  ✅ public/ directory exists
  ✅ 130 HTML files generated

... (all checks pass) ...

============================================================
✅ ALL QA CHECKS PASSED — ready for staging deployment.

If any check fails, fix the issue and re-run.

5b. Staging URL QA (once Netlify has deployed)

Open each of these in a browser (replace STAGING-URL with your actual Netlify URL):

CheckURL to visitWhat to verify
Home pagehttps://STAGING-URL.netlify.app/Hero section, navigation, featured domains
All domainshttps://STAGING-URL.netlify.app/philosophy/Stats panel, featured entries, key thinkers, pathways
https://STAGING-URL.netlify.app/neuroscience/Same
https://STAGING-URL.netlify.app/eastern-traditions/Same
https://STAGING-URL.netlify.app/altered-states/Same
https://STAGING-URL.netlify.app/quantum-ai/Same
https://STAGING-URL.netlify.app/applied/Same
Libraryhttps://STAGING-URL.netlify.app/library/All 75 entries show, filter dropdowns work, search box visible
SearchType in search boxPagefind returns relevant results
Thinkershttps://STAGING-URL.netlify.app/thinkers/35 thinker profiles listed
Pathwayshttps://STAGING-URL.netlify.app/pathways/3 pathways visible
Entry pageClick any library entrySeed banner visible, summary, why_it_matters, details
404 pagehttps://STAGING-URL.netlify.app/nonexistent-pageCustom 404 page with “Go home” / “Browse the library” links
Sitemaphttps://STAGING-URL.netlify.app/sitemap.xmlXML loads with 128+ URLs
robots.txthttps://STAGING-URL.netlify.app/robots.txtSitemap: /sitemap.xml (relative URL)
Courseshttps://STAGING-URL.netlify.app/courses/LMS referral page explaining the plan
Abouthttps://STAGING-URL.netlify.app/about/About page loads
MobileOpen on a phone or resize browser to 375pxNavigation collapses into hamburger, text wraps, no horizontal scroll

5c. Additional quality checks

  • Click a filter in the library — entries should narrow down
  • Click “Clear all” — filters should reset
  • Click any thinker link from a thinker profile → should load the profile
  • Scroll down on a domain page — “Browse all” link should go to library filtered by that domain

QA Approval

Checklist (tick each as you verify):

  • All 6 domain pages load with stats + featured entries
  • Library lists 75 entries
  • Search returns results
  • Filters work (domain, access, level, status dropdowns)
  • Thinkers page shows 35 profiles
  • 3 pathways load correctly
  • 404 page shows custom content
  • Sitemap XML is valid
  • robots.txt accessible
  • All navigation links work
  • Mobile layout is usable

If everything passes, proceed to Step 6.


Step 6: Connect the Live Domain (seekersabodepl.com)

Only proceed once staging QA passes. Do not skip this.

6a. In Netlify: Add custom domain

  1. Go to Site settingsDomain management
  2. Click Add custom domain
  3. Enter: seekersabodepl.com
  4. Netlify will say “Check DNS configuration” — click it
  5. Netlify will show you options. Choose Netlify-managed DNS (simpler) if available, or follow the instructions for external DNS.

6b. In GoDaddy: Configure DNS

You have two options. Option A is recommended (cleaner, no redirects).

Option A — Netlify-managed DNS (use Netlify’s nameservers)

This means Netlify hosts your DNS entirely — no need to manage records in GoDaddy.

  1. In GoDaddy, go to My ProductsDomainsseekersabodepl.com
  2. Click Manage DNSNameserversChange
  3. Replace the GoDaddy nameservers with Netlify’s (Netlify shows you the exact 4 nameserver addresses in Domain management)
  4. Save

Option B — Keep DNS in GoDaddy, add records

TypeNameValue
A@75.2.60.5
A@99.83.190.102
CNAMEwwwSTAGING-URL.netlify.app (replace with your actual URL)
  1. Save DNS changes

6c. Wait for DNS propagation

DNS changes take anywhere from 5 minutes to 48 hours (typically 1–2 hours).

# Check from your WSL terminal:
dig +short seekersabodepl.com
dig +short www.seekersabodepl.com

Expected:

  • seekersabodepl.com75.2.60.5 or 99.83.190.102
  • www.seekersabodepl.com → the Netlify staging URL

You can also check dnschecker.org from a browser.

6d. Back in Netlify

  1. Once DNS resolves, Netlify will auto-verify the domain (usually within 15 minutes of propagation)
  2. Netlify provisions a Let’s Encrypt HTTPS certificate automatically (takes 1–5 minutes)
  3. Under Domain settings → set seekersabodepl.com as the primary domain
  4. Verify HTTPS works: visit https://seekersabodepl.com

Step 7: Final Verification (Live Domain)

Once the domain resolves and HTTPS is active:

  • https://seekersabodepl.com — home page loads
  • https://seekersabodepl.com/library/ — library loads, search works
  • https://seekersabodepl.com/philosophy/ — domain page with featured entries
  • https://seekersabodepl.com/sitemap.xml — valid sitemap (URLs now use seekersabodepl.com)
  • https://seekersabodepl.com/robots.txt — robots.txt accessible
  • Any random path → custom 404 page
  • Check Netlify Analytics (if enabled)
  • Search engines can crawl — Google Search Console is optional

Step 8: Post-Launch

  • Submit sitemap to Google Search Console — add property at search.google.com/search-console
  • Submit sitemap to Bing Webmaster Tools
  • Share on Substack (@nik52)
  • Share on X (@monkabode)
  • Share on Instagram (@monkabode)
  • Share link with your research network
  • Monitor Netlify analytics for traffic
  • Begin editorial review of seed entries (see /editorial/)

Troubleshooting

ProblemLikely causeFix
Build fails with pagefind: not foundnpm install didn’t run or failedCheck the Deploy log; the build command includes npm install && npm run build — verify both steps succeeded
Build fails with hugo: not foundHugo version not setAdd HUGO_VERSION = "0.162.1" and HUGO_EXTENDED = "true" in Netlify’s Environment variables
Build fails with Node version errorNetlify’s Node.js version is too oldAdd NODE_VERSION = "22" in Netlify’s Environment variables
Staging URL shows seekersabodepl.com linksWrong deploy contextConfirm you deployed from the staging branch, not main. If deploying from main, add [context.branch-deploy] to netlify.toml
Domain shows Netlify 404DNS not propagated yetWait 24h and check with dig; verify nameserver change took effect
HTTPS not workingNetlify needs time to provision Let’s Encrypt certWait 15 minutes after DNS resolves
Search box does nothingPagefind index not builtRebuild locally: npm run build and verify public/pagefind/ exists
Custom 404 not showingNetlify needs public/404.htmlHugo generates this from layouts/404.html — verify it exists after build
Domain redirects to Netlify subdomainPrimary domain not set in NetlifyUnder Domain settings → set seekersabodepl.com as primary

Maintenance

Adding content

Create new .md files in content/library/{domain}/ following existing frontmatter. Then:

npm run build       # rebuild
python3 scripts/qa_checks.py   # verify
git add . && git commit -m "Add entry: TITLE"
git push

Promoting seed → reviewed

Follow the editorial guide at the editorial page or read content/editorial/_index.md.

Rebuilding after edits

npm run build && python3 scripts/qa_checks.py

Updating the staging branch

git checkout staging
git merge main
git push origin staging

Netlify auto-deploys on push.