EcoMap
Жители Узбекистана отмечают экологические нарушения на карте с фото и геометкой — а операторы видят их в течение минут.
EcoMap — это civic-tech платформа для сообщений о нарушениях. Любой может поставить метку на карте города, приложить фото нарушения и следить за делом до его решения. Telegram-бот отвечает за авторизацию и уведомляет нужных операторов; админ-консоль держит очередь под контролем.
Построено в одиночку за две итерации — v1 на Supabase, затем полная переписка на self-hosted монорепозитории Bun · Elysia · Drizzle · Better Auth. Миграция — главная техническая история: осознанный уход от привязки к BaaS к собственному стеку, который я контролирую от края до края.
Что он умеет
5 сигналов
- 01 · КартаОтчёты с меткой и фото на карте Leaflet
Граждане ставят метку, прикладывают фото, описывают нарушение. У каждого отчёта есть страница с медиа, локацией и кнопкой «Помочь решить». Геометки нормализуются на сервере; изображения проходят через sharp перед хранением.
- 02 · АвторизацияАвторизация через Telegram в вебе
Вход через Telegram-бота с помощью postMessage + кросс-доменной сессионной cookie. Флоу обрабатывает дубли аккаунтов, синхронизирует данные профиля Telegram в локальную запись пользователя и использует USE_SECURE_COOKIES вместо NODE_ENV для продакшн-поведения.
- 03 · СтекТипобезопасный fullstack через Eden Treaty
API на Elysia.js экспортируется в Next.js-клиент через Eden Treaty — сквозные типы без codegen. Один источник истины для форм запроса и ответа; рефакторинги распространяются по всем четырём приложениям монорепозитория.
- 04 · ДжобыФоновая обработка вне HTTP-пути
Отдельное приложение джобов обрабатывает деривативы фото, AI-категоризацию и Telegram-уведомления через очередь. Долгие задачи вынесены из цикла запроса; очередь работает под systemd.
- 05 · i18nТрёхъязычный UX с первого дня
Русский, узбекский и английский — first-class; next-intl обеспечивает локаль-aware маршрутизацию, и есть явный фикс краевого случая с бесконечным редиректом, в который часто попадают BaaS-адаптеры.
Стек
Домен ecomap.uz зарезервирован; публичный запуск и build-in-public разбор миграции Supabase → монорепозиторий стоят в очереди. Напишите, если хотите разбор кода.
Открыт к ролям Senior / Staff инженера и избранному фрилансу — продакшн-AI, платформы и full-stack разработка.
Связаться