Template details
Waitly
Open-source Next.js 16 waitlist template that stores signups in Notion, rate-limits with Upstash Redis, and emails via Resend.
About this template
Waitly is an open-source waitlist page template for Next.js 16 that stores signups in a Notion database, rate-limits submissions with Upstash Redis, and sends confirmation emails through Resend from a verified custom domain. It ships with a one-click Vercel deploy button and an MIT license.
What is the Waitly template?
Waitly is a product waitlist template built on Next.js 16 that collects email signups into a Notion database, throttles submissions with Upstash Redis, and sends transactional confirmation emails via Resend. The template takes five environment variables as input — a Upstash Redis REST URL and token, a Notion integration secret plus database ID, and a Resend API key with a verified sending address — and produces a deployed waitlist page plus a Notion table of signups. It is published by revokslab (the Idee8/Waitly GitHub repository) under the MIT License, with a live demo at waitly.revoks.dev.
What makes Waitly stand out?
- Next.js 16 frontend — The template is built on Next.js 16 with React components and TypeScript for type safety across the codebase.
- Notion as CMS — Signups are written to a Notion "Waitlist Users" database with Name (Title), Email (Email), Referral Code (Text), Referred By (Text), Referrer (Relation to the same database), and an optional Signed Up At (Created time) property.
- Upstash Redis rate limiting — Serverless Redis accessed through its REST API caps repeated signup attempts; the template needs the REST endpoint URL and a token with write access.
- Resend transactional email — Confirmation emails go out through Resend using a domain you verify, with a sending address in
RESEND_FROM_EMAILand an optionalRESEND_REPLY_TO_EMAIL. - One-click Vercel deploy — A deploy button pre-fills the five required environment variables, the project name, and the repository name for a fork-free deployment.
- Tailwind CSS styling — The UI is built with Tailwind CSS utility classes plus React components.
- Local email preview — Running
pnpm emailstarts a Resend template preview server on port 3001 alongside the app on port 3000. - Referral tracking fields — The Referral Code, Referred By, and Referrer relation columns support referral-based signup tracking in the Notion database.
Who should use Waitly?
- Solo founders and indie developers: launch a coming-soon signup page for a product before the app itself exists, with entries landing in a Notion database they already use.
- Small product teams: collect and share early-access signups in Notion, leaning on its collaboration features so marketing and product see the same list.
- Developers with a verified domain in Resend: send branded confirmation emails from an address on their own domain instead of a generic sender.
- Frontend developers learning the stack: use the repository as a working reference for wiring Next.js 16, the Notion API, Upstash Redis rate limiting, and Resend together.
What can you do with Waitly?
- Launch a pre-release waitlist: deploy the template to Vercel, point it at a Notion database, and start collecting emails while the product is still in development.
- Track referrals: capture a referral code and referrer relation per signup so you can see who invited whom.
- Send branded confirmations: verify a domain in Resend and use a custom from-address to confirm each signup automatically.
- Stop signup spam: apply the Upstash Redis rate limiter to block repeat submissions from the same source.
How does Waitly work?
Setting up Waitly means connecting three external services before the page will run. First you create a Redis database in Upstash and copy its REST URL and token, then verify a domain in Resend and generate an API key, then create a Notion database with the required properties and share it with a Notion integration that has insert capability. After cloning the repository, installing dependencies with pnpm install, and filling in the five variables in .env.local, pnpm dev serves the app at localhost:3000.
Pricing
Waitly is free and open-source under the MIT License, which permits use, modification, and distribution for personal or commercial projects. The external services it depends on — Upstash Redis, Resend, and Notion — are set up on those providers' own accounts.
FAQ
Is Waitly free?
Yes. The template is released under the MIT License, so you can use, modify, and distribute it for personal or commercial projects. You still need your own Upstash, Resend, and Notion accounts for the services the template calls.
What do I need before running Waitly?
You need an Upstash Redis database with its REST URL and token, a Resend account with a verified domain and API key, and a Notion database containing Name, Email, Referral Code, Referred By, and Referrer properties, shared with a Notion integration that has insert capability.
Which Next.js version does Waitly use?
The repository's feature list states Next.js 16, described as the latest release of the framework. The template also uses TypeScript for type safety and Tailwind CSS for styling.
Where is my waitlist data stored?
Signups are stored in your own Notion database rather than an external waitlist service. The template reads and writes through the Notion API using your integration secret and database ID, so the data stays inside your Notion workspace.
Do I have to deploy to Vercel?
No. A one-click Vercel deploy button is provided for convenience, but you can also fork and clone the repository, run it locally with pnpm dev on port 3000, and host it wherever Next.js runs.











