Features - Payment reminders via Resend (candidates, send, history, test email) - Bulk import of the customer list from Excel/CSV in the dashboard - Dashboard i18n (en/nl) with language selector Security - Enforce venue isolation on all /venues/:venueId routes - Require admin for planned-tab changes and pairing codes - Rate-limit login and device registration; opt-in TRUST_PROXY - Require JWT_SECRET in production; stop leaking internal errors - Escape customer names in reminder emails Sync and commands - Remove tabs the terminal no longer reports; validate nested sync payload - Return all pending commands on every sync (fixes missed-command race) - First command ack wins; atomic registration code claim - Reject commands for revoked devices, stale versions or duplicates - Remind only unpaid balances, with a 7-day cooldown Dashboard - Share a single token refresh across concurrent 401s (random logouts) - Keep the session alive for the refresh token lifetime Deployment - Replace `db push --accept-data-loss` with migrations (baselines legacy DBs) - Set NODE_ENV=production; pass Resend and TRUST_PROXY env in prod compose
26 lines
768 B
JSON
26 lines
768 B
JSON
{
|
|
"name": "kooltab",
|
|
"private": true,
|
|
"scripts": {
|
|
"install:all": "pnpm install",
|
|
"dev": "pnpm --parallel -r run dev",
|
|
"build": "pnpm -r run build",
|
|
"lint": "pnpm -r run lint",
|
|
"typecheck": "pnpm -r run typecheck",
|
|
"test": "pnpm -r run test",
|
|
"test:e2e": "pnpm --filter @kooltab/api run test:e2e",
|
|
"db:generate": "pnpm --filter @kooltab/api run db:generate",
|
|
"db:migrate": "pnpm --filter @kooltab/api run db:migrate",
|
|
"db:seed": "pnpm --filter @kooltab/api run db:seed",
|
|
"db:reset": "pnpm --filter @kooltab/api run db:reset",
|
|
"api:docs": "pnpm --filter @kooltab/api run start:dev",
|
|
"clean": "pnpm -r run clean"
|
|
},
|
|
"engines": {
|
|
"node": ">=18.0.0"
|
|
},
|
|
"devDependencies": {
|
|
"tsx": "^4.23.15"
|
|
}
|
|
}
|