Quick reference
Server
Server
| Variable | Required | Default | Purpose |
|---|---|---|---|
PORT | No | 3000 | HTTP server port |
NODE_ENV | No | production | Environment mode. Set to development for dev mode auth bypass |
CORS_ALLOWED_ORIGINS | No | * | Comma-separated list of allowed CORS origins |
AWS
AWS
| Variable | Required | Default | Purpose |
|---|---|---|---|
AWS_REGION | Yes | — | AWS region for all services (DynamoDB, etc.) |
AWS_ACCESS_KEY_ID | No | — | Explicit credentials. Omit to use instance role / default credential chain |
AWS_SECRET_ACCESS_KEY | No | — | Explicit credentials. Omit to use instance role / default credential chain |
In production (ECS/EC2), use IAM roles instead of explicit credentials. The AWS SDK automatically discovers them.
Cognito
Cognito
| Variable | Required | Default | Purpose |
|---|---|---|---|
COGNITO_USER_POOL_ID | Yes | — | Cognito User Pool ID for JWT validation |
COGNITO_CLIENT_ID | Yes | — | Cognito App Client ID for audience validation |
Admin
Admin
| Variable | Required | Default | Purpose |
|---|---|---|---|
ADMIN_API_KEY | Yes | — | Static API key for server-to-server admin access |
SportMonks
SportMonks
| Variable | Required | Default | Purpose |
|---|---|---|---|
SPORTMONKS_API_TOKEN | Yes | — | API token for SportMonks cricket data API |
SPORTMONKS_SEASON_ID | Yes | — | The season ID to query for fixtures and scores |
DynamoDB tables
DynamoDB tables
All table names default to the values shown. Override them to use custom table names (e.g., per-environment prefixes).
| Variable | Default | Purpose |
|---|---|---|
DYNAMODB_USERS_TABLE | sightscreen-users | User profiles |
DYNAMODB_MATCHES_TABLE | sightscreen-matches | Match/fixture metadata |
DYNAMODB_SCORES_TABLE | sightscreen-scores | Live score data |
DYNAMODB_LEAGUES_TABLE | sightscreen-leagues | League definitions |
DYNAMODB_TEAMS_TABLE | sightscreen-teams | Team data and overrides |
DYNAMODB_DEVICES_TABLE | sightscreen-devices | APNs device tokens |
DYNAMODB_SUBSCRIPTIONS_TABLE | sightscreen-subscriptions | Match follow subscriptions |
DYNAMODB_PUSH_STATE_TABLE | sightscreen-push-state | Last pushed hash per match/device |
DYNAMODB_NOTIFICATIONS_TABLE | sightscreen-notifications | Notification dedup tracking |
DYNAMODB_REPLAY_MATCHES_TABLE | sightscreen-replay-matches | Active replay match state |
DYNAMODB_TAPES_TABLE | sightscreen-tapes | Recorded match tapes for replay |
DYNAMODB_APP_CONFIG_TABLE | sightscreen-app-config | App configuration (version, maintenance) |
DYNAMODB_CIRCUIT_BREAKER_TABLE | sightscreen-circuit-breaker | Circuit breaker state persistence |
APNs (Apple Push Notification service)
APNs (Apple Push Notification service)
| Variable | Required | Default | Purpose |
|---|---|---|---|
APNS_KEY_ID | Yes | — | The Key ID from your Apple Developer account |
APNS_TEAM_ID | Yes | — | Your Apple Developer Team ID |
APNS_BUNDLE_ID | Yes | — | App bundle identifier (e.g., com.sightscreen.app) |
APNS_KEY_PATH | Yes | — | Absolute path to the .p8 private key file |
APNS_ENVIRONMENT | No | production | production or sandbox |
For local development, set
APNS_ENVIRONMENT=sandbox and use the sandbox APNs endpoint.App version control
App version control
| Variable | Required | Default | Purpose |
|---|---|---|---|
MIN_APP_VERSION | No | 1.0.0 | Minimum supported app version. Clients below this are force-updated |
STORE_URL | No | — | App Store URL shown in the force-update prompt |
MAINTENANCE_MODE | No | false | Set to true to show maintenance screen on all clients |
Job tuning
Job tuning
| Variable | Required | Default | Purpose |
|---|---|---|---|
DISABLE_LIVE_SCORE_JOB | No | false | Disable the LiveScoreJob |
DISABLE_ACTIVITY_PUSH_JOB | No | false | Disable the ActivityPushJob |
DISABLE_PREMATCH_NOTIFICATION_JOB | No | false | Disable the PrematchNotificationJob |
DISABLE_FIXTURE_SYNC_JOB | No | false | Disable the FixtureSyncJob |
DISABLE_REPLAY_SCORE_JOB | No | false | Disable the ReplayScoreJob |
LIVE_SCORE_POLL_INTERVAL_MS | No | 2500 | LiveScoreJob polling interval when matches are live |
IDLE_SCORE_POLL_INTERVAL_MS | No | 60000 | LiveScoreJob polling interval when no matches are live |
FIXTURE_SYNC_INTERVAL_MS | No | 21600000 | FixtureSyncJob interval (default: 6 hours) |
PREMATCH_NOTIFICATION_WINDOW_MINUTES | No | 30 | How many minutes before match start to send notification |
Mock / Replay
Mock / Replay
| Variable | Required | Default | Purpose |
|---|---|---|---|
MOCK_SPORTMONKS_URL | No | — | URL of the mock SportMonks server. Setting this enables mock mode |
MOCK_SPORTMONKS_TOKEN | No | — | Auth token for the mock server |