Site Launch Plan¶
The site should launch as a public, static MkDocs personal website first.
The paid skill library should remain a second phase until the offer, access model, and fulfillment loop are real enough to test.
The safe deployment boundary is this personal-site/ directory. Do not publish the parent workspace root.
Working Goal¶
Publish a durable personal site that makes the work legible:
- who this is
- what problems the work clusters around
- what writing is worth starting with
- how to collaborate
- how to verify credibility
- how to contact
The first launch should cost zero in hosting. Domain registration is separate; halotj.com is the chosen owned-domain candidate.
Architecture Decision¶
MkDocs is the right first form factor because it keeps the site close to the writing system:
- Markdown source is easy to edit.
- The generated site is static and hostable almost anywhere.
- Material for MkDocs gives search, navigation, and enough visual control without turning this into a frontend project.
- The public site can later point to a paid product without becoming the paid product.
Hosting Decision¶
Use Vercel first because the site is personal and non-commercial for now.
Use Netlify or Cloudflare Pages later if commercial Stripe access becomes real and the site should remain on a free static-hosting plan.
The reason is policy, not technical capability. Vercel Hobby supports personal projects and custom domains, but commercial use requires a paid plan.
| Host | Free launch URL | Custom domain on free plan | Paid/Stripe fit | Use when |
|---|---|---|---|---|
| Vercel Hobby | *.vercel.app |
Yes | Poor fit for paid access because Hobby is non-commercial | You want the smoothest personal/non-commercial launch |
| Netlify | *.netlify.app |
Yes | Good for a small commercial static site within usage limits | You want the least awkward zero-cost path from personal site to paid offer |
| Cloudflare Pages | *.pages.dev |
Yes | Good for commercial static hosting and later Cloudflare-native controls | You want DNS, hosting, and access-control options in one ecosystem |
| GitHub Pages | *.github.io |
Yes | Poor fit for an e-commerce/SaaS-like site | You want a public project/personal site tied closely to GitHub |
Domain Decision¶
The current domain decision is:
halotj.comas the owned canonical domain*.vercel.appas the temporary deployment URL
The fallback free-hosted domains are:
halotj.vercel.apptjchalokia.vercel.app- the generated Vercel project deployment URL
Use a community subdomain only if owned-domain registration is deferred:
halotj.is-a.devtjchalokia.is-a.dev
The durable asset is the owned domain plus the Git repository. Vercel is the first host, not the thing the site depends on forever.
Stripe Decision¶
Stripe can be added without rebuilding the whole site if payment is initially manual.
The first paid experiment should use:
- Stripe Payment Links for checkout
- Stripe Customer Portal for subscription management
- manual access to a private repo, folder, or download
Automated per-seat access requires a real entitlement system. That means identity, subscription state, webhooks, storage, and revocation. MkDocs should not pretend to solve that.
The upgrade ladder is:
- No paid access: the public site contains only writing, resume, user manual, and contact.
- Manual paid access: the public site links to Stripe Payment Links; fulfillment happens by hand.
- Semi-automated access: Stripe webhooks update a subscriber list or private repository invitations.
- Automated access: a small authenticated app checks subscription entitlements before serving private materials.
Do not put secret keys, private skill files, or customer-only downloads inside the MkDocs public build.
Versioning Decision¶
Use Git for website history.
Use mike later only if the skill library develops release lines such as:
skills/0.1skills/0.2skills/latest
Website versioning before a stable product line would create ceremony without improving trust.
For now, use this workflow:
- Draft pages in
docs/. - Run
mkdocs build --strictlocally. - Commit source files, not the generated
site/directory. - Let the host rebuild from the repository.
- Tag meaningful public launches as
site-v0.1,site-v0.2, and so on.
When paid skills exist, split the workflow:
- website releases describe the public site state
- skill releases describe paid content state
- payment/subscriber state lives outside Git
Only introduce mike when old skill docs need stable URLs after the current docs move on.
Ownership Decision¶
Own the site through:
halotj.com- the GitHub repository
- local Git clones
- release tags
Treat hosting as replaceable. If Vercel becomes the wrong host later, rebuild the MkDocs site and point halotj.com at a new static host.
Launch Checklist¶
Do these in order:
- Buy
halotj.comand enable auto-renew. - Create a standalone Git repository from this directory, not from the parent workspace root.
- Confirm these files exist:
mkdocs.ymlrequirements-docs.txtnetlify.tomlvercel.jsondocs/- Run
mkdocs build --strict. - Push the source files to GitHub.
- Import the GitHub repository into Vercel.
- Confirm Vercel reads
vercel.json. - Deploy once on the generated
*.vercel.appURL. - Add
halotj.comto the Vercel project. - Set
site_urlinmkdocs.ymltohttps://halotj.com/. - Commit and push the
site_urlupdate. - Deploy again and verify HTTPS.
- Tag the first public release as
site-v0.1. - Add the public URL to the contact surfaces that matter.
Done Criteria¶
The first public launch is done when:
- local
mkdocs buildpasses - the site deploys from a GitHub repository to Vercel
- the homepage, user manual, resume, writing index, and contact route are coherent
- the public URL is added to
site_urlinmkdocs.yml - paid-access copy is absent or clearly marked as future/manual
- the generated host URL is stable enough to share
The custom-domain launch is done when:
halotj.comis registered- DNS verifies
- HTTPS is active
site_urlpoints athttps://halotj.com/- old host URLs redirect or are no longer shared