Build viral waitlists in 60 seconds with built-in referral tracking
Live Demo β’ Documentation β’ Pricing
WaitlistKit is an open-source viral waitlist builder that helps founders launch faster and grow organically. Add a beautiful email capture widget to any website with a single script tagβno backend required.
Key Features:
- π Viral Referrals β Each user gets a unique referral link that moves them up when friends join
- β‘ 60-Second Setup β One script tag, zero configuration
- π Admin Dashboard β View signups, track referrals, export to CSV
- π¨ Customizable β Match your brand colors, logo, and copy
- π§ Drip Emails β Automated welcome sequence via Resend
- π³ Monetizable β Built-in Stripe integration for paid tiers
- Go to waitlistkit.ca
- Create a waitlist (free tier: 1 waitlist, 100 signups)
- Copy the embed code to your website:
<script
src="https://waitlistkit.ca/widget.js"
data-project="your-project-slug"
data-waitlistkit
></script># Clone the repository
git clone https://github.com/tahseen137/waitlistkit.git
cd waitlistkit
# Install dependencies
npm install
# Set up environment
cp .env.example .env
# Edit .env with your database URL
# Run database migrations
npx prisma migrate dev
# Start development server
npm run dev| Component | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| Language | TypeScript 5 |
| Database | Prisma + PostgreSQL |
| Styling | Tailwind CSS |
| Payments | Stripe |
| Resend | |
| Hosting | Vercel |
Create a .env file:
# Database (required)
DATABASE_URL="postgresql://user:password@host:5432/database"
# For local development, use SQLite:
# DATABASE_URL="file:./dev.db"
# Stripe (optional - for paid plans)
STRIPE_SECRET_KEY="sk_..."
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY="pk_..."
STRIPE_WEBHOOK_SECRET="whsec_..."
# Resend (optional - for emails)
RESEND_API_KEY="re_..."
# App URL
NEXT_PUBLIC_BASE_URL="https://your-domain.com"waitlistkit/
βββ app/
β βββ api/ # API routes
β β βββ signup/ # Waitlist signup endpoint
β β βββ project/ # Project CRUD
β β βββ admin/ # Admin endpoints
β βββ admin/[projectId]/ # Admin dashboard
β βββ demo/ # Interactive demo
β βββ w/[slug]/ # Public waitlist pages
βββ lib/
β βββ prisma.ts # Database client
β βββ email-service.ts # Drip email logic
β βββ rate-limit.ts # Rate limiting
β βββ stripe.ts # Stripe client
βββ prisma/
β βββ schema.prisma # Database schema
βββ public/
βββ widget.js # Embeddable widget
POST /api/signup
Content-Type: application/json
{
"email": "user@example.com",
"projectId": "clx1234567890",
"referredBy": "abc123" # optional referral code
}Response:
{
"signup": {
"id": "...",
"email": "user@example.com",
"position": 42,
"referralCode": "xyz789"
}
}GET /api/project/{slug}GET /api/admin/{projectId}
Headers: x-admin-secret: your-admin-secretGET /api/admin/{projectId}/export
Headers: x-admin-secret: your-admin-secret- Fork this repository
- Connect to Vercel
- Add environment variables
- Deploy!
- Vercel Postgres β Easiest with Vercel
- Supabase β Generous free tier
- Neon β Serverless Postgres
| Plan | Price | Features |
|---|---|---|
| Free | $0 | 1 waitlist, 100 signups |
| Starter | $19/mo | 3 waitlists, 1K signups |
| Pro | $49/mo | Unlimited everything |
| Lifetime | $149 once | Pro features forever |
Self-hosted = free forever with MIT license.
Contributions are welcome! Please read our contributing guidelines before submitting a PR.
# Run tests
npm test
# Lint
npm run lint
# Build
npm run buildMIT License β do whatever you want with this code.
- π Report a bug
- π¬ Discussions
- π§ Email
Built with β€οΈ for indie hackers and founders who ship fast