KaavOps Internal Docs — Infrastructure

Setting Up Your Internal Docs System

GitHub + Cloudflare Pages · 20-minute setup · Everything live at docs.kaavops.com

20 min
First-time setup
30 sec
Deploy after any edit
€0
Monthly cost

What you're building

A private internal documentation site at docs.kaavops.com where all your KaavOps working documents live — ICP, positioning, outreach scripts, content calendar, and anything else Claude generates for you. Every page shares the same design system. Editing is done by dropping files into a local folder that syncs to GitHub automatically via GitHub Desktop.

kaavops-internal/ index.html ← dashboard linking all pages kaavops-icp-v2.html ← the ICP we built kaavops-internal-docs-system-setup-guide.html ← this page outreach-scripts.html ← future content-calendar.html ← future

Phase 1 — Create the GitHub repository · 5 min

1
Create a free GitHub account if you don't have one
~1 min

Go to github.com and sign up. Use your KaavOps email address. The free plan is all you need.

2
Create a new repository called kaavops-internal
~2 min

From your GitHub dashboard, click the green "New" button. Fill in the form:

  • Repository name: kaavops-internal
  • Visibility: Private — this is internal, not public
  • Check "Add a README file" so the repo isn't empty
  • Click "Create repository"
3
Install GitHub Desktop and clone the repository to your local drive
~3 min

Download GitHub Desktop from desktop.github.com. Sign in with your GitHub account, then clone kaavops-internal to a folder on your PC — for example Documents/kaavops-internal/. This is now your local working folder.

How the local folder works

Any file you drop into that folder on your PC becomes a commit when you open GitHub Desktop and click "Commit to main" → "Push origin." Cloudflare Pages picks it up within 30 seconds. No browser drag-and-drop required.

4
Add your first HTML files to the local folder
~1 min

Drop index.html, kaavops-icp-v2.html, and this file into the local kaavops-internal/ folder on your PC.

Naming convention

Keep filenames lowercase with hyphens, no spaces: outreach-scripts.html, content-calendar.html. The filename becomes the URL path — clean names matter.

5
Commit and push via GitHub Desktop
~1 min

Open GitHub Desktop. You'll see the new files listed as changes. Add a short commit message (e.g. "Add initial HTML pages"), click "Commit to main," then click "Push origin." Your files are now on GitHub.

Phase 2 — Connect Cloudflare Pages · 10 min

6
Open Cloudflare and go to Pages
~1 min

Log into your Cloudflare account (the same one managing kaavops.com). In the left sidebar, click "Workers & Pages" → "Pages" → "Create a project".

7
Connect your GitHub repository
~3 min

Choose "Connect to Git" → authorize Cloudflare to access your GitHub account → select the kaavops-internal repository.

  • Build command: leave empty — no build step needed for plain HTML
  • Build output directory: / (root)
  • Click "Save and Deploy"

What just happened

Cloudflare Pages deployed your site to a temporary URL like kaavops-internal.pages.dev. Every push from GitHub Desktop now triggers a new deployment automatically within 30 seconds.

8
Add a custom domain: docs.kaavops.com
~5 min

In your Pages project, go to "Custom domains" → "Set up a custom domain". Enter docs.kaavops.com.

  • Cloudflare detects that kaavops.com is already on your account
  • The DNS record is created automatically — no manual editing needed
  • SSL certificate is provisioned automatically and free
  • Allow 2–5 minutes for the domain to become active

Prefer a different subdomain?

You can use internal.kaavops.com or ops.kaavops.com. Just enter a different value in the custom domain field — the setup steps are identical.

Phase 3 — Set your homepage · 5 min

9
Confirm index.html is loading as the dashboard
~2 min

The file named index.html loads at docs.kaavops.com with no path. If you've already dropped it into the local folder and pushed, visit the domain and confirm the dashboard appears.

10
Test all page links
~3 min

From the dashboard, click through to the ICP and this setup guide. Confirm both load correctly and nav links work in both directions.

Note on file paths

Cloudflare Pages strips the .html extension automatically. So kaavops-icp-v2.html is accessible at /kaavops-icp-v2. When linking between pages in your HTML, you can use either form — both work.

Daily workflows — once the system is live

Adding a new page

  1. Ask Claude → download the HTML file
  2. Drop it into the local kaavops-internal/ folder
  3. Open GitHub Desktop → commit → push
  4. Live at docs.kaavops.com/filename in 30 sec
  5. Update index.html to add the new link

Editing existing text

  1. Open the HTML file from the local folder
  2. Find the block — look for <!-- EDIT --> comments
  3. Make the change in any text editor
  4. Save the file
  5. GitHub Desktop → commit → push → live in 30 sec

Updating a full page

  1. Ask Claude for an updated version
  2. Download the new HTML file
  3. Replace the old file in the local folder (same filename)
  4. GitHub Desktop → commit → push
  5. Live in 30 sec — no manual merge needed

Linking pages together

  1. Tell Claude the full list of pages you have
  2. Ask for nav bar updates across all pages
  3. Drop all updated HTML files into the local folder
  4. Single commit → push → all pages update at once

What Claude handles automatically

To keep pages in sync

When you add a new page, tell Claude "update the nav bar to include [new page name] linking to [filename]" and ask for a re-export of the pages that need updating. Drop all files into the local folder at once and push in a single commit.

Common issues

Page not updating after I pushed a change

Cloudflare Pages usually deploys within 30 seconds but can take up to 2 minutes. Hard-refresh your browser (Cmd+Shift+R on Mac, Ctrl+Shift+R on Windows) to bypass cache. If it still hasn't updated after 5 minutes, check the deployments tab in your Cloudflare Pages project.

Custom domain showing "not secure" warning

SSL provisioning takes 2–5 minutes after adding the custom domain. If it persists after 10 minutes, go to Cloudflare Pages → Custom domains → click the domain → "Retry SSL certificate".

Links between pages are broken

Make sure filenames match exactly — including case. kaavops-icp-v2.html and KaavOps-ICP-v2.html are different files. Always use lowercase filenames with hyphens.

Build failed notification in Cloudflare

This happens if the build command field wasn't left empty. Go to Pages → your project → Settings → Builds & deployments → make sure "Build command" is blank and "Build output directory" is /.

GitHub Desktop not showing my file changes

Confirm the file was saved inside the correct local folder (the one GitHub Desktop is tracking). If the file appears under "Changes" but won't commit, check that you've entered a commit message in the summary field — it's required.