- HTML 100%
| public | ||
| docker-compose.yml | ||
| README.md | ||
pennydrop.net
The public site for PennyDrop, LLC — a consultancy for behavior change at scale.
Currently a single under-construction page. This repo is the only source of truth for its
content: the file this repo serves is literally the file in public/, not a copy of it.
How it is served
vps-da3417bd holds a clone of this repo at /srv/www/site-repo, and /srv/www/pennydrop is a
symlink to /srv/www/site-repo/public. A Coolify service (pennydrop-site, project website)
runs nginx:1.27-alpine with that path bind-mounted read-only, and Coolify's Traefik terminates TLS
with Let's Encrypt and redirects http to https.
DNS is Route 53: pennydrop.net and www.pennydrop.net are A records to 15.204.230.52. The apex
is a real record, not the *.pennydrop.net wildcard — that points at the Pangolin edge instead, and
this site deliberately does not go through Pangolin.
To publish a change
# 1. commit and push here, then on the VPS:
git -C /srv/www/site-repo pull
That is the whole deploy. No container restart is needed — nginx reads from disk per request, and the symlink means the served file is the working-tree file. There is no build step and no second copy to fall out of date.
Two standing rules
- This repo is public, deliberately, and the Forgejo org is public for the same reason. Nothing secret belongs here — no env files, no keys. Secrets go in OpenBao.
- The site must never be SSO-gated. ZeptoMail's account review fetches it anonymously with a non-browser client; a Pangolin challenge page reads as "no active and functional website".
About docker-compose.yml
It carries Traefik labels and is not currently what runs. It exists for the Coolify application
pennydrop-site (a second, parked resource) which pulls this repo directly — that path is blocked
because Coolify 4.3.18 will not persist a domain on a compose application, and its UI stopped
dispatching deployments. If that is ever fixed, the labels here are what routes it.
Accessibility
The page is held to WCAG 2.2 AA: semantic structure, one h1, visible focus ring, real text
rather than images of text, and every text/background pair above 8:1 contrast in both light and dark.
Keep it that way — an inaccessible site from a firm that designs learning is a credibility problem
before it is a compliance one.