21b8d135233bf6416cc934bd55da9b8bcbbd43e0
momme.world
Personal site at momme.world — a terminal-style page
that behaves like a small shell (whoami, projects, social, …), plus a
plain-text rendering for curl momme.world.
Layout
k8s/
kustomization.yaml the whole deployment: generated ConfigMaps + refs
deployment.yaml one unprivileged nginx, content served from ConfigMaps
service.yaml ClusterIP, :80 -> :8080
site/ the actual website, served as-is
index.html markup + noscript fallback
style.css
site.js the terminal; ALL site content lives in COMMANDS here
nginx.conf mounted as /etc/nginx/conf.d/default.conf
hello.txt what curl gets
There is deliberately no build step: no package.json, no bundler, no CI.
Edit a file under k8s/site/, merge to main, ArgoCD syncs it. The content
of the site is the repo — the kustomize configMapGenerator hashes the files
into their ConfigMap names, which rolls the Deployment automatically.
Editing the site
- New terminal command: add one object to
COMMANDSink8s/site/site.js. It appears inhelpand in tab-completion automatically.label -> urllines become links. - The noscript block in
index.htmlmirrors the main facts by hand; keep it in sync when changingwhoami/contactcontent. curl-UA detection is the$root_docmap ink8s/site/nginx.conf.
How it deploys
The momme/infra module app-momme-world owns the namespace, the TLS
certificate and the HTTPProxy, and creates an ArgoCD Application that points
at k8s/ in this repo. Nothing in this repo talks to the cluster.
Local preview
Any static server works, e.g.:
cd k8s/site && python -m http.server 8080
Open decisions
Things left deliberately open for you:
- DNS —
momme.worldcurrently has no A record. The zone lives in Cloudflare (nameserversfred/jessica.ns.cloudflare.com), the same placemomme.cloudlives. AnA momme.world -> 31.18.25.47(grey cloud, the same public entry all*.momme.cloudservices use) is all that's needed. Also check that the Cloudflare API token behind thecfClusterIssuer (Infisical/global,cloudflare_api_token) is allowed to do DNS-01 in the momme.world zone — if it's scoped to momme.cloud only, widen it. - www redirect — not implemented. If you want
www.momme.worldto work, add a second DNS name + HTTPProxy route (infra PR can carry it). - Analytics / visits — none included. Self-hosted (Plausible) or none is an easy later call; nothing in this repo blocks it.
- Blog later — you mentioned a Markdown-driven blog could be nice someday. The current no-build design can take it as far as "one static page per post written in HTML"; as soon as you want real Markdown + templates, the natural step is a generator (Lume like adb.sh, or Hugo) plus a built image. Decision deferred, structure unaffected.
- Content facts — taken from the old site's commands (work at
codeanker, projects list, socials). Say the word for anything outdated;
they all live in
COMMANDSinsite.js.
Description
Languages
JavaScript
56.5%
Python
24.3%
HTML
17.4%
CSS
1.8%