[PR #3400] [CLOSED] feat(plugin): Add comprehensive waitlist plugin for Better Auth #4803

Closed
opened 2026-03-13 12:00:22 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/better-auth/better-auth/pull/3400
Author: @haxurn
Created: 7/16/2025
Status: Closed

Base: mainHead: feat/waitlist-plugin


📝 Commits (10+)

  • 654188d refactor: reorganize imports in page.tsx for better structure and readability
  • 2a99c1e feat(sidebar): add "Waitlist" link with icon to sidebar content
  • cfa24e5 feat(waitlist): add comprehensive waitlist management plugin documentation
  • 99deca0 feat(waitlist): implement comprehensive waitlist management plugin
  • bc1e23e refactor: reorganize and update plugin exports in index.ts
  • a492674 feat(waitlist): add waitlist plugin to build configuration and package exports
  • 8d4f91f not required file
  • c07e01f fix(sidebar): update "Waitlist" icon for improved SVG structure
  • 9f15756 refactor(waitlist): improve code formatting and readability in client.ts
  • e2f38c7 Merge branch 'main' of github.com:haxurn/better-auth into feat/waitlist-plugin

📊 Changes

14 files changed (+3858 additions, -35 deletions)

View changed files

📝 docs/app/docs/[[...slug]]/page.tsx (+18 -19)
📝 docs/components/sidebar-content.tsx (+18 -0)
docs/content/docs/plugins/waitlist.mdx (+853 -0)
📝 packages/better-auth/build.config.ts (+2 -0)
📝 packages/better-auth/package.json (+13 -0)
📝 packages/better-auth/src/plugins/index.ts (+17 -16)
packages/better-auth/src/plugins/waitlist/client.ts (+424 -0)
packages/better-auth/src/plugins/waitlist/endpoints.ts (+505 -0)
packages/better-auth/src/plugins/waitlist/error-code.ts (+11 -0)
packages/better-auth/src/plugins/waitlist/index.ts (+580 -0)
packages/better-auth/src/plugins/waitlist/schema.ts (+255 -0)
packages/better-auth/src/plugins/waitlist/types.ts (+350 -0)
packages/better-auth/src/plugins/waitlist/utils.ts (+404 -0)
packages/better-auth/src/plugins/waitlist/waitlist.test.ts (+408 -0)

📄 Description

🚀 Overview

This PR introduces a complete waitlist management system for Better Auth, providing a robust solution for managing user queues with advanced features including priority handling, analytics, referral systems, and administrative controls.

Key Features

Core Functionality

  • Intelligent Queue Management - Automatic position tracking with smart rebalancing
  • Multi-level Priority System - Four priority levels: low, normal, high, urgent
  • User-friendly API - Simple join/leave/status endpoints for seamless integration
  • Flexible Configuration - Extensive customization options for different use cases

Advanced Features

  • 📊 Comprehensive Analytics - Track signups, conversions, wait times, and performance metrics
  • 👥 Admin Operations - Bulk approve/reject, export data, and advanced filtering capabilities
  • 🎯 Referral System - Reward users for referring others with priority boosts
  • 📋 Campaign Support - Separate waitlists for different campaigns or products
  • 🧹 Auto-cleanup - Automatically remove expired entries based on configurable rules
  • 🔧 Event Hooks - Extensive webhook system for custom integrations

Developer Experience

  • TypeScript First - Full type safety with comprehensive interfaces
  • Database Agnostic - Works with all Better Auth supported databases
  • Test Coverage - Comprehensive test suite ensuring reliability
  • Rich Documentation - Complete MDX docs with examples and configuration guides

📋 What's Included

Plugin Files

  • packages/better-auth/src/plugins/waitlist/index.ts - Main plugin entry point
  • packages/better-auth/src/plugins/waitlist/types.ts - TypeScript interfaces and types
  • packages/better-auth/src/plugins/waitlist/endpoints.ts - API endpoint definitions
  • packages/better-auth/src/plugins/waitlist/client.ts - Client-side methods
  • packages/better-auth/src/plugins/waitlist/schema.ts - Database schema definitions
  • packages/better-auth/src/plugins/waitlist/utils.ts - Utility functions
  • packages/better-auth/src/plugins/waitlist/waitlist.test.ts - Comprehensive tests

Documentation

  • docs/content/docs/plugins/waitlist.mdx - Complete plugin documentation
  • Examples for all features and configuration options
  • Advanced use cases and integration patterns

🛠 API Endpoints

User Endpoints

  • POST /waitlist/join - Join the waitlist with priority calculation
  • GET /waitlist/status - Check current position and status
  • POST /waitlist/leave - Leave the waitlist

Admin Endpoints

  • GET /waitlist - List all entries with filtering and pagination
  • POST /waitlist/bulk-update - Bulk approve/reject/update operations
  • GET /waitlist/analytics - Comprehensive analytics and insights
  • GET /waitlist/export - Export data in CSV/JSON formats
  • POST /waitlist/cleanup - Clean up expired entries

🔧 Configuration Options

waitlist({
  maxCapacity: 1000,
  allowMultipleEntries: false,
  enableAutoCleanup: true,
  analytics: { enabled: true, trackSources: true },
  referral: { enabled: true, rewardType: "skip_positions" },
  campaigns: { enabled: true },
  onUserJoined: async ({ entry, position }) => { /* custom logic */ },
  onUserApproved: async ({ entry }) => { /* custom logic */ },
  calculatePriority: async ({ email, metadata }) => { /* custom logic */ }
})

📊 Database Schema

Core Tables

  • waitlist - Main entries table with position tracking
  • waitlist_campaigns - Campaign management (optional)
  • waitlist_analytics - Analytics data (optional)

🧪 Testing

  • Comprehensive test suite covering all functionality
  • Database integration tests with proper migrations
  • Client method validation
  • Edge case handling (capacity limits, duplicate entries, etc.)

📚 Documentation

  • Complete MDX documentation following Better Auth standards
  • Installation and setup guides
  • Configuration examples for all features
  • Advanced use cases and integration patterns
  • Full API reference with TypeScript interfaces
  • Event hooks with real-world examples

🎯 Use Cases

Perfect for:

  • Product launches and beta programs
  • Feature rollouts with controlled access
  • Early access programs with referral systems
  • Multi-product waitlists with campaign tracking
  • Geographic or demographic-based prioritization

🚀 Migration Guide

  1. Add the plugin to your Better Auth configuration
  2. Run database migrations: npx @better-auth/cli migrate
  3. Add client plugin to your auth client
  4. Start using the waitlist endpoints

📖 Breaking Changes

None - this is a new feature addition that doesn't affect existing functionality.

🔄 Compatibility

  • All Better Auth supported databases
  • All Better Auth client adapters
  • TypeScript 4.9+
  • Node.js 16+

This waitlist plugin provides a production-ready solution for managing user queues with enterprise-grade features while maintaining the simplicity and developer experience that Better Auth is known for.


Summary by cubic

Added a comprehensive waitlist plugin to Better Auth, enabling advanced queue management, multi-level priority, analytics, referral systems, and admin controls.

  • New Features

    • Intelligent queue with automatic position tracking and priority levels.
    • User and admin API endpoints for joining, status checks, bulk operations, analytics, and exports.
    • Referral rewards, campaign support, auto-cleanup, and event hooks.
    • Full TypeScript support, database-agnostic design, tests, and detailed documentation.
  • Dependencies

    • Updated build configuration and package exports to include the waitlist plugin.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/better-auth/better-auth/pull/3400 **Author:** [@haxurn](https://github.com/haxurn) **Created:** 7/16/2025 **Status:** ❌ Closed **Base:** `main` ← **Head:** `feat/waitlist-plugin` --- ### 📝 Commits (10+) - [`654188d`](https://github.com/better-auth/better-auth/commit/654188dd1869df3bb118bc1703b57017766ae2de) refactor: reorganize imports in page.tsx for better structure and readability - [`2a99c1e`](https://github.com/better-auth/better-auth/commit/2a99c1e47fcff28c5e7e1f24800881806561895d) feat(sidebar): add "Waitlist" link with icon to sidebar content - [`cfa24e5`](https://github.com/better-auth/better-auth/commit/cfa24e575372391484e7783b9a3ccac304547aac) feat(waitlist): add comprehensive waitlist management plugin documentation - [`99deca0`](https://github.com/better-auth/better-auth/commit/99deca0cbf0bfe634985652f32a2a3cc9f9ffe0c) feat(waitlist): implement comprehensive waitlist management plugin - [`bc1e23e`](https://github.com/better-auth/better-auth/commit/bc1e23ebdc68787d19283321507670b576f01f88) refactor: reorganize and update plugin exports in index.ts - [`a492674`](https://github.com/better-auth/better-auth/commit/a492674597508450d7995f0cf255f49dbae68b74) feat(waitlist): add waitlist plugin to build configuration and package exports - [`8d4f91f`](https://github.com/better-auth/better-auth/commit/8d4f91f10def72c93a7bc08cbec6bf75158ca9b7) not required file - [`c07e01f`](https://github.com/better-auth/better-auth/commit/c07e01f239ed9bf75d7aefc454661183c2326c9c) fix(sidebar): update "Waitlist" icon for improved SVG structure - [`9f15756`](https://github.com/better-auth/better-auth/commit/9f15756fe7ddbd285671ee95ad5434d4471d4e75) refactor(waitlist): improve code formatting and readability in client.ts - [`e2f38c7`](https://github.com/better-auth/better-auth/commit/e2f38c7841f88ad34d98e225d9573583261d66e4) Merge branch 'main' of github.com:haxurn/better-auth into feat/waitlist-plugin ### 📊 Changes **14 files changed** (+3858 additions, -35 deletions) <details> <summary>View changed files</summary> 📝 `docs/app/docs/[[...slug]]/page.tsx` (+18 -19) 📝 `docs/components/sidebar-content.tsx` (+18 -0) ➕ `docs/content/docs/plugins/waitlist.mdx` (+853 -0) 📝 `packages/better-auth/build.config.ts` (+2 -0) 📝 `packages/better-auth/package.json` (+13 -0) 📝 `packages/better-auth/src/plugins/index.ts` (+17 -16) ➕ `packages/better-auth/src/plugins/waitlist/client.ts` (+424 -0) ➕ `packages/better-auth/src/plugins/waitlist/endpoints.ts` (+505 -0) ➕ `packages/better-auth/src/plugins/waitlist/error-code.ts` (+11 -0) ➕ `packages/better-auth/src/plugins/waitlist/index.ts` (+580 -0) ➕ `packages/better-auth/src/plugins/waitlist/schema.ts` (+255 -0) ➕ `packages/better-auth/src/plugins/waitlist/types.ts` (+350 -0) ➕ `packages/better-auth/src/plugins/waitlist/utils.ts` (+404 -0) ➕ `packages/better-auth/src/plugins/waitlist/waitlist.test.ts` (+408 -0) </details> ### 📄 Description ## 🚀 Overview This PR introduces a complete waitlist management system for Better Auth, providing a robust solution for managing user queues with advanced features including priority handling, analytics, referral systems, and administrative controls. ## ✨ Key Features ### Core Functionality - **Intelligent Queue Management** - Automatic position tracking with smart rebalancing - **Multi-level Priority System** - Four priority levels: `low`, `normal`, `high`, `urgent` - **User-friendly API** - Simple join/leave/status endpoints for seamless integration - **Flexible Configuration** - Extensive customization options for different use cases ### Advanced Features - **📊 Comprehensive Analytics** - Track signups, conversions, wait times, and performance metrics - **👥 Admin Operations** - Bulk approve/reject, export data, and advanced filtering capabilities - **🎯 Referral System** - Reward users for referring others with priority boosts - **📋 Campaign Support** - Separate waitlists for different campaigns or products - **🧹 Auto-cleanup** - Automatically remove expired entries based on configurable rules - **🔧 Event Hooks** - Extensive webhook system for custom integrations ### Developer Experience - **TypeScript First** - Full type safety with comprehensive interfaces - **Database Agnostic** - Works with all Better Auth supported databases - **Test Coverage** - Comprehensive test suite ensuring reliability - **Rich Documentation** - Complete MDX docs with examples and configuration guides ## 📋 What's Included ### Plugin Files - `packages/better-auth/src/plugins/waitlist/index.ts` - Main plugin entry point - `packages/better-auth/src/plugins/waitlist/types.ts` - TypeScript interfaces and types - `packages/better-auth/src/plugins/waitlist/endpoints.ts` - API endpoint definitions - `packages/better-auth/src/plugins/waitlist/client.ts` - Client-side methods - `packages/better-auth/src/plugins/waitlist/schema.ts` - Database schema definitions - `packages/better-auth/src/plugins/waitlist/utils.ts` - Utility functions - `packages/better-auth/src/plugins/waitlist/waitlist.test.ts` - Comprehensive tests ### Documentation - `docs/content/docs/plugins/waitlist.mdx` - Complete plugin documentation - Examples for all features and configuration options - Advanced use cases and integration patterns ## 🛠 API Endpoints ### User Endpoints - `POST /waitlist/join` - Join the waitlist with priority calculation - `GET /waitlist/status` - Check current position and status - `POST /waitlist/leave` - Leave the waitlist ### Admin Endpoints - `GET /waitlist` - List all entries with filtering and pagination - `POST /waitlist/bulk-update` - Bulk approve/reject/update operations - `GET /waitlist/analytics` - Comprehensive analytics and insights - `GET /waitlist/export` - Export data in CSV/JSON formats - `POST /waitlist/cleanup` - Clean up expired entries ## 🔧 Configuration Options ```typescript waitlist({ maxCapacity: 1000, allowMultipleEntries: false, enableAutoCleanup: true, analytics: { enabled: true, trackSources: true }, referral: { enabled: true, rewardType: "skip_positions" }, campaigns: { enabled: true }, onUserJoined: async ({ entry, position }) => { /* custom logic */ }, onUserApproved: async ({ entry }) => { /* custom logic */ }, calculatePriority: async ({ email, metadata }) => { /* custom logic */ } }) ``` ## 📊 Database Schema ### Core Tables - `waitlist` - Main entries table with position tracking - `waitlist_campaigns` - Campaign management (optional) - `waitlist_analytics` - Analytics data (optional) ## 🧪 Testing - ✅ Comprehensive test suite covering all functionality - ✅ Database integration tests with proper migrations - ✅ Client method validation - ✅ Edge case handling (capacity limits, duplicate entries, etc.) ## 📚 Documentation - Complete MDX documentation following Better Auth standards - Installation and setup guides - Configuration examples for all features - Advanced use cases and integration patterns - Full API reference with TypeScript interfaces - Event hooks with real-world examples ## 🎯 Use Cases Perfect for: - Product launches and beta programs - Feature rollouts with controlled access - Early access programs with referral systems - Multi-product waitlists with campaign tracking - Geographic or demographic-based prioritization ## 🚀 Migration Guide 1. Add the plugin to your Better Auth configuration 2. Run database migrations: `npx @better-auth/cli migrate` 3. Add client plugin to your auth client 4. Start using the waitlist endpoints ## 📖 Breaking Changes None - this is a new feature addition that doesn't affect existing functionality. ## 🔄 Compatibility - ✅ All Better Auth supported databases - ✅ All Better Auth client adapters - ✅ TypeScript 4.9+ - ✅ Node.js 16+ --- This waitlist plugin provides a production-ready solution for managing user queues with enterprise-grade features while maintaining the simplicity and developer experience that Better Auth is known for. <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Added a comprehensive waitlist plugin to Better Auth, enabling advanced queue management, multi-level priority, analytics, referral systems, and admin controls. - **New Features** - Intelligent queue with automatic position tracking and priority levels. - User and admin API endpoints for joining, status checks, bulk operations, analytics, and exports. - Referral rewards, campaign support, auto-cleanup, and event hooks. - Full TypeScript support, database-agnostic design, tests, and detailed documentation. - **Dependencies** - Updated build configuration and package exports to include the waitlist plugin. <!-- End of auto-generated description by cubic. --> --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-03-13 12:00:22 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/better-auth#4803