Engineering
Building a form product from scratch
A form builder is a small product with a full stack hiding inside it.
Simple Form is a Typeform-style builder I owned end to end: create a form, define dynamic fields, validate input, collect responses, export, embed, and watch analytics.
That list is one system. The builder UI, the public form, the API, and the database all share a schema for “what a field is.”
The schema is the product
If the field model is sloppy, every later feature fights it. Types, required flags, and options have to survive a save, a public submit, and an analytics query.
Validation lives in two places
The browser gives fast feedback. The API is the source of truth. I treated them as the same rules, not two opinions that drift.
Analytics is just another read path
Counts and charts are queries over submissions. If you design the write path without the read path, you rebuild the table later.
This is product engineering: a focused app, taken from idea to a deployed box with Docker, Caddy, PM2, and Postgres.