mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-15 19:59:39 +02:00
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>
2.5 KiB
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
notifyschema) - Queue: Go channels + goroutine worker pool (replaces BullMQ)
- Metrics: Prometheus
- Port: 3040
Endpoints
Notifications (X-Service-Key auth)
POST /api/v1/notifications/send— Send immediatelyPOST /api/v1/notifications/schedule— Schedule for futurePOST /api/v1/notifications/batch— Batch send (max 100)GET /api/v1/notifications/{id}— Get statusDELETE /api/v1/notifications/{id}— Cancel pending
Templates (X-Service-Key auth)
GET /api/v1/templates— List allGET /api/v1/templates/{slug}— Get by slugPOST /api/v1/templates— CreatePUT /api/v1/templates/{slug}— UpdateDELETE /api/v1/templates/{slug}— DeletePOST /api/v1/templates/{slug}/preview— PreviewPOST /api/v1/templates/preview— Preview custom
Devices (JWT auth)
POST /api/v1/devices/register— Register push deviceGET /api/v1/devices— List devicesDELETE /api/v1/devices/{id}— Unregister
Preferences (JWT auth)
GET /api/v1/preferences— Get preferencesPUT /api/v1/preferences— Update preferences
System
GET /health— Health checkGET /metrics— Prometheus metrics
Notification Channels
| Channel | Service | Worker Concurrency | Max Retries |
|---|---|---|---|
| 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 |