Learn Claude Code by Building DevPulse · Chapter 14

DevPulse on the internet

DevPulse only lives on your laptop, so how do you show a friend what you are building without showing them everything? By the end of this chapter, a public page of your chosen tasks is live on GitHub Pages, and Claude has checked that nothing private went with it.

One sitting~7 min read, ~20 min to build along
You start fromchapter 13's DevPulse
You builda public page, live on GitHub Pages
Chapter 14 of 15DevPulse leaves your laptop
Goes with Episode 14"How do I put DevPulse online?". The video is being made. This page teaches the same steps, at your own pace.
In a hurry?Jump to the quick reference: every command and key in this chapter, what it does, and when to use it.
Every prompt, ready to copyThis chapter's prompts and commands, each with a Copy button. Type them yourself first; copy if you are stuck or behind.
Where you areDevPulse with tests, skills, its own tools and hooks, from chapters 1 to 13. It all runs on your laptop.

A friend asks what you are building

You could send a screenshot. But a link is better: they open it, and it is always up to date.

There is a catch. DevPulse holds every task you log, and some are private. You want to share a few, not all.

The question for this chapter

How do you put part of DevPulse on the internet, and be sure the rest stays on your laptop?

A page of public tasks only

The plan: a small script reads your tasks, keeps only the ones tagged public, and writes one plain web page. Your data file never leaves the laptop. Only the page does.

Type this into Claude Code, as one lineCreate publish.py that builds docs/index.html, a public "What I'm building" page, from tasks tagged public only. Keep data/tasks.json out of git. Then run it.
Claude: I created publish.py and ran it. It wrote docs/index.html with 0 public tasks, because no task is tagged public yet. It keeps only tasks tagged exactly public, leaves out ids and timestamps, and added data/ to .gitignore; git check-ignore confirms data/tasks.json is ignored.
Zero public tasks, so the page says "Nothing public yet". Note the second point: data/ is now in .gitignore, so git will never commit it.

An empty page proves nothing. Give it two tasks to show. This uses your own DevPulse tools from chapter 11.

Then type this, as one lineLog two tasks tagged public: "Built a Week view with streaks" 90 minutes and "Gave Claude Code its own DevPulse tools" 60 minutes. Then run publish.py again.
Called devpulse 4 times, ran 1 shell command. Claude: I logged both tasks with the public tag and re-ran publish.py; docs/index.html now lists both, with a total of 2 h 30 min. Both show as open because new tasks start as not done.
"Called devpulse 4 times": Claude logged the tasks through your own tools. Total: 2 h 30 min.

Open the page on your laptop first.

Windows: type this into Claude Code! start docs/index.html
Mac: type this into Claude Code! open docs/index.html
A plain white page titled What I'm building: 2 items, 2 h 30 min so far. Built a Week view with streaks, 2026-10-29, 1 h 30 min. Gave Claude Code its own DevPulse tools, 2026-10-29, 1 h.
Two tasks, a total, and nothing else. The empty circles mean "not done yet", as Claude said.

Commit it with /commit-commands:commit.

/commit-commands:commit. Committed e3e49da. Claude: I committed .gitignore, publish.py and docs/index.html as e3e49da, Add publish.py for public page. I left .playwright-mcp/ out of the commit.
Three files in one commit. Your task file is not one of them.

Put the project on GitHub

GitHub keeps a copy of your project online, and it can serve a folder as a website for free. Claude talks to GitHub through gh, GitHub's own command-line tool.

First, install gh and sign in to your own GitHub account. Do this yourself, in your second tab. Claude should never type your password.

Windows: type this in PowerShell, one line at a timewinget install --id GitHub.cli gh auth login
Mac: type this in Terminal, one line at a timebrew install gh gh auth login

gh auth login asks a few questions. Pick GitHub.com, then "Login with a web browser", and follow the code it shows. Then go back to Claude Code.

Type this into Claude CodeCreate a public GitHub repository called devpulse with gh, and push this project to it. Make sure data/ stays out.
Claude: data/ is already ignored and nothing under it is tracked. Creating the repo now. Then: the public repo is up at https://github.com/Aditya-402/devpulse, and main is pushed to it. I checked the pushed tree and no data/ files are in it.
It checked data/ before it created anything, and checked again after the push. Yours will be under your own GitHub name.
Careful here

"Public" means anyone can read every file in the repository. That is why data/ had to be in .gitignore first. Once a file is pushed, deleting it later does not remove it from the history.

Turn the docs folder into a website

GitHub Pages serves one folder of your repository as a website. We put the page in docs/ for exactly this.

Type this into Claude Code, as one lineTurn on GitHub Pages for this repository from the main branch, /docs folder, with gh, and give me the live address.
Ran 1 shell command. Claude: GitHub Pages is on for main and the /docs folder. The live address is https://aditya-402.github.io/devpulse/. The first build usually takes a minute or two, so the page may return a 404 until it finishes. I didn't check that the page loads.
One command, one address. Read the last line: it did not check the page. That is our next step.

Your address follows the same shape: your-github-name.github.io/devpulse. Wait a minute or two before you open it.

Check what went public

Anything on the internet can be read by anyone. So before you share the link, ask Claude to prove two things: the page is up, and nothing private is on it.

Type this into Claude CodeCheck that the live page is up and shows no private tasks.
Claude: Status: the Pages build finished and the address returns HTTP 200. Content: the page lists 2 items totalling 2 h 30 min. Private tasks: data/tasks.json has 6 tasks; the 4 tagged planning, backend and review don't appear on the page. The page has no scripts and doesn't fetch any data.
HTTP 200 means the page is live. Six tasks on your laptop, two on the page. The four private ones stayed home.

Now open the address in your browser.

The live page, What I'm building: 2 items, 2 h 30 min so far, with the same two tasks.
The same page as on your laptop, now on the internet. Send the link to your friend.

To add a task later: tag it public, run python publish.py (Mac: python3), commit, and push. GitHub rebuilds the page.

What it costs

GitHub Pages is free for public repositories. The cost is care: every push to a public repository is public. Keep the check as a habit, every time.

And one more question. All 14 chapters happened in this terminal. Is the terminal the only place Claude Code works? That is chapter 15.

Quick reference

The prompts from this chapter, ready to copy: every prompt, chapter 14.

Command or keyWhat it doesUse it when
Create publish.py that builds docs/index.html …Writes a script that turns public tasks into one static pageYou want to share some of your data, not all of it
data/ in .gitignoreKeeps your private task file out of every commitBefore anything goes to GitHub
gh auth loginSigns the GitHub CLI in to your own accountOnce, before Claude creates a repository for you
Create a public GitHub repository … with ghCreates the repository and pushes your projectThe project is ready to leave your laptop
Turn on GitHub Pages … /docs folderServes docs/ as a websiteYou want a live address to share
Check that the live page is up and shows no private tasks.Fetches the live page and compares it with your dataEvery time something goes public

References

Where each command and setting on this page comes from. Every screenshot is from our own recording on 29 Oct 2026, Claude Code 2.1.312.

  1. GitHub · GitHub CLI manual gh auth login, gh repo create, and gh api for repository settings. https://cli.github.com/manual/
  2. GitHub · Configuring a publishing source for your GitHub Pages site Publishing from the main branch and the /docs folder; the first build can take a few minutes. https://docs.github.com/en/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site
  3. Git · gitignore How a .gitignore line keeps a folder out of every commit. https://git-scm.com/docs/gitignore
  4. My own recording · 29 Oct 2026, Windows 11 The repository, Pages and the live check took under five minutes; the page showed 2 public tasks and none of the 4 private ones.