привет, рад тебя видеть

Адиль
Ялалов

Fullstack Python + TypeScript

~6 лет вожусь с кодом. Последние ~4 года тащу один большой продукт — и мне всё ещё нравится докапываться до того, как оно должно работать на самом деле.

Опыт

Repka

внутренний таск-трекер BIOCAD · ~ 4 года на одном продукте

Управление проектами и спринтами, Kanban- и Gantt-доски, тайм-трекинг, ролевая модель прав. Крупный монолит, 20+ доменов.

Единолично веду backend, вырос от backend-разработчика до fullstack, сейчас веду миграцию Django → FastAPI. Путь на проекте — ниже, как карточка на доске.

  • Python
  • Django
  • DRF
  • FastAPI
  • Celery
  • PostgreSQL
  • Redis
  • Neo4j
  • React
  • TypeScript
  • Docker
  • Keycloak

~4 года · 4 позиции

  1. 2Novabackendдек 2021 – апр 2023

    Цель: ядро таск-трекера на Django + DRF.

    • модель задач и бизнес-логика
    • комментарии, Celery-задачи
    • REST API досок и команд
    • интеграция с GitLab
  2. ИП · подрядчикfullstackапр 2023 – май 2025

    Цель: фронтенд редактора задачи и досок (React + TS).

    • редактор задачи
    • доски Kanban + Gantt, drag-n-drop
    • ускорил тяжёлые доски ~в 5 раз
  3. BIOCADfullstackК3май 2025 – апр 2026

    Цель: настраиваемые карточки досок + платформенные улучшения.

    • динамическая сборка задачи под карточки
    • оптимизации производительности
    • i18n
    • интеграция Keycloak
  4. BIOCADРазработчик полного циклаК4апр 2026 – наст. время

    Цель: миграция Django → FastAPI.

    • чистая архитектура, async SQLAlchemy 2.0, Pydantic 2
    • parity-тесты на совместимость API
    • постепенный перенос доменов — в работе

Ранее

  • :Dteam

    2020 – 2021

    Python web developer

    Создание и поддержка сайтов.

    • Python
    • Django
    • JS
    • SCSS
    • AWS
  • Фриланс

    2019

    Python developer

    Телеграм-боты.

    • Python
    • websocket
    • requests
  • Харакат

    2019

    программист Python

    Боты для Instagram по данным с сайта.

    • Python

Мини-кейс

Акт 1 · Проблема

Всё одним ответом

Все задачи доски приходили одним ответом; сортировка, группировка и фильтрация — на фронте. На старых командах это 3.5 MB в одном запросе.

Клиент шлёт 1 запрос — «все задачи доски». DevTools: 12,9 с сервер собирает ответ, 4,1 с качаем 3,5 MB, ещё ~3,5 с сортировка и отрисовка swimlanes — ~20 с до доски. После lazy load по swimlanes: 1,7 с + 0,6 с ≈ 2,3 с.

Акт 2 · Что сделал

Логика — на сервер

Перенёс группировку, сортировку и фильтрацию на бэкенд — сохранив всю прежнюю логику фронта.

Фильтры, группы и задачи больше не живут в браузере — куски доски по очереди улетают на сервер: сначала фильтры, потом заголовки групп, карточки из swimlanes и sort-колода. Браузер перестал сортировать — осталась только отрисовка готовых lane.

Акт 3 · Стало

Два запроса вместо одного

Сначала грузятся группы (swimlanes), сами задачи — по требованию.

Вместо одного тяжёлого «все задачи» — два лёгких шага: сначала клиент запрашивает список групп (на доске крутится загрузка), затем — задачи только для первой группы. Фильтры, группировка и поля карточки собираются на сервере (~100 задач, ~70 KB); клиент не сортирует колоду — рисует первый срез и показывает «Загрузить ещё». Остальные swimlanes догружаются отдельными запросами.

Акт 4 · Итог

До первого клика

Время до первого клика упало с 20 секунд до 2.

Обе доски стартуют одновременно. Слева — один тяжёлый ответ и sort на клиенте (~20 с до готовой доски). Справа — группы, затем срез первой swimlane (1,7 с + 0,6 с ≈ 2,3 с).

Навыки

  • Языки

    • Python
    • TypeScript
    • JavaScript
    • SQL
  • Бэкенд

    • Django
    • FastAPI
    • DRF
    • SQLAlchemy 2.0 (async)
    • Pydantic 2
    • Celery
    • чистая архитектура
  • Фронтенд

    • React
    • Ant Design
    • Kanban / Gantt-доски (drag-n-drop)
    • i18n
  • Базы / хранилища

    • PostgreSQL
    • Redis
    • Neo4j
  • Инфра / инструменты

    • Docker
    • Keycloak
    • GitLab CI
    • nginx
    • AI-агенты в разработке

Контакты

Открыт к интересным задачам и командам. Быстрее всего отвечаю в Telegram — пиши, обсудим.