~/pedroganco/vibecoding $ cat world_map.svg
WORLD MAP
$ claude "põe isto online"
Seven pieces, two loops. One loop builds: you talk to an agent, the agent works on your machine and pushes the code. The other loop serves: a visitor asks for the site and a container answers. Click any box to see what it does.
← drag sideways to see the whole map →
Claude Code / Codex
The agent in your terminal.
// what it does
// what you set up once
You type one sentence. This is everything that happens between that sentence and a stranger loading the site.
- You ask"add a pricing page to sanum and put it online." The agent reads the project's CLAUDE.md to learn where things live.
- The agent writes codeIt edits files on the Mac mini, runs the build and the tests, opens the local dev server to check its own work.
- Git keeps scoreCommit and push. GitHub is the undo button: if the agent breaks something, the previous commit is still there.
- DNS gets a recordIf the site is new, the agent calls the Cloudflare API and points the hostname at the VPS, proxied and behind SSL.
- The code travelsrsync copies the folder over SSH, then docker compose builds the image and starts the container on the VPS.
- Traefik picks it upIt reads the container's labels, sees the hostname, asks Let's Encrypt for a certificate and starts routing.
- Someone loads the pageTheir browser resolves the name at Cloudflare, Cloudflare passes it to Traefik, Traefik hands it to the container. About ninety seconds after your sentence.
Where this breaks
The map is honest about the happy path. Three places where it stops being smooth: secrets, which never live in the repo and have to be put on the VPS by hand; a full disk, because fifty containers and their images add up faster than you expect; and the DNS propagating slower than the agent reports success, so the first load after a deploy sometimes lands nowhere.