ZED (My Islamic Reminders)
Мобильное приложение и веб-консоль администратора для доставки мультиязычных исламских трансляций по персональному расписанию каждого пользователя с автоматической генерацией озвучки и детальной аналитикой доставки.
Expo (React Native)
Next.js
Convex
OpenAI TTS
TanStack Table
Recharts

Обзор
ZED — это платформа духовного вещания, реализованная в виде монорепозитория из трех компонентов с единым бэкендом: мобильного приложения на Expo для конечных пользователей, панели администратора на Next.js для управления и бэкенда на Convex, который хранит данные, управляет расписанием, уведомлениями, аналитикой и генерацией аудио. Продукт отправляет пользователям короткие исламские трансляции в удобное для них местное время, на выбранном языке, и автоматически преобразует каждую из них в аудио с дикторским голосом и построчной подсветкой слов при воспроизведении.
Проблема
Сложность этого продукта заключается не в отображении контента, а в оркестрации. Пользователям требуется доставка трансляций в определенное время в их часовом поясе, на одном из нескольких языков, включая языки с письмом справа налево. Каждая трансляция должна быть доступна в виде текста, аудио или материала, которым можно поделиться. Администраторам необходимо видеть реальную картину: что было доставлено, просмотрено и воспроизведено, а также справляется ли генерация аудио. А когда кто-то пропускает контент, система должна напоминать о нем автоматически. Настоящая работа заключалась в объединении доставки по расписанию, выбора языка, генерации аудио, push-уведомлений и аналитики в единую согласованную систему.
Моя роль и подход
Это был командный проект под руководством другого ведущего инженера, в котором я участвовал в качестве одного из разработчиков. Мой вклад был сфокусированным, в рамках архитектуры, построенной вокруг Convex как единого источника истины для мобильного приложения и панели администратора. Принцип проектирования кодовой базы заключается в том, что бэкенд берет на себя оркестрацию — включая расписание, повторные попытки, задачи генерации аудио и аналитику, — в то время как оба фронтенда остаются компактными и работают через один сгенерированный API.
Стек технологий
Ключевые особенности
Галерея


Сложности и решения
Доставка уведомлений — технически требовательное ядро продукта. Поскольку трансляции отправляются каждому пользователю индивидуально, с учетом часового пояса и расписания, бэкенд осуществляет доставку через cron-задачи Convex и фоновый пул воркеров, а не разовые триггеры, фиксируя маркеры повторных попыток на основе активности пользователя для автоматической отправки пропущенных материалов.
Генерация аудио — еще одна динамическая часть, требующая абсолютной надежности. Преобразование текста в озвученное аудио требует времени и может завершаться ошибкой, поэтому для каждой единицы локализованного контента отслеживается собственный статус генерации и количество повторных попыток, а администраторы могут просматривать прогресс и повторно запускать зависшие задачи прямо из дашборда. Отслеживание вовлеченности — запись событий доставки, просмотра и воспроизведения с временными метками — встроено непосредственно в модель данных, что позволяет формировать отчеты напрямую из того же хранилища без отдельного конвейера аналитики.
Результат
ZED — это целостная кроссплатформенная система, где единый бэкенд на Convex обслуживает как пользовательское мобильное приложение, так и операционный дашборд. Она организует доставку персонализированных, мультиязычных и автоматически озвученных трансляций по расписанию и формирует отчеты по каждому этапу их доставки. Это наглядный пример продуктовой разработки со сложной оркестрацией, где бэкенд берет на себя трудоемкие задачи по планированию и медиа, позволяя клиентским приложениям оставаться простыми.
Столкнулись с похожей продуктовой задачей?
Расскажите о текущем состоянии продукта, необходимом результате и имеющихся ограничениях. На основе этого я сформулирую понятный первый этап.
Нанять full stack разработчика