20 min · Free
A form people can fill
One form that works on a phone — name, request, and a clear thank-you. No server required.
A form is a conversation with a start and a finish. If people do not know it worked, they will send a second WhatsApp and you will have duplicates.
What you will make
A page with three fields and a button. Example: “Request a hymn” or “Tell us a missing price”.
<form id="ask">
<label>Your name <input name="name" required autocomplete="name" /></label>
<label>Your request
<textarea name="request" required rows="3"></textarea>
</label>
<button type="submit">Send</button>
</form>
<p id="thanks" hidden>Received. We will not pretend this emailed anyone.</p>
<script>
const form = document.querySelector("#ask");
const thanks = document.querySelector("#thanks");
form.addEventListener("submit", (event) => {
event.preventDefault();
const data = new FormData(form);
const name = String(data.get("name") ?? "").trim();
const request = String(data.get("request") ?? "").trim();
if (name.length < 2 || request.length < 3) {
return;
}
form.hidden = true;
thanks.hidden = false;
});
</script>
This does not send email. That is honest. A later host or a mailto: link can wait. The skill today is: collect, check, tell the person it worked.
Acceptance
- Labels are visible. Placeholder-only fields fail when the keyboard covers them.
requiredis not enough — you still check length.- The thank-you is a sentence, not a spinner that never ends.
- Large taps. One column.
You now have three artifacts from this track: a price list, a searchable list, and a form. Ship something is how they become URLs.