All updates
Release 0.3.0 - Domains, webhooks & audience

Domains, webhooks & audience

Domain verification, webhook delivery, audience groups, and the first wave of backend microservices.

DomainsWebhooksAudienceAPIDNSMicroservices

Planning

  • Microservices architecture Domain, webhook, and audience services with reverse-proxy routing via Caddy and shared auth middleware. Custom ID prefixes (aud_, dom_, wh_) for cross-service entity identification.
  • Marketing resources roadmap Planned changelog, self-hosting, system status, and SDK documentation pages on the web app.
  • Domain lifecycle design Designed full domain lifecycle: add → DNS generate → verify → active, with DMARC/DKIM/SPF record management and Redis caching strategy.

Design

  • Domain dashboard Domain table with status badges (verified, pending, failed), DNS record table with copy-to-clipboard actions, skeleton loading states, and popover for domain actions.
  • Webhook UI Webhook table, create modal with event icons and selection, delete confirmation by URL, keyboard shortcut indication on delete modal.
  • Audience management Audience group layout with sidebar/topbar, edit modal with accessibility features, bulk import with react-dropzone file upload area, and import status display.
  • Dashboard shell redesign Organization dropdown in sidebar and topbar, adaptive sidebar/topbar layout toggle with motion library animations, theme toggle functionality with layout-specific icons.

Frontend

  • Domain management Sidebar/topbar layout, add-domain flow with valibot validation, DMARC/DKIM/SPF record sections with copy functionality, delete modal with popover, search and status filters, error handling with SomethingWentWrong component.
  • Domain detail page DNS records section, domain header with relative time, status banner with last updated time, loading skeletons, domain table with badges, and action buttons.
  • Webhooks List sidebar with webhook table, create modal with event selection and router navigation, delivery logs view, event subscriptions, delete modal with confirmation by URL.
  • Audience management (contacts precursor) Audience groups with CRUD, bulk CSV import with react-dropzone and validation, edit/delete group modals with confirmation input, copy audience ID, CSV download export.
  • Dashboard shell Organization dropdown in sidebar/topbar with async handling, adaptive sidebar/topbar layout toggle, theme toggle with layout-specific icons.
  • Web marketing pages SDK, API reference, campaigns, templates, validation, transactional email, changelog, self-hosting guide, and system status pages with comprehensive layouts and metadata.

Backend

  • Domain service Full CRUD, DNS generate/verify/delete, DKIM key generation, Redis caching with invalidation, OpenAPI via @elysiajs/openapi, organization-scoped operations, domain parameter validation.
  • DNS service DNS record generation and insertion, verification with status tracking, DKIM key management, organization membership enforcement, dedicated routes and controllers.
  • Domain schema evolution New attributes for DNS and verification status, database migration, status column added to domain_dns_record table, domain regex validation pattern.
  • Webhook service Full CRUD, event subscriptions, webhook event seeding (db:seed), actual secret in responses, health checks with Postgres and Redis status.
  • Audience service CRUD operations, bulk import, advanced search, port 3014, PostgreSQL + Redis integration, authentication middleware, audience group management with CRUD.
  • Schemas & database Audience and webhook tables with custom ID prefixes (aud_, dom_, wh_), relations and enums, and centralized Drizzle schema updates.
  • Service standardization Standardized error responses with structured message objects, consistent logger usage across services, auth middleware using API session fetching, CORS support in auth service.

DevOps

  • Observability stack ClickHouse, OpenTelemetry Collector, Grafana, and Loki added to docker-compose for distributed tracing and log aggregation.
  • Logger package (@reloop/logger) Pino-based structured logging with pretty-printing in development. Adopted across domain and auth services with standardized error/info message patterns.
  • SDK scaffolding Initial .NET, Go, Java, Node, PHP, Python, and Rust hello-world SDK folders with project configuration files.
  • Reverse proxy configuration Audience and webhook API endpoints added to Caddyfile for service routing. Domain route versioning updates.
  • Dependency updates Next.js upgraded to 16.0.0-beta.0 then canary.14, React 19.2.0, bun 1.3.0, form validation migrated from zod to valibot, babel-plugin-react-compiler added.