Jose Olarte III 6ba7d678c6 feat(notifications): allow local debug register/refresh without JWT
When the Notification Debug Panel sends testMode: true and omits
Authorization, skip requireAuth on /notifications/register and /refresh
and scope devices under a synthetic local-test user id. Requests with
a Bearer token or without testMode still use full JWT auth unchanged.
2026-06-04 20:32:18 +08:00

A lightweight Express service that schedules and sends Firebase Cloud Messaging (FCM) push notifications to wake up registered devices.

Dev

cp .env.example .env

Edit .env — set FIREBASE_SERVICE_ACCOUNT_JSON Here is one way to generate the contents: cat your-downloaded-key.json | jq -c .

pnpm install
pnpm run dev

The server starts on http://localhost:3000 (or the port in PORT). Hot-reloads on file changes.

Set NODE_ENV=test-local in .env to bypass JWT expiry verification during local development.

Production

pnpm install --omit=dev
pnpm start

Required environment variables:

Variable Description
FIREBASE_SERVICE_ACCOUNT_JSON Inline service account JSON (one line). If unset, falls back to Application Default Credentials.
PORT HTTP port (default: 3000).
FCM_TOKEN_DATA_DIR Directory for persisting registered FCM tokens (default: ./data).
Description
No description provided
Readme 355 KiB
Languages
TypeScript 99.2%
Dockerfile 0.8%