Страховой маркетплейс
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

