Startup apps

Build a Startup Waitlist App with a Coding Agent

See a working startup waitlist built on Userland. Try the live demo, copy the prompt, and launch yours with invite links and a private owner view.

Open live demo

waitlist-demo.apps.userland.fun
Landing page of the Velto demo waitlist with an email signup form and a badge showing a jump from 142nd to 132nd in line

Live demo

Open the demo at waitlist-demo.apps.userland.fun. Join the list, see your place in line, try your invite link, then open the owner view. Only you see the signups you add.

What this app does

  • Collects signups on a launch landing page
  • Gives each person a private page with their place in line
  • Moves people up 10 places for each friend who joins with their invite link
  • Asks optional questions so you know who is waiting
  • Gives you a private owner view with search, filters, and invite or archive buttons
  • Exports the list as a spreadsheet for your email tool
  • Shows your top referrers and recent activity

Who this is for

This app is useful for:

  • Founders validating a product idea
  • Indie makers launching an app
  • Course creators before a launch
  • Community organizers
  • Agencies running launches for clients

App spec

User roles

  • Public visitor
  • Person on the list, through their private link
  • Owner, who signs in with the owner role

Screens

  • Landing page with signup form
  • Private place-in-line page with invite link and optional questions
  • Owner view with totals, filters, top referrers, and recent activity
  • Spreadsheet download of the filtered list

Managed resources

  • Managed data for signups
  • App sign-in with an owner role
  • Activity log entries for signups, status changes, and downloads

Routes / 6

RoutePurpose
/Landing page and signup form
/joinSaves a signup and sends the person to their private page
/r/{invite-code}Short invite link that credits the friend who shared it
/you/{id}/{private-key}Private page with place in line, invite link, and optional questions
/adminOwner view with search, filters, invite and archive buttons
/admin/export.csvSpreadsheet download of the current filter

Data model

Signup

  • id
  • email
  • first name
  • status (waiting, invited, archived)
  • time joined
  • time invited
  • invite code
  • invited by (a friend's invite code)
  • private link key
  • how often they run
  • what they want most
  • city
  • where they came from

Build it with this prompt

Paste this into your coding agent to build your own version, then ask it to change the copy, design, and data for your business.

waitlist-app-prompt.txt
Build and publish a startup waitlist app for my business on Userland.

What I need:
[Describe your launch in your own words: what you're launching, who it's for, when it opens, and what to ask people when they join. For example: "A budgeting app for freelancers, opening in March. Ask what they use today and how many clients they have."]

How to work:
1. Read https://docs.userland.fun/llms.txt first and follow the Userland docs. Don't guess how Userland works.
2. Start from the waitlist example at https://github.com/dwrtz/userland-public/tree/main/examples/waitlist-app. Replace its made-up brand with mine and remove its demo mode.
3. If I haven't filled in "What I need", ask me first. Ask anything else you need before you build, then explain your plan in plain language: the pages, what people see after they join, how invite links move them up, who can see the list, and what information gets saved.
4. Build the app. Only I should see the list: protect it with a sign-in and an owner role. Keep API keys and secrets on the server, never in the browser.
5. Publish with the Userland CLI. If you need to sign in, run userland login and I'll approve it in my browser. Then set me up as the owner so I can sign in and see the list.
6. When it's live, tell me the link, how people join, how I see and download the list, anything that needs a paid plan, and how to undo a release if something breaks. Note the app ID and release ID in the project README so you can publish updates later.

Implementation notes

Pages load as plain HTML from the server. The landing page, private page, and owner view work without JavaScript. One small optional script adds a “Copy link” button.

Signups are saved in Userland managed data. Each person is one row. The public landing page reads only the first 100 signups to show how many people joined (for example “100+”), so it stays quick as the list grows. Email addresses and invite codes are unique, so nobody joins twice and no two people share a link.

Place in line is worked out when the page loads. People keep the order they joined in, then move up 10 places for each friend who joined with their link. Invited and archived people leave the line. Credit for a friend is counted from the friend’s own signup, so two friends joining at the same moment both count, and archiving a fake signup takes its credit away.

The owner view is locked. It checks for a signed-in account with the owner role. Signed-out visitors are sent to sign in, and any other account sees an “owners only” page. Private pages and the owner view are marked so search engines skip them.

Forms are protected against common abuse. Inputs are checked and length-limited, a hidden field catches bots, forms only accept posts from the app’s own pages, everything people type is escaped before it’s shown, and spreadsheet cells are guarded against formulas. Someone who enters an email that’s already on the list gets a plain thank-you page instead of an “already signed up” message. The form doesn’t fully hide who has signed up, though: a new email still goes straight to its private place-in-line page. The README explains how to close that gap by emailing the private link instead.

Every signup leaves a trail. Signups, answer updates, status changes, and downloads are written to the app’s activity log with record numbers only, never names or emails. You can read it in the Userland console or with userland apps events.

The demo runs in demo mode. One file lets demo visitors open the owner view without signing in. Each visitor sees made-up sample signups plus only the ones they added, and their changes stay private to them. Visitor signups are deleted after a day, and the demo has an overall limit so it can’t fill up; if a flood of fake signups reaches that limit, new visitors see a “demo is busy” page until old signups clear. Demo mode only switches on at the demo’s own addresses. A copy published anywhere else runs as a normal waitlist, and the README shows how to remove demo mode entirely.

Variants

You can customize this app into:

  • SaaS waitlist that asks about team size and the tools people use today
  • Product launch list that opens invites in batches on launch day
  • Course prelaunch list that asks about experience level and goals
  • Community waitlist with a short “why do you want to join” question
  • Beta signup that invites testers a few at a time
  • Agency lead capture page that collects project type, budget, and timeline

FAQ

What plan does this app need?

The Free plan. It uses server pages, one owner sign-in role, and saved signups, all within Free limits. Free has usage limits a busy launch can reach. It keeps up to 1,000 signups per app and allows 10,000 requests a month across all your apps, where each page and file counts (a first visit is about six). The place-in-line page and your owner view also slow down as the list grows. If you expect more than about 1,000 signups or a launch that gets shared widely, plan on Starter. Your own domain, a named address like yourbrand.apps.userland.fun, and traffic analytics are also on paid plans; the waitlist works without them.

How do I see who joined?

Your coding agent sets you up as the owner. You get an invite link, choose a password, and sign in at /admin on your app. From there you can search, filter by answer, invite or archive people, and download the list as a spreadsheet.

Can people on the list see each other?

No. Each person gets a private link that shows only their own place in line and invite link. The full list is visible only to accounts with the owner role. In the public demo, each visitor sees made-up sample signups plus only the ones they added.

How do invite links work?

Everyone gets a short link like /r/K7M2QX9. When a friend joins through it, the person who shared it moves up 10 places. You can change the number, or turn referrals off, by asking your agent.

Does it send emails?

Not by itself. It marks people as invited and lets you download the list for the email tool you already use. If you want the app to send invites, your agent can connect an email service and keep its API key on the server.

How do I undo a change?

Every publish creates a new release, and the last good one is a command away. Your agent runs userland apps rollback to put an earlier release back live. Signups and owner accounts stay as they are. Free keeps your last 2 releases; Starter keeps 10.

Build yours.

Paste a prompt into your coding agent and describe how your business works. Your agent builds the app. Userland runs it.