I kept running into the same friction. Team rosters, event invites, training groups, review panels. Lists I use constantly, scattered across notes and Slack and Sheets. Every time I needed a different cut it was a whole thing.
Forms had the same problem. Google Forms works but it's ugly and rigid. Typeform and SurveyMonkey paywall the basics. And every one of them is another surface to manage.
form-form handles both in one index.html, and underneath, this is still Google. Apps Script does the hosting, Sheets stores the data, email triggers just work.
what it does
The form builder is a split-pane editor with live preview. 6 visual themes, customizable fonts, corners, padding, accents. Download exports a zip with a self-contained form.html and a Code.gs ready for Apps Script.
The list side is a roster manager with custom fields. Filter by any field, search, copy values to clipboard. Installable as a PWA, runs standalone, works offline.
why it's one file
The single-file architecture was deliberate. No React, no Tailwind, no build. One file means anyone can fork it, point their AI at it, and reshape it into whatever they need. The code is the customization layer, not a settings menu.
why 'form-form'?
It's a form for making forms. The name sounds a little dumb, which is about right for something that just wraps Google Apps Script and doesn't take itself seriously. Couldn't resist giving it a logo. This one took about sixty seconds: Sora font, letters knocked off their baselines to give it a scrappy vibe, and done.