Skip to content

πŸš€ Build viral waitlists in 60 seconds β€’ Referral tracking β€’ Embeddable widget β€’ MIT license

Notifications You must be signed in to change notification settings

tahseen137/waitlistkit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

25 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ WaitlistKit

Build viral waitlists in 60 seconds with built-in referral tracking

MIT License Deploy with Vercel Next.js TypeScript Prisma

Live Demo β€’ Documentation β€’ Pricing


What is WaitlistKit?

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

Quick Start

Option 1: Use Hosted Version (Easiest)

  1. Go to waitlistkit.ca
  2. Create a waitlist (free tier: 1 waitlist, 100 signups)
  3. Copy the embed code to your website:
<script 
  src="https://waitlistkit.ca/widget.js" 
  data-project="your-project-slug"
  data-waitlistkit
></script>

Option 2: Self-Host (Full Control)

# 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

Tech Stack

Component Technology
Framework Next.js 16 (App Router)
Language TypeScript 5
Database Prisma + PostgreSQL
Styling Tailwind CSS
Payments Stripe
Email Resend
Hosting Vercel

Environment Variables

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"

Project Structure

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

API Reference

Sign Up to Waitlist

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 Project Details

GET /api/project/{slug}

Admin: Get All Signups

GET /api/admin/{projectId}
Headers: x-admin-secret: your-admin-secret

Admin: Export CSV

GET /api/admin/{projectId}/export
Headers: x-admin-secret: your-admin-secret

Deployment

Deploy to Vercel (Recommended)

  1. Fork this repository
  2. Connect to Vercel
  3. Add environment variables
  4. Deploy!

Deploy with Vercel

Database Options


Pricing (Hosted Version)

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.


Contributing

Contributions are welcome! Please read our contributing guidelines before submitting a PR.

# Run tests
npm test

# Lint
npm run lint

# Build
npm run build

License

MIT License β€” do whatever you want with this code.


Support


Built with ❀️ for indie hackers and founders who ship fast

About

πŸš€ Build viral waitlists in 60 seconds β€’ Referral tracking β€’ Embeddable widget β€’ MIT license

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published