СИМ Ёж - маркетплейс с оплатой за просмотры социальной рекламы
Мобильное приложение, где товары покупаются за баллы от просмотра соцрекламы. Разработали Backend на Django: внедрили JWT-авторизацию, систему достижений и 3 вида Push-уведомлений через Celery и Firebase. Стек: Python, DRF, Redis, Docker.
О проекте
СИМ ЁЖ — социальный интернет-магазин, где пользователи зарабатывают баллы за просмотр социальной рекламы и обменивают их на товары с маркетплейсов. Администратор таргетирует рекламу по группам пользователей, система начисляет баллы, а накопленные средства конвертируются в реальные покупки с доставкой в пункты выдачи. Это не благотворительность — это модель монетизации внимания пользователей через социально значимый контент. Команда Fortech вошла в проект на этапе доработки backend-части мобильного приложения. Нужно было реализовать систему уведомлений, механику достижений, авторизацию через JWT и настроить асинхронную обработку задач. Работали в связке с мобильной командой заказчика, которая интегрировала API в iOS и Android клиенты.
Задачи
-
Спроектировать модели пользователей и регистрационный flow с JWT-аутентификацией через Django Rest Framework
-
Реализовать трёхуровневую систему уведомлений: push через Firebase Cloud Messaging, внутренние уведомления в приложении и периодические рассылки через Celery Beat
-
Интегрировать FCM Django для управления устройствами пользователей и отправки push-уведомлений из Django-админки
-
Разработать механику достижений с прогресс-баром и привязкой к просмотрам видео
-
Построить систему контент-ограничений для видео с фильтрацией по категориям пользователей и индивидуальным правам доступа
-
Настроить асинхронную обработку задач через Celery с использованием Redis в качестве брокера сообщений

Реализация
Начали с аудита существующей кодовой базы и выбора архитектуры для новых модулей.
- Авторизация: использовали Django Rest Framework с JWT-токенами — стандартное решение для stateless API, где токен хранится на клиенте и валидируется при каждом запросе.
- Базы данных и кэширование: Postgres выбран как основная БД для транзакционных данных (пользователи, достижения, история просмотров), Redis — для кэширования сессий и в качестве брокера для Celery.
- Документация: DRF Spectacular подключили для автогенерации OpenAPI-схемы — мобильной команде нужна была актуальная документация без ручного сопровождения.
Главный технический вызов — трёхуровневая система уведомлений Разработчик впервые работал с Firebase Cloud Messaging, и задача оказалась нетривиальной:
- Push-уведомления отправляются через FCM Django на зарегистрированные устройства пользователей.
- Внутренние уведомления (попапы в приложении) хранятся в Postgres и отдаются через REST API при запросе.
- Периодические уведомления (например, напоминания о накопленных баллах) реализованы через Django Celery Beat — задачи регистрируются в расписании и выполняются асинхронно.
Пришлось разобраться с форматом FCM-токенов, логикой retry при недоступности устройства и синхронизацией состояния между типами уведомлений.
Django
Python
Docker
Итоговое решение: единая модель Notification с полем type, где бизнес-логика отправки зависит от типа — через FCM, сохранение в БД или постановку в очередь Celery.
Работа с контентом и механиками Для видео разработали модель с привязкой к категориям и группам пользователей. Ограничения реализованы через many-to-many связи в Django ORM: у каждого видео есть список allowed_categories и excluded_users. При запросе списка видео QuerySet фильтруется по правам текущего пользователя.
Достижения спроектированы с полем progress (IntegerField от 0 до 100), которое обновляется триггером при каждом засчитанном просмотре видео.
Инфраструктура Сериализаторы DRF автоматически преобразуют модели в JSON, схемы для Swagger генерируются через drf-spectacular без дублирования кода. Docker Compose связывает Django, Postgres, Redis и Celery в единую инфраструктуру — р азработчик пишет код локально, но окружение идентично продакшену.

Ключевые задачи и решения
- JWT-аутентификация — реализовали через djangorestframework-simplejwt с кастомными claims для хранения user_id и группы пользователя, токены обновляются через refresh endpoint
- Push-уведомления — интегрировали FCM Django с моделью UserDevice (токен, платформа, timestamp), отправка из админки через custom action с выбором целевой аудитории
- Периодические уведомления — настроили Django Celery Beat с хранением расписания в Postgres (DatabaseScheduler), задачи триггерятся по cron-выражениям и отправляют уведомления через Celery workers
- Асинхронная обработка — подключили Celery с Redis-брокером, задачи на отправку уведомлений и пересчёт достижений выполняются в фоне без блокировки основного процесса Django
- Система достижений — модель Achievement с полем target_views и методом calculate_progress(), который обновляет прогресс-бар при каждом POST-запросе на эндпоинт просмотра видео
- Контент-ограничения — реализовали через prefetch_related() в QuerySet для оптимизации запросов и кастомный permission class в DRF, который проверяет доступ на уровне view
- Докумен тация API — настроили DRF Spectacular с аннотациями @extend_schema для автогенерации Swagger-схемы, мобильная команда получает актуальную спецификацию без ручного обновления
Результат
Бизнес получил масштабируемую backend-инфраструктуру на Django с асинхронной обработкой через Celery, готовую к росту нагрузки:
- Быстрое развёртывание: Docker Compose позволяет разворачивать окружение за минуты.
- Автоматизация: DRF Spectacular генерирует документацию автоматически.
- Производительность: Redis кэширует част ые запросы.
Система готова к интеграции с маркетплейсами для обмена баллов на товары — API спроектирован с расчётом на расширение функционала.
Пользователи получили мобильное приложение с полноценной системой монетизации просмотров:
- Безопасность: регистрация через JWT.
- Персонализация: таргетированные видео с учётом категорий.
- Геймификация: накопление баллов с визуализацией прогресса.
- Удержание: три типа уведомлений (push, внутренние, периодические) для вовлечения.
Просмотры обрабатываются в реальном времени, достижения обновляются асинхронно, а администратор управляет контентом и рассылками из Django-админки.
Другие работы

AI-платформа SpotBOI для автоматизации контент-маркетинга и управления социальными сетями
SpotBOI — ИИ-платформа для автоматизации SMM: создание, планирование и публикация контента в стиле бренда

Дистрибьютор косметических брендов FILARAcosmo
Мобильное приложение для продаж премиальной косметики, предназначенное для специалистов и обычных клие нтов.