Проекты
2026

BMI

Полноценная система мониторинга подземных вод (репозиторий называется BMI, но к индексу массы тела отношения не имеет): FastAPI и React/TypeScript. Отслеживает уровень воды и химическое качество в скважинах относительно норм ВОЗ, с интерактивной картой, автоматическими оповещениями и прогнозом на 30 дней.

Год
2026
Направление
Бэкенд
Экраны
4

Обзор

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

Каждое измерение фиксирует девять параметров: уровень и давление воды, а также минерализацию, нитраты, сульфаты, железо, свинец, цинк и медь. У семи из них есть референсный предел ВОЗ, и измерение, вышедшее за него, сразу поднимает оповещение, которое остаётся открытым, пока кто-нибудь его не закроет. Пороговые значения живут в конфигурации, а не разбросаны по коду.

Поверх истории каждая скважина получает прогноз на 30 дней от модели ARIMA. Прогноз и аналитика, на которой он строится, самые дорогие эндпоинты, поэтому оба кешируются в Redis на пять минут: дашборд остаётся отзывчивым и не пересчитывает модель при каждой загрузке страницы.

Бэкенд написан на Python 3.13 и FastAPI с той же слоистостью, что и остальные мои проекты: роутеры, сервисы, репозитории, PostgreSQL. Каждый запрос получает ровно одну AsyncSession из зависимости, которая сама делает commit или rollback на выходе, поэтому обработчикам не нужно помнить про транзакции. Двадцать интеграционных тестов идут против настоящей базы PostgreSQL, а не против мока.

Фронтенд на React 18 и TypeScript: Leaflet для карты скважин и Recharts для графиков динамики. Измерения вносятся по одному через интерфейс или массово из CSV и Excel, а поскольку сотрудники, которые их вносят, работают на узбекском, импортёр принимает и узбекские заголовки столбцов, и английские.

Ключевые моменты

Оповещения по нормам ВОЗ

Девять параметров на скважину; семь с референсным пределом ВОЗ поднимают оповещение в момент выхода за границу.

Прогноз ARIMA на 30 дней

Прогноз по каждой скважине кешируется в Redis на пять минут вместе с аналитикой, на которой он строится.

Дашборд на основе карты

Карта Leaflet со всеми скважинами и графики Recharts с историей по каждой из них.

Массовый импорт

Загрузка CSV и Excel по каждой скважине, импортёр понимает и узбекские заголовки столбцов.

Одна сессия на запрос

Зависимость выдаёт одну AsyncSession и автоматически делает commit или rollback.

Проверено на настоящем Postgres

Двадцать интеграционных тестов на скважины, измерения, оповещения, аналитику, прогноз и дашборд.

Стек

FastAPIReactTypeScriptPostgreSQLRedis