managarten/services/mana-notify/CLAUDE.md
Till JS 7e931b1c6d refactor(services): rename Go services, remove -go suffix
mana-search-go → mana-search
mana-notify-go → mana-notify
mana-crawler-go → mana-crawler
mana-api-gateway-go → mana-api-gateway

Legacy NestJS versions are deleted, suffix no longer needed.
Updated all references in docker-compose, CLAUDE.md, package.json,
Forgejo workflows, and service package.json files.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 10:18:40 +01:00

2.5 KiB

mana-notify (Go)

Go replacement for the NestJS mana-notify service. Unified notification microservice for email, push, Matrix, and webhook notifications.

Architecture

  • Language: Go 1.25
  • Database: PostgreSQL (pgx v5, 5 tables in notify schema)
  • Queue: Go channels + goroutine worker pool (replaces BullMQ)
  • Metrics: Prometheus
  • Port: 3040

Endpoints

Notifications (X-Service-Key auth)

  • POST /api/v1/notifications/send — Send immediately
  • POST /api/v1/notifications/schedule — Schedule for future
  • POST /api/v1/notifications/batch — Batch send (max 100)
  • GET /api/v1/notifications/{id} — Get status
  • DELETE /api/v1/notifications/{id} — Cancel pending

Templates (X-Service-Key auth)

  • GET /api/v1/templates — List all
  • GET /api/v1/templates/{slug} — Get by slug
  • POST /api/v1/templates — Create
  • PUT /api/v1/templates/{slug} — Update
  • DELETE /api/v1/templates/{slug} — Delete
  • POST /api/v1/templates/{slug}/preview — Preview
  • POST /api/v1/templates/preview — Preview custom

Devices (JWT auth)

  • POST /api/v1/devices/register — Register push device
  • GET /api/v1/devices — List devices
  • DELETE /api/v1/devices/{id} — Unregister

Preferences (JWT auth)

  • GET /api/v1/preferences — Get preferences
  • PUT /api/v1/preferences — Update preferences

System

  • GET /health — Health check
  • GET /metrics — Prometheus metrics

Notification Channels

Channel Service Worker Concurrency Max Retries
Email Brevo SMTP 5 3
Push Expo Push API 10 3
Matrix Matrix Homeserver API 5 3
Webhook HTTP callback 10 5

Commands

go run ./cmd/server          # Dev
go build -o bin/mana-notify ./cmd/server  # Build
go test ./...                # Test

Environment Variables

Variable Default Description
PORT 3040 Server port
DATABASE_URL postgresql://...localhost:5432/mana_notify PostgreSQL
SERVICE_KEY dev-service-key Service-to-service auth
MANA_CORE_AUTH_URL http://localhost:3001 JWT validation
SMTP_HOST smtp-relay.brevo.com SMTP host
SMTP_PORT 587 SMTP port
SMTP_USER SMTP username
SMTP_PASSWORD SMTP password
SMTP_FROM ManaCore noreply@mana.how Default from
EXPO_ACCESS_TOKEN Expo push token
MATRIX_HOMESERVER_URL Matrix homeserver
MATRIX_ACCESS_TOKEN Matrix bot token