Open-source restaurant waitlist management — inspired by Chowbus. Runs locally as a web app with a customer kiosk and staff admin interface.
npm install
npm run dev| Route | Purpose |
|---|---|
/ |
Marketing landing page |
/kiosk |
Customer landing screen |
/kiosk/join |
Live queue + join form |
/admin |
Redirects to waitlist management |
/admin/waitlist |
Staff waitlist management |
Customer kiosk
- Tap-to-start landing screen
- Live waitlist display (ticket number, name, party size)
- Touch-friendly join form with numeric keypad
- Confirmation screen with auto-return countdown
Staff admin
- Waitlist sidebar with search and party-size filters
- Notify, Check In, Seat, and Cancel actions
- Add guests manually from staff side
Notifications
- Customer SMS (Telnyx): queue confirmation + table-ready texts go to the guest's phone
- Two-way SMS: guest replies appear in admin Message panel (configure Telnyx webhook — see
.github/TELNYX-10DLC.md) - Staff alerts (VoceChat): check-in, seated, and cancel updates go to VoceChat user
437225 - Set
TELNYX_API_KEYandTELNYX_FROM_NUMBERin.env.local(see.env.example) - Test SMS: set
TELNYX_TEST_TO, thencurl -X POST http://localhost:3000/api/notifications/test
Vercel runs the full app — API, database, Telnyx SMS, and VoceChat staff alerts.
Turso is serverless SQLite. Local file SQLite does not persist on Vercel.
# Install Turso CLI: https://docs.turso.tech/cli
turso db create openwaitlist
turso db show openwaitlist --url # copy URL
turso db tokens create openwaitlist # copy tokennpm i -g vercel
cd openwaitlist
vercelOr connect https://github.com/Privoce/OpenWaitlist in the Vercel dashboard.
| Variable | Value |
|---|---|
TURSO_DATABASE_URL |
libsql://… from Turso |
TURSO_AUTH_TOKEN |
Turso auth token |
TELNYX_API_KEY |
Your Telnyx API key |
TELNYX_FROM_NUMBER |
Your Telnyx number in E.164 (e.g. +15551234567) |
VOCECHAT_BOT_API_KEY |
Your VoceChat bot key |
VOCECHAT_BASE_URL |
https://dev.voce.chat (optional) |
Redeploy after adding env vars. Your app will be at https://your-project.vercel.app.
Local npm run dev |
Vercel | |
|---|---|---|
| Database | SQLite file in data/ |
Turso (cloud) |
| Telnyx SMS | .env.local |
Vercel env vars |
| VoceChat | .env.local |
Vercel env vars |
| GitHub Pages | — | UI demo only (localStorage) |
Landing page + interactive demo: https://openwaitlist.privoce.com (after Pages is enabled)
GitHub Pages must be enabled once or deploys will fail with a 404:
- Open Settings → Pages
- Set Source to GitHub Actions
- Re-run Actions → Deploy GitHub Pages (or push to
main)
See .github/ENABLE-PAGES.md for details and custom domain setup.
Future custom domain: openwaitlist.privoce.com (CNAME file included — add the domain in GitHub Pages settings, then point DNS to GitHub).
The GitHub Pages build runs in the browser with localStorage (no server). SMS and VoceChat are not available on Pages — use the Vercel deployment for full features.
- Local: SQLite file at
data/openwaitlist.db - Vercel: Turso cloud database (when
TURSO_*env vars are set)
- Next.js 16 (App Router)
- Tailwind CSS
- SQLite locally / Turso on Vercel