Skip to content

feat(ops): monitoring endpoints and a status page link - #99

Merged
clbotdev merged 1 commit into
mainfrom
issue-69-monitoring
Oct 19, 2026
Merged

clbotdev merged 1 commit into
mainfrom
issue-69-monitoring

Conversation

@clbotdev

Copy link
Copy Markdown
Contributor

Part of #69. The status page itself (hosting, DNS for status.sendlit.app, links on the sendlit.app site) is outside this repo; see "Left to do" below.

What

  • apps/web: GET /api/health returns 200 {status:"ok"} with no-store and needs no sign-in. This gives monitors a dashboard check; until now / only redirected to login.

  • STATUS_PAGE_URL (web, server-only, http(s) only) adds System status to the user menu on every dashboard page. Documented in .env.example and apps/web/.env.example.

  • Docs: self-hosting/monitoring lists every check with its expected response, all verified against a running stack:

    Check Expected
    API /health 200
    API /ready 200 with Postgres and Redis checks; 503 otherwise
    Web /api/health 200
    POST /mcp without credentials 401
    /track/open 200 gif
    /unsubscribe/<invalid> 404
    /openapi.json 200

    It also covers publishing a status page with Upptime or Uptime Kuma.

Verification

  • check.sh (format, lint, typecheck, 715 API tests, web tests incl. new route, config and nav-user tests); docs build.
  • Browser E2E (3/3):
    1. Every documented check answers as documented, without credentials.
    2. /api/health loads in a signed-out browser without redirecting.
    3. The user menu shows System status linking to STATUS_PAGE_URL in a new tab, on the home page and on other dashboard pages. This step caught that the home page renders its own sidebar outside the dashboard layout; fixed.

Left to do (needs an owner decision and outside access)

  1. Choose the status page host (Upptime on GitHub Pages, or Uptime Kuma on a separate box) and create it with the checks above against app.sendlit.app, api.sendlit.app and docs.sendlit.app.
  2. Add DNS: a status.sendlit.app CNAME to the status host.
  3. Set STATUS_PAGE_URL=https://status.sendlit.app on the hosted web app.
  4. Link it from the sendlit.app footer and /help (marketing site, not in this repo).

Adds GET /api/health to the dashboard so uptime monitors have an
unauthenticated target, a STATUS_PAGE_URL setting that shows "System
status" in the user menu, and a self-hosting page listing what to monitor
(with the responses each check should get) and how to publish a status page
with Upptime or Uptime Kuma.

Refs #69
@clbotdev
clbotdev merged commit 2e7e917 into main Oct 19, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants