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 COMMANDS in k8s/site/site.js. It appears in help and in tab-completion automatically. label -> url lines become links.
  • The noscript block in index.html mirrors the main facts by hand; keep it in sync when changing whoami/contact content.
  • curl-UA detection is the $root_doc map in k8s/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:

  1. DNS — momme.world currently has no A record. The zone lives in Cloudflare (nameservers fred/jessica.ns.cloudflare.com), the same place momme.cloud lives. An A momme.world -> 31.18.25.47 (grey cloud, the same public entry all *.momme.cloud services use) is all that's needed. Also check that the Cloudflare API token behind the cf ClusterIssuer (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.
  2. www redirect — not implemented. If you want www.momme.world to work, add a second DNS name + HTTPProxy route (infra PR can carry it).
  3. Analytics / visits — none included. Self-hosted (Plausible) or none is an easy later call; nothing in this repo blocks it.
  4. 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.
  5. 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 COMMANDS in site.js.
S
Description
No description provided
Readme 110 KiB
Languages
JavaScript 56.5%
Python 24.3%
HTML 17.4%
CSS 1.8%