Appearance
Getting Started
Neverline is a multi-tenant, real-time queue management platform. Customers join queues by scanning a QR code or visiting a link; staff manage operations via the administrative dashboard.
Prerequisites
- Node.js ≥ 22
- pnpm (workspace manager)
- Supabase project (local or hosted)
Quick Start
bash
# Clone & install
git clone <repository-url>
cd neverline
pnpm install
# Set environment variables
cp services/api/.env.example services/api/.env
# Edit .env with your Supabase URL and keys
# Start dev servers
pnpm --filter @neverline/api dev # API on :3001
pnpm --filter @neverline/dashboard dev # Dashboard on :5173
pnpm --filter @neverline/client dev # Customer PWA on :5174
pnpm --filter @neverline/mobile-access start # Staff iOS/Android App (Metro Bundler)Project Structure
| Path | Description |
|---|---|
apps/client/ | React + Vite customer PWA (join, wait, chat, wayfinding) |
apps/dashboard/ | React + Vite admin dashboard |
apps/mobile-access/ | Expo React Native staff app (ticket scanning) - Setup Guide |
services/api/ | Fastify REST API backend |
packages/shared/ | Shared types, schemas, and constants |
supabase/ | Database migrations and seed data |
docs/manual/ | This documentation (VitePress) |
Core Workflow
- Admin creates a queue in the dashboard and configures policies
- Admin shares the queue's join link or QR code
- Customer scans the QR code → joins the queue via the PWA
- Customer monitors position, receives announcements, accesses wayfinding, or utilizes away mode.
- Staff monitors the customer in real-time → calls them when ready to serve.
- Staff marks the session as complete
Key Concepts
- Organization: Top-level tenant. All queues, staff, and data belong to one organization.
- Global Directory: A public facing listing of all organizations or public queues, accessible via the root domain or custom profile slugs like
/org/:slug. - Queue: A named waiting line, configurable as either a Standard waitlist or a specialized Event Queue for ticket verification.
- Session: A customer's visit to a queue — from joining to completion.
- Staff Profile: A user account linked to an organization.
- Queue Policy: Per-queue settings (chat, away timeout, jumps, late grace period).
- Announcement: A staff-created message scoped to org, location, or queue.
- Service Location: A physical venue with structured navigation data and wayfinding overrides.
- Chat Thread: A real-time conversation between a customer and staff during a session.