Страховой маркетплейс

MyPolis

Страховой маркетплейс, где клиенты покупают полисы в одном месте, а страховые компании подключаются как партнёры. Реализованы обработка платежей, POS-системы, управление договорами, админ-панель и бизнес-отчётность.

Обзор

Покупка страховки в Узбекистане означала визит к каждой компании отдельно или работу через брокера. MyPolis это меняет — это онлайн-маркетплейс, где клиенты сравнивают и покупают полисы ОСАГО, КАСКО и Travel от нескольких страховщиков в одном месте. Я построил всё: витрину, backend-интеграции с тремя страховыми API и админ-панель, которой ежедневно пользуются операционные команды.

Что я сделал

  • Единственный full-stack: спроектировал и запустил клиентскую витрину, Django REST бэкенд и отдельную админ-панель — всё с нуля.

  • Подключил трёх страховщиков (EuroAsia, Asia Insurance, O'zagrosug'urta) в единый поток покупки — у каждого свои особенности API, но одинаковый плавный опыт для клиента.

  • Создал панель мониторинга в Telegram Mini App для отслеживания выручки и полисов в реальном времени — операционная команда проверяет показатели откуда угодно.

  • Владел всем моделированием данных — договора, транспортные средства, водители, комиссионные ставки, промокоды и кастомная модель пользователя, готовая для национального ID и OneID SSO.

Архитектура

Три приложения взаимодействуют друг с другом: витрина Next.js, обслуживающая клиентов на узбекском и русском языках, бэкенд Django REST, проксирующий вызовы к API каждого страховщика, и отдельная SPA-админка для операций. Каждый страховой провайдер живёт в собственном модуле на бэкенде, поэтому добавление нового не затрагивает существующих.

Под капотом

  • Атомарная покупка полиса с автоматическим откатом: создание договора оборачивает локальную запись в БД, вызов API страховщика и получение URL оплаты в одну транзакцию — если ссылка на оплату падает после того, как страховщик уже зарегистрировал полис, система откатывается и отправляет Telegram-уведомление вместо того, чтобы молча потерять продажу.

  • Движок комиссий и промокодов: брокерские проценты хранятся по компании и типу продукта, промокоды поддерживают как процентные, так и фиксированные скидки, привязанные к конкретным страховщикам с диапазоном дат действия — всё повторно проверяется в момент покупки, чтобы ничего не прошло устаревшим.

  • Аутентификация Telegram-дашборда по собственной спецификации HMAC initData Telegram — бэкенд проверяет криптографическую подпись и свежесть временной метки перед выдачей токенов, поэтому дашборд доступен только администраторам из белого списка.

Чему я научился

  • Интеграция нескольких сторонних API научила меня ожидать непоследовательности — у каждого страховщика были разные форматы ошибок, тайм-ауты и крайние случаи, которые появляются только под реальной нагрузкой.

  • Хранение интеграций провайдеров в отдельных модулях с первого дня означало, что я мог заменить или обновить один, не опасаясь сломать другие.

Технологии

Фронтенд (витрина + админка)

  • Next.js 16
  • React 19
  • TypeScript 5
  • Tailwind CSS 4
  • shadcn/ui
  • TanStack Query v5
  • next-intl

Бэкенд

  • Python 3.9
  • Django 4.2
  • Django REST Framework 3.14
  • djangorestframework-simplejwt
  • django-modeltranslation

Данные

  • PostgreSQL
  • Django ORM
  • pandas
  • openpyxl

Инфраструктура и инструменты

  • Docker
  • Nginx
  • Telegram Bot API
  • Gunicorn
  • Whitenoise