Temă
Notifications, email, SMS and push
Nothing in this project uses a paid service. Every outgoing message ends up in Mailpit (http://localhost:8025), which is part of the Docker stack:
| Channel | Where to see it | Can it reach a real person? |
|---|---|---|
| Mailpit, normal messages | Only the addresses in MAIL_ALLOWED_RECIPIENTS, and only if SMTP_* points to a real server. With Mailpit nothing leaves the computer. | |
| SMS | Mailpit, tag sms (sender "Taraba SMS", recipient sms.<number>@capture.taraba.invalid) | No. .invalid is a reserved domain that can never be delivered. |
| Push | Mailpit, tag push (sender "Taraba Push", recipient push.user-<id>@capture.taraba.invalid) | No. |
In Mailpit, click a tag (or search tag:sms, tag:push) to see only that channel.
How it is built
infrastructure/outbound/gateways.ts:SmsGatewayandPushGatewayinterfaces. Business code depends only on them.capture-gateways.ts: the implementations used now; they write a readable preview (bubble for SMS, notification card for push) to the capture inbox with anX-Tagsheader.SMS_DRIVER/PUSH_DRIVER=capture(default) ordisabled. A real provider (e.g. Web Push, an SMS operator) is a new class implementing the same interface plus one more value for the setting; nothing else changes.- Every in-app notification (new message, offer, accepted offer, price drop on a favourite…) is mirrored as a push after it is saved (
notifications/services/push-dispatcher.ts), unless the user switched that type off in their notification settings. A failed push never undoes the action. - Test buttons: on every status page ("SMS și push de test"), or the mutations
sendTestSms(to)/sendTestPush(only withDIAGNOSTICS_ENABLED=true). Mailpit shows the Tags list after the first tagged message. - Real flows that send SMS: orders (placed, shipped, delivered, money released), see
docs/ORDERS.md.