Wszystkie case studies
03 — Projekt własny · działa produkcyjnie w homelabie
Mikroserwis poczty dla usług i agentów AI
Jedno API HTTP do wysyłki maili dla wszystkich usług i agentów: osobny klucz dla każdej usługi, pełny ślad wysyłek w PostgreSQL i panel z logowaniem przez GitHub.
Problem
Każda usługa w homelabie i każdy agent AI, który miał wysłać maila, potrzebował własnej konfiguracji SMTP i hasła do skrzynki. Nie było jednego miejsca, w którym widać, co zostało wysłane, do kogo, na czyje zlecenie i czy dotarło.
Co zbudowałem
- API w NestJS (
POST /v1/messages): odbiorcy, kopie, adres do odpowiedzi, załączniki w base64 (z limitem liczby i rozmiaru) oraz wybór nadawcy — osobno dla korespondencji zewnętrznej i spraw wewnętrznych. - Osobny klucz API dla każdej usługi — wiadomo, kto zlecił wysyłkę, a jedną usługę można odciąć bez ruszania pozostałych. Odczyt historii wymaga osobnego tokenu administracyjnego.
- Pełny ślad w PostgreSQL (Drizzle) — każda wiadomość ma zdarzenia
accepted, a potemsentalbofailedz odpowiedzią serwera SMTP. Z załączników zostają tylko metadane i skrót SHA-256. - Panel w Next.js z logowaniem przez GitHub OAuth (wejście tylko dla wskazanego konta): wiadomości, zdarzenia, statystyki.
- Testy end-to-end API na wbudowanym PostgreSQL i atrapie serwera SMTP; wdrożenie skryptem przez Docker Compose, sekrety pobierane z menedżera haseł.
- Publikacja przez Cloudflare Tunnel i Traefik z limitem żądań na adres IP — bez otwierania portów.
Efekt
- Usługi i agenci wysyłają pocztę jednym wywołaniem HTTP, bez haseł SMTP w swojej konfiguracji.
- Każda wysyłka zostawia ślad: kto zlecił, do kogo i z jakim wynikiem.
- Formularz kontaktowy na tej stronie wysyła wiadomości właśnie przez ten mikroserwis.
Masz podobny problem?
Opisz swój proces — odpowiem, czy i jak da się go rozwiązać.