I finished a seven-part beginner series on building a personal website with Codex.
The reader I had in mind is not a programmer.
They can use a computer, copy text, open a browser, sign in with Google when needed, and read a page to see whether it says the right thing.
That is enough for a first site.
The mistake I wanted to avoid was making people learn the whole map before they can move.
A normal person should not need to understand GitHub, Cloudflare, DNS, build output, or deployment pipelines before the first useful action.
My rule for the series is simple:
The reader should be able to act before they fully understand the system.
What the series covers
The route starts with one clean folder, not a platform dashboard.
- Start Codex in an empty folder
- Open the first local preview
- Publish a free public URL first
- Add a custom domain only when it helps
- Keep editing the site after it is online
- Check privacy and common mistakes before publishing
There is also a series entry point:
Your first personal website with Codex, without fearing the tools
The first prompt matters
The series does not begin with:
Build me a personal website.
That is too vague. Codex has to guess the audience, scope, privacy boundary, and first structure.
The better first move is closer to this:
I want to build my first personal website, but I am not a programmer.
Please break the process into small steps I can follow.
Do not make me understand GitHub, Cloudflare, DNS, or build commands first.
For now, inspect the current folder and tell me whether it is safe to start here.
If it is safe, give me the smallest first plan.
If it is not safe, tell me which empty folder I should use instead.
Version one only needs:
- home page
- about page
- work or writing list
- contact page
Please keep warning me about anything that should not be public.
Now Codex has a real job: guide the route, keep the scope small, and protect the boundary.
Deployment should not start with manual upload
One part I rewrote after trying the flow myself: the publishing step should not ask a beginner to upload dist or build by hand.
The path I prefer is:
- ask Codex to inspect the project;
- let Codex prepare Git and the deployment path;
- let Codex open or name the page where the reader must sign in, choose an account, authorize, or confirm;
- use the free public URL first;
- buy a custom domain only after the free version works.
The reader should not have to know which website comes next before Codex tells them.
Maintenance is the real test
The first launch is not the end. A personal site only matters if the owner can keep changing it.
That means every update should be small:
- change one sentence;
- add one article;
- replace one image;
- preview locally;
- run checks;
- publish through the workflow this project actually uses.
If something breaks, the fix should start from the symptom, not from rebuilding the whole site.
Privacy is not optional
A personal website is public. Search engines may index it. Someone may forward it. Years later, you may forget what was once there.
So the last step is a pre-publish check:
- page text;
- screenshots and images;
- filenames and links;
- API keys or environment files;
- placeholder text;
- broken links;
- phone readability.
This is not about making the site empty. It is about keeping the public boundary clean.
Why I wrote it this way
Most beginner tutorials still assume the reader already has a map in their head.
This one assumes the opposite.
A reader can say what they want, confirm account pages, authorize tools, and check the result.
Codex should handle the mechanical parts and explain the next page only when it appears.
That is a more honest beginner workflow than pretending everyone wants to become a web developer before they can have a small home on the web.
Full series:
https://marlinbian-site.pages.dev/en/tutorials/first-personal-site-with-codex/
Originally published on my personal site:
https://marlinbian-site.pages.dev/en/tutorials/first-personal-site-with-codex/
More links: GitHub · YouTube · LinkedIn · Bluesky · Mastodon · Discord
Top comments (0)