Кейс
Iqbola — школьная ERP, где каждая школа является тенантом
Один продукт, который закрывает финансы, CRM, журнал, расписание, чат и документооборот для множества школ одновременно, не допуская утечки данных одной школы в другую.
- Роль
- Full-Stack разработчик, команда из 5
- Сроки
- Апр 2026 — настоящее время
- Локация
- Ташкент, Узбекистан
- Сайт
- iqbola.uz
- Стек
- FastAPIPostgreSQLSQLAlchemyAlembicCeleryRedisReactTypeScriptTanStack QueryZustandTailwindi18nextRecharts

Проблема
Школы живут на груде таблиц и бумаги: посещаемость в одном файле, оценки в другом, оплата и зарплата где-то ещё. Один продукт должен обслуживать много школ сразу и никогда не смешивать данные одной школы с другой, при этом все школы следуют одним национальным правилам оценивания и учебных периодов.
Что сделал
- Изоляция тенантов на PostgreSQL row-level security: её обеспечивает сама база данных, а не привычка добавлять WHERE. Поверх этого: RBAC, аутентификация по JWT, версионирование прав, которое инвалидирует устаревшие токены, и проверка доступа на каждом эндпоинте.
- Движок оценивания для двух параллельных систем: классической 5-балльной и 100-балльной критериальной. Обе питают одну и ту же агрегацию по четвертям и семестрам, с блокировкой периодов и правилами официального календаря, чтобы оценки нельзя было менять после закрытия четверти.
- Финансовые модули под ключ: зарплата, кассовые операции, бонусы и штрафы, подписки, транзакции и аналитические дашборды на Recharts.
- Большая часть супер-админского бэкофиса на React и TypeScript: 11 экранов по управлению тенантами, справочникам, тарифам, журналу аудита и статистике, плюс часть его бэкенда. Супер-админы подключают школы и управляют ими без помощи инженеров.
- Экраны фич в основном веб-приложении: журнал, финансы и расписание — на TanStack Query, Zustand, Tailwind CSS и i18next.
- Внутренний QA-пайплайн из AI-агентов, интегрированный с Jira, Confluence и Figma, который стандартизировал проверку требований и тестовую документацию.
Результат
- Одна платформа для финансов, CRM, журнала, расписания, чата и документооборота.
- Новые школы подключает администратор через бэкофис, без разработчика.
- Правила оценивания живут в одном движке, а не переписываются в каждом модуле.