Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

waitlss/waitless

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Waitless Dashboard

⚡ Waitless

Open-source waitlist & launch platform — self-hosted, your own SMTP, zero lock-in.

Go React PostgreSQL Docker License PRs Welcome


Waitless lets you launch beautiful waitlist pages, collect signups, and manage subscribers — all from a single self-hosted binary. No third-party email lock-in, no monthly fees, no limits.

✨ Features

🚀 Launch

  • Public waitlist pages — branded /w/:slug pages, ready to share
  • Embeddable widget — drop a <script> tag into any website
  • Referral system — unique codes for viral growth
  • Coupon engine — reward early adopters

📊 Manage

  • Analytics dashboard — signup trends, growth metrics, charts
  • Subscriber management — search, filter, sort, bulk actions
  • CSV import/export — migrate data in and out freely
  • Multi-project — unlimited waitlists from one install

📧 Email

  • OAuth email — Gmail & Zoho Mail (OAuth2, no app passwords)
  • Any SMTP — Mailgun, SES, SendGrid, Postmark, self-hosted
  • Professional templates — beautiful HTML welcome emails
  • Custom from name — send as your brand

🔐 Platform

  • REST API — full API with key-based auth for integrations
  • Webhooks — real-time event push to your backend
  • Telegram notifications — get alerted on new signups
  • Admin panel — manage users, projects, platform-wide

📸 Screenshots

Analytics Dashboard Subscriber Management Public Waitlist Page

Dashboard Analytics · Subscriber Management · Public Waitlist Page

🚀 Quick Start

Docker (Recommended)

git clone https://github.com/waitlss/waitless
cd waitless
docker compose -f docker/docker-compose.yml up -d

Visit http://localhost:8080 — the first account becomes the admin.

From Source

# Clone
git clone https://github.com/waitlss/waitless && cd waitless

# Configure
cp .env.example .env    # Edit with your database settings

# Build & run (single binary!)
make build
./waitless

Requirements: Go 1.25+, Bun 1.2+, PostgreSQL 16+

Development Mode

make dev-backend     # Terminal 1: Go server with hot reload
make dev-frontend    # Terminal 2: Vite dev server → proxies to :8080

⚙️ Configuration

Environment Variables

Variable Description Default
DATABASE_URL PostgreSQL connection string
PORT Server port 8080
BASE_URL Public URL (for OAuth callbacks) http://localhost:8080
ENCRYPTION_KEY 32-byte key for encrypting tokens at rest auto-generated

Email Providers

Each project configures its own email from the dashboard.

Provider Type Setup
Gmail OAuth2 One-click connect with Google account
Zoho Mail OAuth2 One-click connect (supports .in/.com/.eu)
Mailgun SMTP smtp.mailgun.org:587
SendGrid SMTP smtp.sendgrid.net:587
Amazon SES SMTP email-smtp.{region}.amazonaws.com:587
Postmark SMTP smtp.postmarkapp.com:587
Any SMTP SMTP Your own host & port

OAuth2 Email (Optional)

# Gmail OAuth
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret

# Zoho OAuth
ZOHO_CLIENT_ID=your-zoho-client-id
ZOHO_CLIENT_SECRET=your-zoho-client-secret
ZOHO_DOMAIN=zoho.in   # or zoho.com, zoho.eu

🔌 REST API

All API endpoints use Bearer token or X-API-Key authentication.

# List subscribers
curl -H "X-API-Key: wl_your_key" \
  https://your-domain.com/api/v1/projects/:id/subscribers

# Add subscriber
curl -X POST -H "X-API-Key: wl_your_key" \
  -H "Content-Type: application/json" \
  -d '{"email":"user@example.com","name":"User"}' \
  https://your-domain.com/api/v1/projects/:id/subscribers

📖 Full API docs: docs/rest-api-v1.md · docs/public-api.md

🧩 Embeddable Widget

Drop this into any website to show a waitlist signup form:

<div id="waitless-widget"></div>
<script src="https://your-domain.com/widget.js"
  data-project="your-project-slug">
</script>

🏗️ Architecture

./waitless  (single binary, ~17MB)
├── Go HTTP server (Chi)
│   ├── /api/auth/*         → Auth (register, login, sessions)
│   ├── /api/dashboard/*    → Dashboard API (authenticated)
│   ├── /api/admin/*        → Admin API (role-gated)
│   ├── /api/v1/*           → REST API (API key auth)
│   ├── /api/public/*       → Public waitlist API
│   └── /api/oauth/*        → OAuth2 callbacks (Gmail, Zoho)
└── Embedded React frontend (TanStack Router)
    ├── /                   → Landing page
    ├── /dashboard          → Management UI
    ├── /docs               → API documentation
    └── /w/:slug            → Public waitlist pages

Tech stack: Go · React 19 · TanStack Router · PostgreSQL · GORM · Recharts

🚢 Deploy

VPS / Bare Metal

make build
scp waitless .env user@server:/opt/waitless/

# On server
cd /opt/waitless && ./waitless

Docker

docker compose -f docker/docker-compose.yml up -d

Systemd Service

[Unit]
Description=Waitless
After=postgresql.service

[Service]
WorkingDirectory=/opt/waitless
ExecStart=/opt/waitless/waitless
Restart=always

[Install]
WantedBy=multi-user.target

🤝 Contributing

Contributions welcome! See CONTRIBUTING.md.

  1. Fork the repo
  2. Create a branch (git checkout -b feature/amazing)
  3. Commit & push
  4. Open a Pull Request

📜 License

MIT — see LICENSE


Built with ❤️ for the open-source community

Releases

No releases published

Packages

 
 
 

Contributors

Morty Proxy This is a proxified and sanitized view of the page, visit original site.