Safe to share. This copy contains no inbox key, no database password and no
personal messages. The private inbox key lives only in the Cloudflare secret
MW_ADMIN_KEY and in the organisation's own files.
Page and design
- index.html — all public content: about, programmes, vision, contact
- inbox.html — the private message reader
- 404.html — branded "page not found"
- assets/css/styles.css — colours, type, spacing, print layout
Behaviour
- assets/js/app.js — navigation, tabs, validation, sending, QR tool
- assets/js/qr.js — self-contained QR encoder, no internet needed
- assets/js/config.js — phone, WhatsApp, email, address, fixed QR link
- _routes.json — which paths run code on the server
Server side
- functions/api/submit.js — receives a form, validates it, rate-limits, saves to D1
- functions/api/submissions.js — returns messages only with the correct key
- schema.sql — the two database tables
Project files
- deploy/cloudflare/README.md — setup, deploy and operating guide
- README.md — project notes
- wrangler.toml — Cloudflare project and database binding
- package.json — local dev and deploy shortcuts
- .dev.vars.example — placeholders for local testing
Assets
- logo.svg — the crest (vector)
- social-card.png — 1200 × 630 sharing image
- favicon.png — browser tab icon