deployhealth

Live demo. Sample clients and projects, read-only. The alert on Acme API is real: the worker checks it every minute.

Sign in to monitor your own projects

Handoff: acme-storefront

Client
Acme Corp ([email protected])
Repository
github.com/acme/storefront
Generated
2026-09-29 21:17 UTC

All times UTC. This document lists environment variable names only; it never contains their values.

Required environment variables

Every variable the code references in the latest scan (deploy b52952e on main, 2026-09-29 19:47 UTC), grouped by the env-file scope that has to define it. 3 variables missing.

apps/api

VariableDefined inStatus
DATABASE_URL.env.example, .envok
JWT_SECRET.env.example, .envok
LOG_LEVEL.env.example, .envok
PORT.env.exampleok
REDIS_URL—missing
SENTRY_DSN.env.example, .envok
STRIPE_KEY—missing
STRIPE_WEBHOOK_SECRET.env.example, .envok

apps/web

VariableDefined inStatus
ANALYTICS_WRITE_KEY—missing
NEXT_PUBLIC_API_URL.env.example, .envok
NEXT_PUBLIC_CHECKOUT_V2.envok
NEXT_PUBLIC_SUPPORT_EMAIL.env.example, .envok
SENTRY_DSN.env.example, .envok

apps/worker

VariableDefined inStatus
DATABASE_URL.env.example, .envok
REDIS_TLS_URL.env.exampleok
S3_BUCKET.env.exampleok

Monitored endpoints

EndpointURLCheckExpectsUptime, 30 days
Acme storefronthttps://example.com/HEAD every 5 minutes20099.90%
Acme APIhttps://deployhealth.dev/api/demo/brokenGET every minute20099.40%

GitHub Action

Scans run in CI on every push. Save the project’s ingest token as the repository secret DEPLOYHEALTH_TOKEN (tokens are shown once; regenerate one on the project’s settings page), then commit this workflow:

# .github/workflows/deployhealth.yml
name: deployhealth

# Must not run on pull_request events from forks: the job reads a repository secret.
on:
  push:
    branches: [main]

jobs:
  env-scan:
    runs-on: ubuntu-latest
    permissions:
      contents: read
    steps:
      - uses: actions/checkout@v5
        with:
          persist-credentials: false
      - uses: actions/setup-node@v5
        with:
          node-version: 22
          package-manager-cache: false
      - name: Scan env vars and report to deployhealth
        env:
          DEPLOYHEALTH_TOKEN: ${{ secrets.DEPLOYHEALTH_TOKEN }}
        run: |
          npx --yes [email protected] \
            --url https://deployhealth.dev \
            --token "$DEPLOYHEALTH_TOKEN" \
            --sha "$GITHUB_SHA" \
            --branch "$GITHUB_REF_NAME"

Open findings

Missing (3) · referenced in code, not defined in its scope

  • ANALYTICS_WRITE_KEY: referenced at apps/web/src/lib/analytics.ts:4
  • REDIS_URL: referenced at apps/api/src/lib/cache.ts:6
  • STRIPE_KEY: referenced at apps/api/src/billing/stripe.ts:3

Unused (2) · defined in an env file, never referenced

  • OLD_PAYPAL_CLIENT_ID: defined at apps/api/.env.example:14, never referenced
  • S3_REGION: defined at apps/worker/.env.example:5, never referenced

Mismatch (1) · .env and .env.example disagree

  • NEXT_PUBLIC_CHECKOUT_V2: defined at apps/web/.env:4, absent from apps/web/.env.example

Uptime, last 30 days

99.65% on average across 2 endpoints, 2026-08-31 00:00 UTC to 2026-09-29 21:17 UTC.

Alerts, last 30 days

OpenedResolvedDurationWhat happened
2026-09-29 19:52 UTCstill open1h 24m so farAcme API started failing 4m after deploy b52952e, which introduced 2 missing env vars: REDIS_URL, STRIPE_KEY

How to deploy

Where it runs

  • Web and API: Railway project acme-prod, services web and api.
  • Worker: Railway service worker (queues on Redis).
  • DNS: Cloudflare; acme.example points at Railway.

Deploying

  1. Merge to main. Railway builds and deploys web, api and worker.
  2. Database migrations run in the API's pre-deploy step (pnpm db:migrate).
  3. Urgent billing fixes: branch hotfix/<name> from main, open a PR, merge.

Secrets

Set per service in Railway, under Variables. The names are listed in Required environment variables above; the values are in the client's 1Password vault Acme / Production.

Rolling back

Railway → service → Deployments → redeploy the previous build. See the Railway deployment docs.

Generated 2026-09-29 21:17 UTC by deployhealth. All times UTC.