All products
I. Personal Ventures & FrameworkActiveSoloBuild-in-public

EcoMap

Residents of Uzbekistan pin ecological violations on a map with a photo and a geotag — and operators see them within minutes.

41.3°N69.3°ETashkentcivic-tech
What it is

EcoMap is a civic-tech reporting platform. Anyone can drop a marker on the city map, attach photos of the violation, and follow the case until it's resolved. A Telegram bot handles authentication and notifies the relevant operators; an admin console keeps the queue under control.

Built solo across two iterations — a v1 on Supabase, then a full rewrite on a self-hosted Bun · Elysia · Drizzle · Better Auth monorepo. The migration is the technical story: deliberate move off BaaS lock-in to an in-house stack I control end-to-end.

§01

What it does

5 signals

  1. 01 · Map
    Pin-and-photo reporting on a Leaflet map

    Citizens drop a marker, attach photos, describe the violation. Each report has a detail page with media, location and a 'Help solve' affordance. Geotags are normalised on the server; images run through sharp before storage.

  2. 02 · Auth
    Telegram authentication on the web

    Login via the Telegram bot using postMessage + a cross-origin session cookie. The flow handles duplicate accounts, syncs Telegram profile data into the local user record, and uses USE_SECURE_COOKIES rather than NODE_ENV for production behaviour.

  3. 03 · Stack
    Type-safe fullstack via Eden Treaty

    Elysia.js API exported into the Next.js client through Eden Treaty — end-to-end types without codegen. One source of truth for request and response shapes; refactors propagate across the four apps in the monorepo.

  4. 04 · Jobs
    Background processing off the HTTP path

    A dedicated jobs app processes photo derivatives, AI categorisation and Telegram notifications via a queue. Long-running work is moved off the request cycle; the queue is run under systemd.

  5. 05 · i18n
    Trilingual UX from day one

    Russian, Uzbek and English are first-class — next-intl drives the locale-aware routing and there's an explicit fix for the infinite-redirect edge case BaaS adapters tend to hit.

§02

Stack

Languages
TypeScriptSQL
Frameworks · Infra
Next.js 16React 19Elysia (Bun)Eden TreatyDrizzle ORMPostgreSQLBetter AuthgrammY (Telegram)sharpnext-intlRedisTurborepo
Note

Domain ecomap.uz is held; public launch and a build-in-public write-up of the Supabase → monorepo migration are queued. Reach out if you'd like a code walk-through.

Currently

Open to Senior / Staff engineering roles and selective freelance — production AI, platform, and full-stack work.

Get in touch