Notion is a versatile tool renowned for its content management capabilities and user-friendly interface. This template demonstrates how to leverage Notion as a lightweight, free, and effective Content Management System (CMS) for your waitlist.
Key Advantages:
Before you can run this project, you'll need to configure a few external services:
Upstash provides serverless Redis. This template uses it for rate limiting signups.
REST API -> Endpoint
(this is your UPSTASH_REDIS_REST_URL
) and REST API -> Read-only Token
or a custom token with write access (this is your UPSTASH_REDIS_REST_TOKEN
). Ensure the token has write permissions if you're using it for operations that modify data.Resend is used for sending transactional emails (e.g., signup confirmations).
yourdomain.com
).RESEND_API_KEY
.waitlist@yourdomain.com
). This will be your RESEND_FROM_EMAIL
.Your waitlist data will be stored in a Notion database.
Name
(Property type: Title
) - This is usually the default first column.Email
(Property type: Email
)Signed Up At
(Property type: Created time
) - For tracking when users signed up.NOTION_SECRET
.•••
(More) menu in the top-right corner.https://www.notion.so/{YOUR_WORKSPACE_NAME}/{DATABASE_ID}?v={...}
{DATABASE_ID}
is the string of characters (usually 32 alphanumeric characters) that forms the path segment after your workspace name (or www.notion.so/
) and before the ?v=...
. Copy this ID. This is your NOTION_DB
.To run this project on your local machine:
Fork and Clone the Repository: First, fork this repository to your own GitHub account. Then, clone your fork:
git clone https://github.com/YOUR_USERNAME/Waitly.git# Replace YOUR_USERNAME with your GitHub username and Waitly with your forked repo name if differentcd Waitly # Or your forked repo name
Install Dependencies:
This project uses pnpm
as the package manager in the example commands. You can use npm
, yarn
, or bun
if you prefer, by adjusting the commands accordingly.
pnpm install
Set Up Environment Variables:
Create a .env.local
file in the root of your project. You can copy .env.example
and fill in the values you obtained from the prerequisite steps:
# Upstash RedisUPSTASH_REDIS_REST_URL=your_upstash_redis_rest_urlUPSTASH_REDIS_REST_TOKEN=your_upstash_redis_rest_token# NotionNOTION_SECRET=your_notion_secret_keyNOTION_DB=your_notion_database_id# ResendRESEND_API_KEY=your_resend_api_keyRESEND_FROM_EMAIL=you@yourdomain.com # Email address to send from (must be verified in Resend)# RESEND_REPLY_TO_EMAIL=reply@yourdomain.com # Optional: Email address for replies
Run the Development Server:
pnpm dev
Your application should now be running on http://localhost:3000
.
Run the Email Preview Server (Optional): If you're working on email templates, Resend allows local previewing of emails.
pnpm email
This typically starts a server on http://localhost:3001
(or as configured in package.json
).
This template is open-source and available under the MIT License. You are free to use, modify, and distribute it for personal or commercial projects.
Encountered a bug, have a feature request, or need clarification? Please open an issue on the original repository.
For general questions or discussions, you can reach out to Idee8 Agency on X (formerly Twitter).
Contributions are welcome! Please feel free to fork the repository, make your changes, and submit a pull request.
Launch a product waitlist fast using Next.js 15, Notion CMS, Upstash Redis, and Resend for email.
Notion is a versatile tool renowned for its content management capabilities and user-friendly interface. This template demonstrates how to leverage Notion as a lightweight, free, and effective Content Management System (CMS) for your waitlist.
Key Advantages:
Before you can run this project, you'll need to configure a few external services:
Upstash provides serverless Redis. This template uses it for rate limiting signups.
REST API -> Endpoint
(this is your UPSTASH_REDIS_REST_URL
) and REST API -> Read-only Token
or a custom token with write access (this is your UPSTASH_REDIS_REST_TOKEN
). Ensure the token has write permissions if you're using it for operations that modify data.Resend is used for sending transactional emails (e.g., signup confirmations).
yourdomain.com
).RESEND_API_KEY
.waitlist@yourdomain.com
). This will be your RESEND_FROM_EMAIL
.Your waitlist data will be stored in a Notion database.
Name
(Property type: Title
) - This is usually the default first column.Email
(Property type: Email
)Signed Up At
(Property type: Created time
) - For tracking when users signed up.NOTION_SECRET
.•••
(More) menu in the top-right corner.https://www.notion.so/{YOUR_WORKSPACE_NAME}/{DATABASE_ID}?v={...}
{DATABASE_ID}
is the string of characters (usually 32 alphanumeric characters) that forms the path segment after your workspace name (or www.notion.so/
) and before the ?v=...
. Copy this ID. This is your NOTION_DB
.To run this project on your local machine:
Fork and Clone the Repository: First, fork this repository to your own GitHub account. Then, clone your fork:
git clone https://github.com/YOUR_USERNAME/Waitly.git# Replace YOUR_USERNAME with your GitHub username and Waitly with your forked repo name if differentcd Waitly # Or your forked repo name
Install Dependencies:
This project uses pnpm
as the package manager in the example commands. You can use npm
, yarn
, or bun
if you prefer, by adjusting the commands accordingly.
pnpm install
Set Up Environment Variables:
Create a .env.local
file in the root of your project. You can copy .env.example
and fill in the values you obtained from the prerequisite steps:
# Upstash RedisUPSTASH_REDIS_REST_URL=your_upstash_redis_rest_urlUPSTASH_REDIS_REST_TOKEN=your_upstash_redis_rest_token# NotionNOTION_SECRET=your_notion_secret_keyNOTION_DB=your_notion_database_id# ResendRESEND_API_KEY=your_resend_api_keyRESEND_FROM_EMAIL=you@yourdomain.com # Email address to send from (must be verified in Resend)# RESEND_REPLY_TO_EMAIL=reply@yourdomain.com # Optional: Email address for replies
Run the Development Server:
pnpm dev
Your application should now be running on http://localhost:3000
.
Run the Email Preview Server (Optional): If you're working on email templates, Resend allows local previewing of emails.
pnpm email
This typically starts a server on http://localhost:3001
(or as configured in package.json
).
This template is open-source and available under the MIT License. You are free to use, modify, and distribute it for personal or commercial projects.
Encountered a bug, have a feature request, or need clarification? Please open an issue on the original repository.
For general questions or discussions, you can reach out to Idee8 Agency on X (formerly Twitter).
Contributions are welcome! Please feel free to fork the repository, make your changes, and submit a pull request.