Share and collect submissions
You've built a form and saved it to the database. The results page shows a link to the public form URL — that's the page where people fill it out. Let's use it.
Fill out your own form
Click the public form URL on the results page — it should look like http://localhost:5173/forms/1. You should see your form title and the fields you created, ready to fill out.
Now open it in a different browser or an incognito window. This matters — you want to experience it as someone who doesn't have your browser history or cookies. You're not the creator now, you're the respondent. Type in some test answers and hit submit.

If everything worked, the submission is sitting in your database. Check — open Drizzle Studio and look at the submissions table.

The full round-trip
Follow the data through what just happened:
- You created a form on
/forms/new— it was saved to theformstable - You visited
/forms/1— the server loaded the form from the database and built the page - You filled it out and hit submit — your answers were saved to the
submissionstable - You visit the results URL — the server reads those submissions and shows them to you
Each of those steps maps to a specific part of the route file — a loader that reads data, a component that renders it, and an action that handles submissions. The same pattern you learned two pages ago, now running for real.
Two different people, two different pages, connected through the database. This is what makes it an app, not a website.
Check your submissions

Go back to the results page — the one with the long token in the URL. You should see the submission from the last step — the name, email, and comments you typed in.
Try submitting the public form a few more times with different answers. Refresh the results page. Each submission should appear.
Right token — you see submissions. Wrong token — access denied. That's the capability URL pattern doing its job.