Dashboard
Set up and run the Reloop dashboard app locally.
Main workspace app — campaigns, contacts, templates, analytics, and settings.
Overview
| Property | Value |
|---|---|
| Directory | apps/frontend/dashboard |
| Port | 3001 |
| Local URL | https://local.reloop.sh/dashboard |
| Direct URL | http://localhost:3001/dashboard |
| Stack | TanStack Start · Vite · React 19 · Tailwind CSS |
Quick start
From the monorepo root (after bun setup):
bun fe:dashboard:dev
Or start every frontend together:
bun frontend:dev
Vite HMR serves the app on port 3001 with base path /dashboard.
Environment
No committed .env is required for local same-origin use via Caddy. The auth client falls back to the browser origin when public URL vars are unset.
Optional overrides:
# Optional locally — browser origin is used when unset (via Caddy at local.reloop.sh).
# Required at Docker/image *build* time for production if you cannot rely on same-origin.
# NEXT_PUBLIC_URL=https://local.reloop.sh
# VITE_PUBLIC_URL=https://local.reloop.sh
NEXT_PUBLIC_WS_URL="wss://local.reloop.sh"
API calls use relative paths (/api/*) through Caddy, so no public API URL is required.
Auth (@reloop/auth/client) resolves the public origin as: NEXT_PUBLIC_URL / VITE_PUBLIC_URL → window.location.origin. For production Docker images you can pass --build-arg NEXT_PUBLIC_URL=https://your-domain.com; if omitted, the browser origin is used so same-host reverse-proxy deploys work without a rebuild.
| Variable | Required | Default |
|---|---|---|
NEXT_PUBLIC_URL / VITE_PUBLIC_URL | No | Browser origin (window.location.origin) |
NEXT_PUBLIC_WS_URL | No | Current host (template collaboration WebSocket) |
Commands
| Command | Description |
|---|---|
bun fe:dashboard:dev | Start Vite + TanStack Start dev server |
bun run --filter=fe-dashboard build | Compile production bundle (Nitro) |
bun run --filter=fe-dashboard preview | Preview production build |
bun run --filter=fe-dashboard typecheck | Run TypeScript checks |
bun run --filter=fe-dashboard test | Run Vitest |
Next
Was this page helpful?