Next.jsReactSaaS启动器

Waitlist-For-Saas — Next.js SaaS模板

作者 shubh-io

Waitlist-For-Saas 是一个基于 Next.js 的 SaaS 等待名单模板,使用 Supabase 存储邮箱、Upstash Redis 做限流,README 提供建表 SQL 与本地运行步骤。

看看你的网站会是什么样

浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。

2 个预览视图
桌面端首页1 / 2
桌面端截图首屏预览

由服务器浏览器实际访问页面后截取。

全部页面与视图 2

截图用于了解视觉与布局,交互效果请以实际项目为准。

采集于 2026-10-14查看来源

值得关注的模板亮点

从已有项目资料中,快速了解它的特点。

01

邮箱订阅表单将数据写入 Supabase 的 "Email collection" 表

02

表结构含自增 id、唯一 email 与 created_at 字段,并建立 email 索引

03

启用行级安全策略,允许匿名角色插入和查询该表

04

通过 Upstash Redis 实现限流,需配置 REST URL 与 Token

05

README 提供 Supabase SQL Editor 建表 SQL 和 setup-database.js 脚本两种初始化方式

模板详细介绍

该模板用于搭建 SaaS 产品的等待名单页面,核心是一个邮箱订阅表单。数据写入 Supabase 的 "Email collection" 表,表结构包含自增 id、唯一 email 和 created_at 字段,并启用行级安全策略,允许匿名角色插入和查询。README 还提到使用 Upstash Redis 做限流,需要在环境变量中配置对应的 REST URL 与 Token。

首次使用前必须先创建数据库表:推荐在 Supabase SQL Editor 中执行 README 给出的 SQL;如果持有 service role key,也可以把它加入 .env.local 后运行 node setup-database.js 完成建表。之后执行 yarn install、yarn dev,访问 http://localhost:3000 即可测试订阅表单。README 未说明部署流程、页面视觉结构、表单校验细节或除邮箱订阅外的其他功能。

Next.jsSaaS启动器

适合你的项目吗?

适用场景

  • 为尚未上线的 SaaS 产品收集潜在用户邮箱
  • 在本地按 README 步骤运行并测试订阅表单的写入流程
  • 在 Supabase 中查看已收集的等待名单邮箱记录

适合人群

  • 需要快速搭建 SaaS 等待名单页面的开发者
  • 已使用或愿意注册 Supabase 与 Upstash Redis 的团队
  • 希望用 Next.js 项目承载邮箱订阅表单的开发者

上手与定制指南

结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。

  1. 1

    先在 Supabase SQL Editor 执行 README 提供的建表 SQL,或在 .env.local 中加入 SUPABASE_SERVICE_ROLE_KEY 后运行 node setup-database.js

  2. 2

    在 .env.local 配置 NEXT_PUBLIC_SUPABASE_URL、NEXT_PUBLIC_SUPABASE_ANON_KEY、UPSTASH_REDIS_REST_URL、UPSTASH_REDIS_REST_TOKEN

  3. 3

    依次运行 yarn install 和 yarn dev,然后访问 http://localhost:3000 测试订阅表单

  4. 4

    若出现 "Could not find the table" 或 "Database not set up",说明表未创建,需按 README 的 Option 1 执行 SQL

  5. 5

    若出现限流相关错误,检查 .env.local 中的 Redis 凭据

查看仓库使用说明

授权与来源资料

使用条件与限制

免费使用 · 保留许可声明

本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。

使用时需要遵守

  • 允许免费使用、修改、商用和分发该版本代码。
  • 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
  • 代码按现状提供;担保与责任限制以原许可证及适用法律为准。

额外费用与待核对事项

  • 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
  • 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
  • 使用前必须在 Supabase 中创建数据库表,否则应用无法正常工作。
  • 若采用脚本方式初始化数据库,需要在 .env.local 中配置 SUPABASE_SERVICE_ROLE_KEY。
  • 必须配置 Supabase 项目 URL 环境变量。
  • 必须配置 Supabase 匿名密钥环境变量。
  • 必须配置 Upstash Redis REST URL 环境变量,用于限流。
  • 必须配置 Upstash Redis REST Token 环境变量,用于限流。
查看原文依据

Permission is hereby granted, free of charge

许可证原文

Before using this app, you NEED to create the database table in Supabase:

README 原文

1. Add `SUPABASE_SERVICE_ROLE_KEY` to your `.env.local`

README 原文

NEXT_PUBLIC_SUPABASE_URL=your_supabase_url

README 原文

NEXT_PUBLIC_SUPABASE_ANON_KEY=your_anon_key

README 原文

UPSTASH_REDIS_REST_URL=your_redis_url

README 原文

UPSTASH_REDIS_REST_TOKEN=your_redis_token

README 原文
https://github.com/shubh-io/Waitlist-For-Saas/blob/master/LICENSEhttps://github.com/shubh-io/Waitlist-For-Saas/blob/master/README.md

DeepSeek 根据仓库许可证和 README 整理 ·2026-10-14。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。

项目核对记录与介绍依据

模板资料

来源平台
GitHub
资料与维护参考分
资料较完整 · 88 / 100
技术栈
Next.js · React
网站类型
SaaS · 启动器
这个分数如何计算

本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。

这个项目需要核对什么

记录的仓库更新时间
2025-11-29
截图检查日期
2026-10-14

已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。

目录记录的主要技术栈是 Next.js。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。

查看具体选型方法 →

介绍的制作与核对状态

介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。

审核声明: codex-user-requested-batch-review-20261015 · 2026-10-15

查看当时使用的来源资料

SHA-256: a458e67dd5e0e4a331d9389559ea0c19fb5aa98467c9994fc1e360e84c754f39

2026-10-14T11:41:55.337Z

来源文件 / 仓库
# Quick Setup Guide

## First Time Setup

Before using this app, you NEED to create the database table in Supabase:

### Option 1: Using Supabase Dashboard (Recommended - 1 minute)

1. Go to [Supabase SQL Editor](https://supabase.com/dashboard/project/_/sql)
2. Paste the SQL below and click "Run"
3. And you're DONE!

```sql
CREATE TABLE IF NOT EXISTS "Email collection" (
  id BIGSERIAL PRIMARY KEY,
  email TEXT UNIQUE NOT NULL,
  created_at TIMESTAMPTZ DEFAULT NOW()
);

CREATE INDEX IF NOT EXISTS idx_email_collection_email ON "Email collection"(email);

ALTER TABLE "Email collection" ENABLE ROW LEVEL SECURITY;

CREATE POLICY "Allow public insert" ON "Email collection"
  FOR INSERT TO anon WITH CHECK (true);

CREATE POLICY "Allow public select" ON "Email collection"
  FOR SELECT TO anon USING (true);

GRANT INSERT, SELECT ON "Email collection" TO anon;
GRANT USAGE, SELECT ON SEQUENCE "Email collection_id_seq" TO anon;
```

### Option 2: Using Setup Script (If you have service role key)

1. Add `SUPABASE_SERVICE_ROLE_KEY` to your `.env.local`
2. Run: `node setup-database.js`
3. Done

---

## Environment Variables Required

Make sure your `.env.local` has:

```bash
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_anon_key
UPSTASH_REDIS_REST_URL=your_redis_url
UPSTASH_REDIS_REST_TOKEN=your_redis_token
```

---

## After Setup

1. Run `yarn install`
2. Run `yarn dev`
3. Visit `http://localhost:3000`
4. Test the email subscription form!!

---

## Troubleshooting

**Error: "Could not find the table"**
- Run the SQL above in your Supabase SQL Editor

**Error: "Database not set up"**
- The table doesn't exist. Follow Option 1 above.

**Rate limiting errors**
- Check your Redis credentials in `.env.local`

Enjoyyy!
反馈内容错误

看看同类模板

对比同技术栈与用途的模板,找到更适合的视觉与内容结构。