mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 19:01:08 +02:00
New service docs: - services/mana-stt/CLAUDE.md — FastAPI surface with Whisper MLX (local), WhisperX (rich), and Voxtral (local + Mistral API). Documents the lazy backend loading and the launchd plist setup on the Mac Mini. - services/mana-events/CLAUDE.md — Hono/Bun service for public RSVP and event-sharing. Documents the host (JWT) vs public (token) split, the rate-limit sweeper, and the createApp factory pattern that lets unit tests run without bootstrapping the production sweeper. Stale entries fixed: - mana-auth: dropped "rewritten from NestJS / drop-in replacement" — the rewrite is the only mana-auth there is now. Email channel updated from Brevo SMTP to self-hosted Stalwart (see docs/MAIL_SERVER.md). - mana-notify: same Brevo → Stalwart fix in the channel table and env var defaults. PORT_SCHEMA.md flagged as aspirational: - The doc was dated 2026-03-28 and presented as "single source of truth", but cross-checking against actual service source files (config.go, main.py, start.sh) shows nothing matches. Added a prominent warning at the top with the real ports + two confirmed collisions: * mana-image-gen and mana-video-gen both default to PORT 3026 * mana-voice-bot and mana-sync both default to PORT 3050 Today these are masked because image-gen + voice-bot live on the Windows GPU server while video-gen + sync live on the Mac Mini, but the moment they share a host they collide. Either execute the planned reorg or pick non-colliding ports and rewrite the doc to match reality — flagged as a real follow-up.
2.6 KiB
2.6 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 |
|---|---|---|---|
Stalwart SMTP (self-hosted, see docs/MAIL_SERVER.md) |
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_AUTH_URL |
http://localhost:3001 | JWT validation |
SMTP_HOST |
stalwart | SMTP host (self-hosted Stalwart) |
SMTP_PORT |
587 | SMTP port |
SMTP_USER |
SMTP username | |
SMTP_PASSWORD |
SMTP password | |
SMTP_FROM |
Mana noreply@mana.how | Default from |
EXPO_ACCESS_TOKEN |
Expo push token | |
MATRIX_HOMESERVER_URL |
Matrix homeserver | |
MATRIX_ACCESS_TOKEN |
Matrix bot token |