Monorepo for side projects hosted under apps.andymolenda.com. Each project gets its own subdomain, deployed to Cloudflare Pages with infrastructure managed by OpenTofu.
| Project | URL | Tech | Description |
|---|---|---|---|
| homepage | apps.andymolenda.com | Static HTML | Landing page and project directory |
| clock | clock.apps.andymolenda.com | Static HTML/JS | World clock across timezones |
| weft | weft.apps.andymolenda.com | Veilid WASM, cr-sqlite, lit-html | Local-first topic-threaded P2P chat |
| peer-drop | peer-drop.apps.andymolenda.com | WebRTC, PeerJS | Browser-based P2P file and text sharing |
- No build step — all projects are static HTML/CSS/JS with native ES modules
- External libraries via CDN only — no npm, no bundlers, no node_modules
- Infrastructure as Code — OpenTofu manages Cloudflare Pages projects, DNS, and custom domains
- CI/CD — GitHub Actions deploys only changed projects on push to
main - Claude Code —
@claudein issues/PRs triggers automated coding via GitHub Action
projects/
homepage/ Landing page (apps.andymolenda.com)
clock/ World clock
weft/ P2P chat (Veilid + cr-sqlite)
peer-drop/ P2P file sharing (WebRTC)
tofu/ OpenTofu infrastructure
.github/workflows/
deploy.yml Tofu plan/apply + deploy changed projects
claude.yml Claude Code GitHub Action
- Create
projects/<name>/with anindex.html - Add the project name to the
projectsset intofu/variables.tf - Update
projects/homepage/index.htmlto link to the new project - Push to
main— tofu creates the Cloudflare Pages project + DNS, deploy auto-discovers the new directory
Subdomain <name>.apps.andymolenda.com is derived automatically. No workflow file changes needed.
No build step. Serve any project directory:
cd projects/<name>
python3 -m http.server 8000
Dark theme with gold accent. See CLAUDE.md for the full design system reference with colors, typography, and layout specs.
| Token | Value |
|---|---|
| Background | #0f0f0c |
| Surface | #1a1a16 |
| Accent | #c4a24e |
| Text | #e8e4d4 |
| Font | Inter + JetBrains Mono |