← Back to blog
webdevjavascripttypescriptproductivity

How I built Verso in one night

Building a premium conversational form builder with Next.js, Tailwind v4, TypeScript, and shadcn/ui in a single night.

Published 2026-04-185 min read

I have a recurring problem with form builders. They either feel dead simple and ugly, or polished and weirdly expensive. I wanted something in the middle, a product that feels premium, moves fast, and does the core job really well. That was the spark for Verso.

The idea was straightforward: build a conversational form builder that looks alive on first load, shows realistic demo data immediately, and makes the pitch obvious within five seconds.

The core insight was that the landing page could not just market the product, it had to be the product. I did not want a fake hero followed by empty boxes. I wanted a hero, a feature grid, and then an actual interactive builder area with preloaded forms and response history.

I used Next.js App Router because it lets me mix a fast static shell with client-side interactions where they matter. The marketing parts stay crisp, while the builder state and selected-form details feel immediate.

Tailwind v4 and shadcn/ui were the right combo for speed. Tailwind let me move fast with a dark-first visual system, and shadcn handled the primitives I did not want to reinvent at 3 AM: buttons, cards, badges, inputs, separators.

const selectedForm = demoForms.find((form) => form.id === activeId) ?? demoForms[0]

One small pattern changed the feel of the app: always show useful data by default. That forced the demo section to feel alive instead of apologetic. No blank dashboard. No cold start. Just momentum.

The seeded demo forms also tell four different stories: internal team feedback, onboarding, waitlist capture, and sponsorship intake. That gives the product flexibility without needing a giant paragraph to explain itself.

What surprised me most was how much polish came from spacing and hierarchy instead of clever code. A strong hero, substantial cards, and a dashboard shell that looks like software did more for the product than any fancy animation would have.

I also gave the blog its own real route structure. That matters. A build-in-public product should feel like a shipped thing, not a landing page with an afterthought attached.

Next, I would add true conditional-logic editing, embeddable themes, and a response inbox for individual submissions. But for one night, this already feels like a product, not a demo.

Try it here: https://verso-forms.limed.tech and tell me what feels great and what still needs to be sharper.