Перейти к содержимому
Все проекты

SaaS · Мессенджеры

Платформа WhatsApp-рассылок

Мультитенантная B2B-платформа для рассылок WhatsApp Business через Twilio: организации, контакты и списки, шаблоны сообщений с одобрением WhatsApp и массовая отправка.

Моя роль
Backend-разработчик. Разработал API, хранение учётных данных тенантов, аутентификацию и pipeline отправки.
Стек
  • Go
  • Echo
  • PostgreSQL
  • Supabase Auth
  • Twilio
  • GCP Secret Manager

Задача

Каждый клиент подключает собственный аккаунт Twilio, поэтому учётные данные нужно безопасно хранить для каждого тенанта, шаблоны должны проходить одобрение WhatsApp, а рассылку на тысячи контактов нельзя отправлять по одному внутри запроса.

Архитектура

Платформа WhatsApp-рассылок — Схема архитектурыClientsweb · API keysEcho APItenants · campaignsSupabase AuthsessionsPostgreSQLcontacts · templatesSecret ManagerTwilio credsWorker pool10 goroutinesTwilioWhatsApp
Echo API на PostgreSQL (GORM) аутентифицирует пользователей через Supabase или по API-ключу. Учётные данные Twilio тенантов хранятся в GCP Secret Manager и запрашиваются в момент отправки. Рассылка раздаётся пулу воркеров, которые отправляют сообщения через Twilio и собирают результаты по каждому контакту; номера телефонов нормализуются в E.164.

Ключевые решения

  1. 01Секреты тенантов вне базы данных

    Почему
    Учётные данные Twilio каждого клиента хранятся в GCP Secret Manager, а не в PostgreSQL, поэтому утечка базы их не раскрывает, а секреты можно версионировать и менять.
  2. 02Пул воркеров для отправки

    Почему
    Фиксированный пул горутин отправляет параллельно, удерживая число одновременных запросов к Twilio в заданных рамках.
    Компромисс
    Результаты приходят не по порядку, и их нужно сопоставлять с контактами.
  3. 03Два способа аутентификации

    Почему
    Люди работают в веб-приложении через сессии Supabase, интеграции — через API-ключи. Ключ хранится дважды: как bcrypt-хэш для поиска и как шифротекст AES-GCM, чтобы владелец мог увидеть его снова.

Что я сделал

  • Организации, пользователи, контакты, списки контактов и шаблоны сообщений
  • Создание шаблонов и запросы на одобрение WhatsApp через Twilio Content API
  • Массовая отправка пулом из 10 горутин с каналами задач и результатов
  • Учётные данные Twilio каждого тенанта в Google Cloud Secret Manager
  • Supabase Auth или API-ключи — bcrypt-хэш для поиска и шифрование AES-GCM для повторного показа