Заказчику нужна была система, в которой целая команда работает в одном месте, но при этом каждый видит только своё. Я сделал SaaS-платформу с тремя ролями — руководитель и две роли специалистов, — где у каждого свой интерфейс, права и данные. Руководитель держит всю команду, финансы и цены под контролем, специалисты ведут свою работу и смотрят аналитику по своим направлениям. Главная боль, которую это закрывает, — ручной учёт в таблицах и отсутствие прозрачности по доходам, расходам и ROI у команды, где данные одного человека не должны утекать к другому.
В основе — единая база на PostgreSQL, где доступ к данным раздаётся на уровне самой БД (Row Level Security), а не только в коде: один специалист физически не может прочитать данные другого, даже если бы захотел. Платформа сама подтягивает статистику из внешнего трекера по личному ключу каждого пользователя, причём эти ключи хранятся в зашифрованном виде и расшифровываются только на сервере. Чтобы не дёргать внешний сервис на каждый клик, статистика кэшируется в базе и обновляется фоновой синхронизацией по расписанию. Руководителю доступны живые дашборды с графиками, управление командой, история цен, финансовый учёт с расчётом ROI и экспортом в Excel, а также аудит-лог всех действий.
Получилась цельная система, готовая к продакшн-деплою: сборка, безопасность и Docker-упаковка доведены до боевого состояния, схема БД прошла через 28 последовательных миграций. На уровне безопасности заложены вещи production-уровня — шифрование чужих API-ключей, защита от CSRF, ограничение частоты запросов, security-заголовки и валидация всех входящих данных. Клиент получает решение, которое разворачивается на его собственном сервере через Docker одной командой, без привязки к чужим облакам и абонентским платам за сторонние сервисы.