Skip to Content
TutorialsVibe Coder Series3. Build Your Pages

3. Build Your Pages

Your data is ready. Now run the next batch of tasks from your spec — Tasks 4 through 13 — and watch the API, auth, and every page of your app come to life.

By the end you’ll have:

  • A public events page at /events showing upcoming events
  • An event detail page at /events/[id] with an RSVP form
  • An organizer admin at /organizer/events for creating, editing, and deleting events
  • An app you can sign into and click around in your browser

The dashboard waits for Tutorial 5.

Time: About 20 minutes.

Prerequisites

  • Completed 2. Describe Your Data
  • You stopped at Checkpoint 3 — collections and hooks exist on your backend

Run Tasks 4–6 — API Plumbing

Open .kiro/specs/event-manager/tasks.md. Click Run task above Task 4, wait for it to complete, then Task 5, then Task 6. (Or use Run all tasks above the group if you’d rather batch.)

These three tasks build the API layer — the bridge between your pages and your backend:

  • Task 4 — TypeScript types and pure validation utilities you can reuse anywhere
  • Task 5 — API proxy routes for events (read/create/update/delete)
  • Task 6 — API proxy routes for rsvps and the dashboard aggregate query

Nothing visual yet — this is the wiring behind the walls.

Run Task 7 — Auth

Click Run task above Task 7.

Your AI adds login, logout, session check, and a guard that protects organizer-only pages by redirecting signed-out visitors to /login.

Reach Checkpoint 8

Click Run task above Task 8. Kiro verifies that every API route compiles and the auth middleware redirects correctly. Pause here.

Run Tasks 9–11 — The Public Face of Your App

Click Run task above Task 9, then Task 10, then Task 11.

  • Task 9/login page with email + password
  • Task 10/events listing of upcoming, published events
  • Task 11/events/[id] event detail page with the RSVP form below; the form is disabled when the event is full

Run Tasks 12–13 — Organizer Admin

Click Run task above Task 12, then Task 13.

  • Task 12/organizer/events table where you create, search, sort, and delete events
  • Task 13/organizer/events/+ create form and /organizer/events/[id] edit form

These pages use Buildpad’s pre-built UI components (CollectionList, CollectionForm) — they read your collection’s field shapes and render the right inputs automatically.

Start Your App

Now there’s something to look at. Open the Terminal tab at the bottom of Kiro and run:

pnpm install && pnpm dev

Press Enter. After a few seconds you’ll see:

▲ Next.js ready on http://localhost:3000

Open http://localhost:3000/login  and sign in with the same email and password you used to create your Buildpad account.

The app shell with header, sidebar, and empty main content area

Add a Test Event

Your /events page will be empty until you have something to display. In DaaS Studio, click events → + Create Item and fill in:

  • Title: Company Summer Picnic
  • Description: Annual team picnic in the park. Food and games provided.
  • Date: Pick a date a few weeks from now
  • Location: Central Park, Lawn 3
  • Max Attendees: 50

Click Save.

DaaS Studio item editor with the sample event filled in

Walk Through Your App

  1. Visit http://localhost:3000/events  — you should see your test event as a card.

    Events page showing published events as cards with title, date, location, and a View Details button

  2. Click into the event. Submit an RSVP with a test name and email — you’ll see a confirmation.

    Event detail page with description, date info, and RSVP form below

  3. Sign in and visit http://localhost:3000/organizer/events . Your event is in the table; try the New Event button or click a row to edit.

    Admin events table with title, status, date columns and New Event button

If anything looks off, describe it to your AI in plain English and ask for a fix — your spec is still the source of truth.

What Just Happened?

You ran ten tasks. Your app went from a database with no UI to a working full-stack experience:

PageComponent usedWhat it does
/eventsServer-rendered cardsLists upcoming, published events
/events/[id]Server-rendered + RsvpForm client componentShows event details and accepts RSVPs
/organizer/eventsCollectionListSearch, sort, create, delete events
/organizer/events/+ and /organizer/events/[id]CollectionFormCreate and edit events

These components connect directly to your DaaS backend — no manual API wiring needed in the browser.

Peek under the hood (optional)

CollectionList and CollectionForm are Buildpad’s high-level UI components. They read your collection’s field metadata from the backend and automatically render the correct input type for each field — a date picker for dates, a number input for max_attendees, etc.

When your AI installed these components, it ran:

npx @buildpad/cli@latest add collection-list collection-form

This copies the component source code directly into your project under src/components/buildpad/. You own the code — you (or your AI) can customise it at any time.

What’s Next

Your spec still has Task 14 (the dashboard) and Tasks 16–18 (tests) waiting. Before the dashboard, you’ll add roles so attendees and organizers see different things.

Continue to 4. Control Who Can Do What →

Last updated on