What you built

Two chapters, one app

This isn't a tutorial exercise. It's a working app with a real backend:

  • Tables and validation — A database schema that defines the shape of your data, with Zod schemas that catch bad input before it gets in
  • Models — A clean API for each table: Form.create(), Submission.newest(), Submission.delete()
  • Server actions — Forms that send data to the server, where it's validated, saved, and responded to
  • Dynamic routes — One page template that works for any form ID
  • DataTable — A reusable component for displaying and managing data
  • Capability URLs — The link is the key, no login required
  • A live URL anyone can use

Two different people, two different URLs, one shared database. You went from "my site can't remember anything" to "someone across the internet just sent me data." That's a big jump.


What's next

Your form builder uses a capability URL — the link is the key. That works well for simple sharing. But what if you need to know who someone is, not just whether they have a link? What if you want a dashboard that only you can see, with all your forms in one place?

That's when you need login. And that's what comes next.

Take a break