Skip to content

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

PathDescription
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

  1. Admin creates a queue in the dashboard and configures policies
  2. Admin shares the queue's join link or QR code
  3. Customer scans the QR code → joins the queue via the PWA
  4. Customer monitors position, receives announcements, accesses wayfinding, or utilizes away mode.
  5. Staff monitors the customer in real-time → calls them when ready to serve.
  6. 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.