Architecture
Beaco is a hosted, event-driven notification platform built for reliable multi-channel delivery.
For endpoint-level details, see API Reference.
System Overview
Beaco’s public API endpoint is:
https://beaco.michaelogunjimi.com/api/v1
From there, Beaco handles validation, queuing, delivery, retries, and audit history.
Primary design goals:
- Fast async ingestion: clients receive
202 Acceptedquickly. - Reliability by default: retries and dead-letter handling are built in.
- Channel isolation: Email, SMS, and Webhook are processed independently.
- Auditability: event and notification state transitions are queryable.
High-Level Flow
Your App -> Beaco API -> Queue -> Delivery Workers -> Providers (Resend, Twilio, Webhook endpoints)
\-> Event + Notification state storeEnd-to-End Data Flow
1) Ingest event
You call POST /events with X-API-Key, recipients, payload, and optional template_id / idempotency_key.
2) Validate and persist
Beaco validates schema and key scope, enforces idempotency when provided, then stores the event.
3) Fan-out notifications
Beaco creates one notification per recipient-channel pair.
4) Queue delivery work
Notifications are queued by channel and priority for asynchronous processing.
5) Deliver via provider
Workers send through:
- Email → Resend
- SMS → Twilio
- Webhook → outbound HTTP POST
6) Update lifecycle state
Beaco stores each status transition (queued, processing, delivered, failed, dead_letter) so clients can query complete history.
Reliability Model
Retry logic
Transient failures are retried with exponential backoff and jitter.
Dead-letter queue
When retry limits are exceeded, notifications enter dead-letter state for operator review and optional replay.
Idempotency
Client-provided idempotency keys prevent duplicate event creation during request retries.
Tenancy and Access Model
Beaco separates the human control plane from the notification data plane.
Organizations and projects
- Users join organizations through memberships with viewer, member, admin, or owner roles.
- Organizations contain projects, which form the operational boundary for integrations.
- Projects own API keys and the events, notifications, templates, suppressions, and observability data created through them.
Project API keys
- Applications authenticate with
X-API-Key. - Each key belongs to one project and has explicit read or write scopes.
- API queries are filtered by the authenticated key so one integration cannot inspect another key's data.
Human and platform administration
- Human users authenticate with bearer access tokens created through magic-link or GitHub sign-in.
- Organization roles control member, project, invitation, and API-key administration.
- Platform administration uses separately permissioned admin users and system credentials; there is no shared master API key.
Multi-tenancy is enforced in the API layer and query layer together, not by frontend-only filtering.
Security Boundaries
Key security controls:
- Bearer authentication and role checks for the human control plane.
- Header-based project API-key authentication (
X-API-Key) for notification operations. - Scope checks plus per-key data filtering for project resources.
- Audit logs for sensitive operations.
Scalability Characteristics
Beaco scales by component:
- API servers scale horizontally (stateless).
- Workers scale by queue/channel throughput.
- Queue and cache tiers scale independently from API.
- Data storage scales independently from delivery workers.
This separation keeps read/write APIs responsive during provider disruptions or queue spikes.
Summary
Beaco’s architecture is intentionally simple in composition but strong in operational behavior:
- Async ingestion for low latency.
- Queue-based execution for resilience.
- Retry + dead-letter workflows for reliability.
- Organization roles and scoped project API keys for isolation.
For integration details, continue to API Reference, Delivery Pipeline, and Webhooks.

