BLM Agency
REC FR 01/08 · 00:00
01

Студия full-stack / Москва

BLM Agency

Сайты, веб-приложения и Telegram-боты — целиком, от базы данных до интерфейса.

Листайте — лента едет вбок
02

Хороший код незаметен

Его чувствуешь по тому, как всё работает — быстро, предсказуемо, без сюрпризов. Беру задачу целиком: данные, архитектуру, бэкенд и интерфейс.

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

— сначала работает, потом красиво, потом быстро

03

Что умею

Стек по слоям
01FrontendJavaScriptReactHTML/CSSCanvasАдаптив
02BackendPythonFastAPISQLAlchemyRESTWebSocket
03Bots/AppsaiogramMini AppsWeb App APIПлатежи
04Data/InfraPostgreSQLSQLiteRedisDockerNginx
04
Telegram · Commerce

Beatstore Bot

Бот для продажи битов: каталог, оплата, автоматическая выдача файлов, админка и аналитика. Ниже — рабочий макет диалога.

aiogramSQLAlchemyPayments
@beatstore_bot
# хендлер каталога битов@router.message(Command("beats"))async def catalog(msg: Message):    beats = await db.get_beats(limit=5)    kb = build_catalog_kb(beats)    await msg.answer("Свежие биты:", reply_markup=kb)# покупка → инвойс Telegram Payments@router.callback_query(F.data.startswith("buy:"))async def buy(cb): await send_invoice(cb)
05
Telegram · Mini App

«Компаньон»

Мини-приложение: геймифицированный to-do. Задачи дают опыт, опыт двигает уровень и серию. Отметьте пару задач — прогресс живой.

Mini AppWeb App APIJS
Уровень 3 · 40 / 100 XP
серия5
    // начисление опыта и уровеньfunction complete(task) {  state.xp += task.points;  if (state.xp >= state.need) {    state.level++;    state.need = Math.round(state.need * 1.4);  }  Telegram.WebApp.HapticFeedback    .notificationOccurred("success");  render();}
    06
    Web · Dashboard

    Аналитика продаж

    Дашборд для админки: динамика выручки и таблица треков. Кликните по заголовку столбца — сортировка живая.

    FastAPIReactSVG
    Выручка/30д
    ₽184K+12%
    Продаж
    312+8%
    Конверсия
    4.7%+0.3
    Трек Прослуш. Доход ₽
    # агрегат выручки по дням@app.get("/api/stats")async def stats(db = Depends(get_db)):    rows = await db.execute(        select(Sale.day, func.sum(Sale.amount))        .group_by(Sale.day)    )    return [{"day": d, "rev": r} for d, r in rows]
    07

    Как я работаю

    01

    Разобраться

    Сначала — задача и данные, а не фреймворк. Проектирую модель и границы слоёв, чтобы потом ничего не переписывать.

    02

    Собрать

    Бэкенд и фронтенд как одна система. Короткие итерации, честные состояния, никакой магии, которую нельзя объяснить.

    03

    Довести

    Скорость, детали, edge-кейсы. Передаю то, что переживёт нагрузку и правки — с документацией и без костылей.

    08

    Есть проект?
    Снимем.

    Сайт, веб-приложение, бот или мини-приложение — напишите, с чего начать. Отвечаю по делу и без воды.

    © 2026 BLM Agency — Москва Москва --:--:--
    Заставка
    00%