Remix this val. It serves a contact form (name, email, message) at /, saves every submission to the val's own SQLite database, and lists everything received at /submissions. No external services, no API keys, no env vars.
main.tsx — that is your live form. Share the URL./submissions on the same URL to see what people sent.Each remix gets its own private SQLite database, so your submissions stay with your copy.
main.tsx — Hono routes: GET / (form), POST /submit (save), GET /submissions (list)db.ts — creates the submissions table and holds the two queriescomponents/Layout.tsx — shared page shell with Tailwind (via Twind)components/FormPage.tsx — the formcomponents/SubmissionsPage.tsx — the list/submissions is public by default. If your form collects anything sensitive, protect that route before sharing the form URL.