What This File Is
This is an instruction set for Claude — not for you. Place this file in your connected Cowork workspace folder and tell Claude you want to build a website. Claude reads this file, confirms its understanding, asks you what you want to build, and guides you through the process step by step. Nothing gets built without your explicit permission.
First Run — How Claude Responds
Instructions for Claude: When a user loads this file for the first time, do NOT start building immediately. Follow these steps in order.
-
1
Confirm understanding.
Tell the human what you just read and what this file is. Example: "I've read the build guide. I have full context on the tools, build phases, and lessons from the SprintingForLife.com project. This is a reference — not a prescription. Let's figure out what you want to build and which parts of this apply."
-
2
Browse the reference site.
Visit sprintingforlife.com to see a live example of what this stack can produce. Note the nav structure, design system (charcoal #2D2D2D, gold #D4A017, Archivo + Source Serif 4 fonts), interactive location map, community forms, and science library pages. Then tell the user: "I've reviewed SprintingForLife.com as a reference. Your site will be designed around your project, not this one."
-
3
Understand the user's project first.
Before describing anything you would build, ask: What is your project and who is it for? What do you want visitors to do? Do you have a domain? Which features do you need — content library, community submissions, maps, database, newsletter, analytics, merchandise? What is your budget and timeline? Listen before recommending.
-
4
Recommend tools and phases for their project.
Based on their answers, describe what you would build for their specific situation. State which tools apply and which don't. The minimum viable site is a domain (Namecheap) and a web host (Netlify). Everything else is optional.
-
5
Describe the context file system.
Explain that before writing any code, you'll build documentation infrastructure — CLAUDE.md (master instructions, your memory across sessions), Action-Items.md (open/closed task tracker), Session-Log.md (running session history), and Decisions.md (permanent decision log, written in real time).
-
6
Ask for questions.
"Before I build anything, do you have questions about the approach, the tools, or what applies to your project?"
-
7
Ask for permission to proceed.
"When you're ready, I'll start with Phase 0: building the context files for your project. That's about 10 minutes of work and sets the foundation for everything after it. Should I proceed?" Do not build anything without an explicit yes.
Part 1 — What This Guide Is
This guide documents how SprintingForLife.com was built — a science-backed fitness website for a specific niche. The tools, phases, and patterns described here work for a wide range of projects: community sites, resource libraries, local directories, niche content sites, personal brand platforms, and more. Your project may need some or none of what's listed.
What the original site included:
- Static HTML/CSS/JS site (no CMS, no WordPress, no frameworks)
- Homepage with founder story, expert endorsements, email signup
- Science library (peer-reviewed articles, each with its own page)
- Getting Started guide (milestone-based protocol, multiple levels)
- Technique guide (hill sprinting)
- Location Finder (community-submitted locations with Google Maps, photo uploads, ratings)
- Community page (reader story submissions with photo uploads, moderation workflow)
- FAQ, Disclaimer, Terms, Privacy pages
- Merchandise section (Printful QuickStore integration)
- Email newsletter (Beehiiv), Analytics (GA4 consent-gated), Professional email (Google Workspace)
Minimum viable set: A domain (Namecheap, ~$12/yr) and a web host (Netlify, $9/mo). Everything else is optional.
| Layer | Tool | Cost |
| Domain | Namecheap | ~$12/year per domain |
| Hosting + DNS + SSL | Netlify | $9/month ($108/year) |
| Backend database + storage | Supabase | Free tier |
| Email (professional) | Google Workspace | $14/month ($168/year) |
| Email newsletter | Beehiiv | Free tier (up to 2,500 subscribers) |
| Maps + Geocoding | Google Maps API | Free trial, then usage-based |
| Analytics | Google Analytics 4 | Free |
| Search Console | Google Search Console | Free |
| Merch fulfillment | Printful QuickStore | Free (margin per sale) |
| Total fixed site cost | ~$290/year |
Part 2 — Prerequisites
Only set up what your project needs. These require your identity, credit card, or direct access to third-party consoles — Claude cannot do them for you.
- Buy your domain — Namecheap.com. Required for any live site. Write down login credentials.
- Create a Netlify account — netlify.com. Free to start; upgrade when needed.
- Create a Google account — Foundation for Workspace, Maps API, GA4, Search Console. Only if using those tools.
- Set up Google Workspace — Only if you want professional email (name@yoursite.com). ~$14/month.
- Create a Supabase account — Only if your site needs a database. Free tier. Save: project URL, anon key, service role key.
- Create a Beehiiv account — Only if you want an email newsletter. Free tier.
- Create a Google Cloud Console project — Only if you need Google Maps. Enable: Maps JavaScript API, Geocoding API, Places API.
- Create a GA4 property — Only if you want site analytics. Get the Measurement ID (G-XXXXXXXXXX).
- Printful account — Only if you want merchandise. Set up a QuickStore hosted storefront.
Credentials to share with Claude (never put in public-facing files): Supabase project URL and anon key, Google Maps API key, GA4 Measurement ID, Beehiiv form embed URL.
Content Claude needs from you: Your name, background, and personal story. Your project niche and target audience. Any articles or studies to feature. Expert endorsements. Your brand color. Photos.
Part 3 — The Tool Stack (Detailed)
- Register your domain here. Keep Namecheap as registrar only.
- CRITICAL: When you switch DNS to Netlify's nameservers, Namecheap becomes registrar-only. All DNS records (MX, CNAME, TXT) go in Netlify DNS after that point — not Namecheap.
- Serves your static files. Drag-and-drop deployment (drag a zip file into the dashboard).
- SSL is automatic — Let's Encrypt certificate provisions itself when you point your domain.
- When you switch Namecheap DNS to Netlify nameservers, Netlify becomes authoritative DNS. Add all records there.
- Pricing: Free tier is viable for low-traffic launches. Upgrade to paid plan ($9/mo) before hosting large files or seeing real traffic — PDFs burn through free bandwidth quickly.
- Option to consider: GitHub + Netlify auto-deploy. Push to GitHub → Netlify auto-deploys. Eliminates the zip/drag step. Good once the site is stable.
- PostgreSQL database with REST API, Row Level Security, and file storage. Claude handles all SQL.
- Public INSERT allowed — anyone can submit. Public SELECT only on approved rows. Service role key bypasses RLS — used only in the local admin tool, never deployed.
- Storage: Public bucket for submission photos. Client-side compression before upload (max 1600px, 82% JPEG).
- Admin workflow: Claude builds a local-only HTML admin tool. Open in Chrome, enter service role key, approve/reject submissions. Never deploy this file.
- Critical — easy to miss: After creating your account, manually click "Activate Gmail" in the Admin Console. Gmail does not activate automatically.
- Add Google MX records in Netlify DNS (not Namecheap) after switching nameservers.
- Set up DMARC TXT record in Netlify DNS to prevent email spoofing.
- Set up aliases: info@, support@, newsletter@ forwarding to your primary address.
- Handles subscriber management, welcome email, and broadcast sends.
- Beehiiv provides a CNAME record for your branded sending domain — add in Netlify DNS.
- Welcome email: Configure in Beehiiv → Automations → Welcome Email.
- Font note: Use Arial in Beehiiv email typography. Google Fonts don't render in Outlook.
- Enable: Maps JavaScript API, Geocoding API, Places API in Google Cloud Console.
- Restrict your API key to *.yoursite.com/* immediately — takes 30 seconds, prevents unexpected billing.
- Pin-drop submission: user drops a pin, reverse geocoding auto-fills city/state. Claude builds this entirely.
- Free tier: $200/month Google credit — sufficient for most small sites.
- Free. Get Measurement ID (G-XXXXXXXXXX) from GA4 console.
- Consent-gated: Claude implements a cookie consent banner. GA4 fires only after visitor clicks Accept.
- One GA4 property per site. Key events to star: email_signup, location_submission, story_submission, first_visit.
- Use Printful QuickStore (hosted storefront). Printful is seller of record — handles checkout, fulfillment, shipping, and U.S. sales tax collection. No sales tax permit needed for this channel.
- Design products, order physical samples, approve them, then link the store from your site.
- Don't link the store live until you've approved physical samples. Screen and product can look very different.
- Use an AI image generator (Midjourney, DALL-E, Adobe Firefly) to develop the initial concept.
- Use Python (Pillow library) to generate color variants — Claude writes all Python scripts.
- Always use transparent PNGs — never JPG for logos. JPG has no alpha channel and renders with a solid white background box.
- Naming convention:
bodycolor_swooshcolor_logo_tm.png (e.g., black_gold_logo_tm.png).
- SFL developed 16 color variants across gold, black, white, slate, green, purple.
Part 4 — Build Phases
These are the phases used for SprintingForLife.com. Claude will confirm which phases apply to your project before starting.
Phase 0 — Always Do This First
Context Files
Before any HTML is written, Claude builds the documentation infrastructure. Without these files, context is lost between sessions.
CLAUDE.md — Master instruction file, read at session start. Project name, folder structure, design system, deployment rules, credentials reference.
Action-Items.md — Open/closed tracker. IDs, owners, priorities. Claude marks items done as they're completed.
Session-Log.md — Running history. Claude appends each session: what was built, decisions made, open threads.
Decisions.md — Permanent log. Every decision goes here the moment it's made. Sessions end abruptly.
Lesson: Context files take 10 minutes and save hours. Do Phase 0 first. No exceptions.
Phase 1
Domain and Hosting
You do: Register domain on Namecheap. Create Netlify account. Create initial Netlify site. In Namecheap: change nameservers to Netlify's (dns1–4.p09.nsone.net). In Netlify: add custom domain, wait for SSL.
Claude builds: Starter index.html to test deployment. All DNS records needed in Netlify.
Lesson: After switching to Netlify nameservers, Namecheap is done. Every future DNS change is in Netlify DNS.
Phase 2 — Skip if no professional email needed
Email Infrastructure
You do: Set up Google Workspace (~$14/mo). In Admin Console: click "Activate Gmail" (Gmail does not activate automatically). Add 5 Google MX records to Netlify DNS. Add SPF and DMARC TXT records. Set up email aliases.
Claude provides: Exact MX, SPF, and DMARC records to add in Netlify DNS. Instructions for alias setup.
Phase 3
Site Architecture and Design System
Tell Claude: Brand color, site name and tagline, target audience, fonts, page list.
Claude builds: Full CSS design system (custom properties for colors, fonts, spacing). Responsive nav (sticky, mobile hamburger). Page template (disclaimer → nav → hero → content → footer). Cookie consent banner. All core pages.
Hero rule: Every page opens on white or off-white. Dark sections appear lower on the page.
yoursite/ ← All files flat at root
index.html
[content pages].html
sitemap.xml / robots.txt / 404.html
favicon.ico / og-image-v2.png / logo.png
Phase 4 — Skip if no database needed
Supabase Backend
You do: Create Supabase project (free). Share project URL and anon key. Keep service role key private. Run SQL Claude provides.
Claude builds: All tables and RLS policies. Client-side JS (INSERT on submit, SELECT approved only). Photo upload flow. Admin review tool (local only, never deployed).
-- Anyone can submit
CREATE POLICY "Public can insert" ON locations
FOR INSERT WITH CHECK (true);
-- Visitors only see approved content
CREATE POLICY "Public can view approved" ON locations
FOR SELECT USING (status = 'approved');
Phase 5 — Skip if no maps needed
Google Maps Integration
You do: Enable Maps JavaScript API + Geocoding API + Places API in Google Cloud Console. Create API key, restrict to *.yoursite.com/* immediately. Share key with Claude.
Claude builds: Filterable, sortable location finder map. Pin-drop submission form with reverse geocoding and photo upload. Satellite thumbnail images for location cards. Rating system.
Phase 6 — Skip if no newsletter needed
Beehiiv Email Newsletter
You do: Create Beehiiv publication. Add sending domain, get CNAME record, add to Netlify DNS. Set up welcome email. Change font to Arial. Share embed code with Claude.
Claude does: Pastes Beehiiv embed iframe into site signup section, styles to match design system.
Phase 7 — Optional but recommended
Analytics and Search Visibility
You do: Create GA4 property, share Measurement ID. In Google Search Console: create property, verify via DNS. In Bing Webmaster Tools: import from Search Console.
Claude builds: Consent-gated GA4 tag. Cookie consent banner (Accept/Decline). sitemap.xml. robots.txt.
Phase 8
Content Build
Most time is spent here. Claude builds templates and structure; you provide content.
Content library: Each article/study gets its own page. You provide title, authors, source, year, key findings. Claude builds each page with citations, plain-language summary, and source link.
Founder story: Write in your own words, unedited. Claude polishes; raw material must be yours. This is the most important content on the site.
PDF downloads: Generate from the site by printing from Chrome (File → Print → Save as PDF). One source of truth — update the page, reprint the PDF.
Phase 9 — Skip if no merch needed
Merch Channel (Printful QuickStore)
Not a blocker for launch. Set up after site is live and physical samples are approved.
You do: Design products in Printful. Order and test physical samples. Set up QuickStore. Get your QuickStore URL.
Claude builds: Merch section on homepage (Launching Soon until live). Separate merch.html page. Shop nav link.
Phase 10
Deployment Process
- Claude edits files in your local folder
- Say "build the zip" when changes are ready
- Claude presents a build plan — you approve it
- Claude zips all files flat (no subfolders)
- You drag the zip into Netlify → deploys in ~10 seconds
Version naming: yoursite-v1.0.zip. Store all zips in a Deployments/ folder. Never overwrite old zips.
Never deploy: The admin review tool. Any file with your Supabase service role key. Test files.
Option to consider: GitHub + Netlify auto-deploy. Connect your repo to Netlify — every push auto-deploys. Recommended once the site is stable.
Part 5 — File Structure Reference
_YourProject/
CLAUDE.md ← Session instructions
Action-Items.md ← Open/closed task tracker
Session-Log.md ← Session history
Decisions.md ← Permanent decision log
Brand/
Logo Source Files/
black_gold_logo_tm.png ← Active web logo
[color variants]
archive/ ← Retired logos (never delete)
WebsiteDev/
yoursite/ ← All HTML, images, PDFs (flat)
index.html
[all other HTML files]
sitemap.xml / robots.txt / 404.html
favicon.ico / favicon.png
og-image-v2.png / logo.png
Deployments/
yoursite-v1.0.zip ← Keep all versions
All internal HTML links use bare filenames (faq.html, not /faq.html). All deployment files are at root — no subfolders in the zip.
Part 6 — What Claude Does vs. What You Do
Claude does all of this
- Writes every line of HTML, CSS, and JavaScript
- Designs and implements the responsive layout
- Builds Supabase integration (tables, RLS, client-side JS)
- Builds Google Maps integration (location finder, pin-drop, geocoding)
- Builds Beehiiv embed and signup flow
- Implements GA4 consent-gated analytics
- Writes sitemap.xml, robots.txt, 404.html
- Builds admin review tool
- Generates all deployment zips
- Writes Python scripts for logo variant generation
- Formats content/article pages from your summaries
- Drafts and refines all copy in your voice
- Maintains all documentation in real time
- Provides exact DNS records for Netlify
You do all of this
- Register domain, create all accounts
- Set up Google Workspace and activate Gmail
- Add DNS records in Netlify (Claude tells you what)
- Restrict the Google Maps API key in Cloud Console
- Order and approve Printful product samples
- Write your founder story (raw; Claude polishes)
- Define your protocol or content structure
- Provide your source articles or studies
- Drag deployment zips into Netlify
- Review and approve content before publishing
- Approve or reject submissions in the admin tool
- Send newsletter broadcasts in Beehiiv
- Make all final decisions on copy, design, strategy
Part 7 — Lessons Learned
-
DNS lives in Netlify after you switch nameservers.
The moment you change Namecheap DNS to Netlify's nameservers, Namecheap is done. Every DNS record — MX for email, CNAME for Beehiiv, TXT for DMARC — goes in Netlify DNS going forward. Many people keep adding records in Namecheap and wonder why email doesn't work. It won't — Namecheap is no longer authoritative.
-
Gmail must be explicitly activated in Google Workspace.
There's an "Activate Gmail" banner in the Admin Console. Click it. Gmail does not activate automatically. Easy to skip; leaves you with professional email addresses that silently don't receive mail.
-
Chrome print is the right way to make a PDF from your site.
Print the web page directly from Chrome (File → Print → Save as PDF). One source of truth — update the page, reprint the PDF. Zero separate content maintenance.
-
Netlify free tier hits bandwidth limits faster than you expect.
A 2–3MB PDF with real traffic burns through the 100GB free allowance faster than you'd think. Upgrade to Pro ($9/mo) around launch time.
-
Supabase service role key is powerful and must stay local.
The service role key bypasses all Row Level Security. Never put it in a deployed file. Never commit it to GitHub. The admin tool that uses it lives on your local machine only.
-
Logo files must be transparent PNGs, not JPGs.
JPG has no alpha channel. A JPG logo renders with a solid white background box that only accidentally matches your page. Use transparent PNGs for all logos on the web.
-
Beehiiv typography — use Arial, not Google Fonts.
Google Fonts don't render in Outlook. Arial is a native Windows font that works everywhere.
-
Restrict your Google Maps API key immediately.
Takes 30 seconds in Cloud Console. Prevents unexpected billing if someone scrapes the key from your HTML.
-
Document decisions in real time.
Write every decision to Decisions.md the moment it's made. Sessions end abruptly. If it isn't written when it happens, it may not survive.
-
Ask Claude everything — and push back.
No matter what comes up — a technical problem, a tool decision, an unexpected error — the first and best move is to ask Claude. Ask why. Ask how. Ask whether there's a better approach. Don't accept every recommendation without questioning it. Tell Claude the direction you want to go. Claude writes the code; you make the decisions.
Part 8 — Starting a Session With This File
- Save this file as
ClaudeHowToInstructions.md in your connected Cowork workspace folder.
- At the start of a new session, tell Claude: "I want to build a website. I've read the build guide. Here's my situation: [your project, your niche, which accounts you've already set up]."
- Claude will follow the First Run protocol: confirm understanding, browse the reference site, ask what you want to build, recommend the right tools, explain context files, ask questions, and request permission before building anything.
Total active build time: A simple content site: 5–10 hours of Claude sessions. A full-featured site like SprintingForLife.com: 15–25 hours of Claude sessions. Your time (decisions, content, account setup): 10–15 hours.