laranail / waitlist-kit
Waitlists, coming-soon and early-access pages for Laravel: lead capture and conversion, a Blade + Alpine.js backend, and themes as packages.
Requires
- php: ^8.5
- illuminate/console: ^13.0
- illuminate/contracts: ^13.0
- illuminate/database: ^13.0
- illuminate/support: ^13.0
- laranail/console: ^0.1.8
- laranail/package-tools: ^0.1.12
Requires (Dev)
- fakerphp/faker: ^1.24
- laranail/captcha: ^0.1
- laranail/settings: ^0.1
- larastan/larastan: ^3.0
- laravel/pint: ^1.30
- laravel/sanctum: ^4.2
- orchestra/testbench: ^11.0
- pestphp/pest: ^4.0
- pestphp/pest-plugin-arch: ^4.0
- pestphp/pest-plugin-laravel: ^4.0
- phpstan/phpstan: ^2.0
- rector/rector: ^2.5.8
- roave/security-advisories: dev-latest
Suggests
- fakerphp/faker: Needed by the factories and the demo seeder (a development dependency).
- laranail/captcha: Server-side captcha (Turnstile and others) on the sign-up form, with security.captcha on.
- laranail/settings: Edit the kit's settings in the backend (settings.store = database).
- laravel/sanctum: Token authentication for the REST API (api.guard = sanctum, the default), with per-token abilities.
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-11-12 01:42:31 UTC
README
Three badges, not four: the laranail family resolves through its git repositories, not Packagist, so there is no registry version to show (see Install).
Waitlists, coming-soon and early-access pages for Laravel: lead capture and conversion, a Blade + Alpine.js backend, and themes as packages.
Requires PHP ^8.5 on Laravel ^13. Pre-release: campaigns take sign-ups on a themed page (two themes ship; theme packages
add more), thank each new address once and forward it to integrations, all run from a Blade +
Alpine.js backend.
Install
The laranail family resolves through git VCS repositories. Add them, then require the package:
composer config repositories.waitlist-kit vcs https://github.com/laranail/waitlist-kit composer config repositories.console vcs https://github.com/laranail/console composer config repositories.package-tools vcs https://github.com/laranail/package-tools composer require laranail/waitlist-kit
Quick start guide and usage
Getting started
Publish the config, run the migrations and check the install in one command:
php artisan laranail::waitlist-kit.install --migrate
It creates eight tables under the laranail_waitlist_kit_ prefix and ends by running the doctor, which exits
non-zero on any problem. Choose how many campaigns the install may run with WAITLIST_KIT_CAMPAIGNS
(single, limited or multi) before you create one.
Usage
Create a campaign through the action, which holds the install to its campaign limit:
use Simtabi\Laranail\WaitlistKit\Actions\CreateCampaign; use Simtabi\Laranail\WaitlistKit\Enums\CampaignType; $campaign = app(CreateCampaign::class)->handle('Launch list', 'launch', CampaignType::Waitlist, ['en', 'es']); $campaign->subscribers()->create(['email' => 'dana@example.com']);
Make it live and its page takes sign-ups at /waitlist/launch:
$campaign->update(['status' => CampaignStatus::Live]);
Check an install at any time, for example as a deploy step:
php artisan laranail::waitlist-kit.doctor
Getting started walks through it; everything else is in the Documentation index.
Documentation
Hosted at opensource.simtabi.com/documentation/laranail/waitlist-kit.
Guides
- Installation — requirements, repositories, supported databases
- Getting started — install, migrate, a first campaign and subscriber
- Configuration — every key and environment variable
- Architecture — the layers, and why the kit is built this way
- Accessibility — what is guaranteed, how it is tested, and the screen-reader pass
- Release — versions, tags and upgrading
Reference
- Models — campaigns, subscribers, blocks, funnel events, integrations
- Sign-ups — routes, the request, the guards and the answer
- Mail — the thank-you, once, in the sign-up's language
- Backend — signing in, abilities, every screen, settings, accessibility
- Themes — two kit themes, theme packages, view fallback, settings as CSS, prebuilt assets
- Pages — campaign types and statuses, search and link previews, hreflang, sitemap
- Conversion — double opt-in, status page, referrals, invites, conversions, unsubscribe, funnel
- Contact — the headless contact form: endpoint, component and rules
- Legal pages — privacy and terms, seeded as drafts, served once published
- Integrations — the
appandbrevodrivers, queued and retried - Morph map —
*ablecolumns and the namespaced aliases - Seeders and factories — the starter and demo seeders, a factory per model
- Campaign limits —
single,limited,multi, andCreateCampaign - Commands —
install,doctor,eject,export,forget - Builders — the kit from code: fluent builders, acting as a user
- REST API — public and manage endpoints, Sanctum, token abilities, limits
- Authorization — abilities, policies and the actor
- Events, listeners and alerts — 12 events, the kit's listeners, alert notifications
Recipes
- Use a separate database — the kit's tables on their own connection
- Check an install in a deploy — the doctor as a gate
- Require a captcha — any provider, on every form and endpoint
- Mirror sign-ups to Brevo — a contact list kept in step
- Export subscribers and erase an address — CSV and erasure requests
- Try it with demo data — a filled local install
- Sign in with your own users — host sign-in and abilities
- Use the bundled login — for an application with no users
- Switch a campaign's theme — per campaign or for all
- Build a theme — a look as a Composer package
- Add a contact form — the headless form on any page
- Publish your legal pages — from seeded draft to served page
- Invite people and report conversions — batches, the invite URL and the endpoint
- Edit settings in the backend —
laranail/settingsas the store - Build a headless front end — the API and builders without the pages
- Manage with API tokens — Sanctum tokens with narrow abilities
- Get alerts — sign-ups, enquiries and milestones by mail
Contributing and security
See CONTRIBUTING.md. Report vulnerabilities privately as SECURITY.md describes (security@simtabi.com); participation follows the Code of Conduct.
License
MIT © Simtabi LLC. See LICENSE.