Fortech
  • Aутстаффинг
  • Аутсорс
  • Веб-разработка
  • Мобильная разработка
  • ИИ-решения
  • UI/UX-дизайн
  • Техническая поддержка
Наши продуктыКейсыКонтактыО насБлогКарьера
Связаться
Наши продуктыКейсыКонтактыО насБлогКарьера
Связаться
Fortech
Юридический адрес
344011, Ростовская область, г. Ростов-на-Дону, Лермонтовская ул, д. 22, офис 6, 7, 8
ИНН / КПП
6154162274 / 616401001
ОГРН
1226100005922
ОКВЭД
62.01 Разработка компьютерного программного обеспечения
Код вида деятельности в области IT
1.01, 1.04, 1.05, 1.06

Услуги

  • Аутстаф
  • Аутсорс
  • Веб-разработка
  • Мобильная разработка
  • ИИ-решения
  • UI/UX-дизайн
  • Техническая поддержка

Компания

  • Наши продукты
  • Кейсы
  • Контакты
  • О нас
  • Блог

Соцсети

Аккредитованная IT-компания
Запись №25727 от 13.04.2022

Минцифры России

Позвать нас в тендер

  • bidzaar
  • B2B-Center
Контент © fortech.dev • 2026Политика конфиденциальностиПолитика обработки персональных данных
  1. Главная/
  2. Кейсы/
  3. СИМ Ёж - маркетплейс с оплатой за просмотры социальной рекламы

СИМ Ёж - маркетплейс с оплатой за просмотры социальной рекламы

Мобильное приложение, где товары покупаются за баллы от просмотра соцрекламы. Разработали 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 в качестве брокера сообщений

Group 2131328817.png

Реализация

Начали с аудита существующей кодовой базы и выбора архитектуры для новых модулей.

  • Авторизация: использовали Django Rest Framework с JWT-токенами — стандартное решение для stateless API, где токен хранится на клиенте и валидируется при каждом запросе.
  • Базы данных и кэширование: Postgres выбран как основная БД для транзакционных данных (пользователи, достижения, история просмотров), Redis — для кэширования сессий и в качестве брокера для Celery.
  • Документация: DRF Spectacular подключили для автогенерации OpenAPI-схемы — мобильной команде нужна была актуальная документация без ручного сопровождения.

Главный технический вызов — трёхуровневая система уведомлений
Разработчик впервые работал с Firebase Cloud Messaging, и задача оказалась нетривиальной:

  1. Push-уведомления отправляются через FCM Django на зарегистрированные устройства пользователей.
  2. Внутренние уведомления (попапы в приложении) хранятся в Postgres и отдаются через REST API при запросе.
  3. Периодические уведомления (например, напоминания о накопленных баллах) реализованы через Django Celery Beat — задачи регистрируются в расписании и выполняются асинхронно.

Пришлось разобраться с форматом FCM-токенов, логикой retry при недоступности устройства и синхронизацией состояния между типами уведомлений.

DjangoPythonDocker

Итоговое решение: единая модель 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 в единую инфраструктуру — разработчик пишет код локально, но окружение идентично продакшену.

Group 2131328818.png

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

  • 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, готовую к росту нагрузки:

  1. Быстрое развёртывание: Docker Compose позволяет разворачивать окружение за минуты.
  2. Автоматизация: DRF Spectacular генерирует документацию автоматически.
  3. Производительность: Redis кэширует частые запросы.

Система готова к интеграции с маркетплейсами для обмена баллов на товары — API спроектирован с расчётом на расширение функционала.

Пользователи получили мобильное приложение с полноценной системой монетизации просмотров:

  • Безопасность: регистрация через JWT.
  • Персонализация: таргетированные видео с учётом категорий.
  • Геймификация: накопление баллов с визуализацией прогресса.
  • Удержание: три типа уведомлений (push, внутренние, периодические) для вовлечения.

Просмотры обрабатываются в реальном времени, достижения обновляются асинхронно, а администратор управляет контентом и рассылками из Django-админки.

Готовы выстроить стабильную команду?

Расскажите о проекте — предложим схему работы под ваш горизонт.

Написать в Telegram →

Примеры работ

Смотреть все кейсы
  • Интернет-магазин Juniqe

    Интернет-магазин JUNIQE: реализована покупка в один клик с выбором размеров и рамки, редизайн страниц, интеграция с API и корзина для удобства пользователей.

  • Веб-сервис М.Видео для персонализации промо-акций

    Веб-сервис для персонализации промо-акций включает анализ поведения пользователей, формирование индивидуальных предложений и обработку данных в реальном времени.

Связанные услуги

  • Backend-разработка

Связаться с нами