Fullstack-разработчик
РоссияСтажер • Джуниор • Миддл
Удаленная работа
Опыт работы от 1 года до 3х лет
Опыт работы от 1 года до 3х лет
Короткая ссылка: gkjb.ru/g18LH
О себе
На данный момент Fullstack-разработчик.
Мои компетенции и опыт
Пет-проекты
Разрабатываю агрегатор IT-вакансий (Python, NestJS, нужен доступ к резюме , PostgreSQL, Redis, BullMQ).
- Выстроил асинхронный пайплайн обработки вакансий: Источник → Python Parser → Redis/BullMQ → NestJS Worker → PostgreSQL → NestJS API → нужен доступ к резюме
- Реализовал сбор вакансий из двух источников с приведением к единому формату (JSON Schema, Pydantic, TypeScript), валидацией, очисткой HTML и обработкой ошибок.
- Реализовал постоянно работающий asyncio-сервис обновления вакансий с независимым расписанием источников: сбой одного источника не влияет на другой.
- Обеспечил надёжность обновлений: идемпотентный учёт необработанных вакансий (Redis + Lua), состояния запусков в PostgreSQL, автоматическое снятие устаревших вакансий с публикации в одной транзакции.
- Реализовал дедупликацию вакансий между источниками (нормализация и сопоставление под advisory-блокировкой PostgreSQL): одна вакансия показывает все свои активные источники.
- Разработал REST API и интерфейс списка вакансий с пагинацией и обработкой состояний загрузки и ошибок.
- Написал 680+ автотестов (pytest, Vitest, Testcontainers), включая e2e на реальных PostgreSQL и Redis, описал политику тестирования (что и на каком уровне проверяется) и реализовал объединённый отчёт покрытия backend по unit и e2e. Покрытие: parser 99%, backend 97%, frontend 99%.
- Настроил CI, который проверяет типы, стиль, сборку, тесты и покрытие на каждый pull request за 2-3 минуты: ошибки находятся до слияния, сборки воспроизводимы (lock-файлы с хэшами).
- Описал модель безопасности, закрыл оповещения по зависимостям и добавил в CI автоматическое сканирование секретов и статический анализ кода.
- Использую GitHub Projects и Scrum-подход: завершил три спринта, провёл ретроспективы, запустил четвёртый.
Исходный код в приватном репозитории, доступ для технического ревью предоставляется по запросу.
Проектная деятельность
- Адаптивная карточка товара для интернет-магазина Teaboom (HTML + SCSS + TypeScript). Реализовал выбор 4 вариантов фасовки с динамическим обновлением артикула и цены, интерактивную кнопку добавления товара в корзину и модальное окно изображения. Адаптировал интерфейс под 3 целевых разрешения: 1440, 768 и 375 px. Добавил клавиатурную навигацию, focus-visible, aria-label, aria-pressed и поддержку prefers-reduced-motion. Настроил ESLint, Stylelint и Prettier, обеспечил безопасный вывод данных через textContent без использования innerHTML.
- Платформа обмена навыками (React + NestJS, команда 9 человек). Разработал фронтенд на React + Redux Toolkit с адаптивными интерфейсами и кастомными хуками, бэкенд с REST API, JWT-аутентификацией, WebSocket-уведомлениями в реальном времени и загрузкой файлов. Обеспечил тестами (Vitest, Jest) более 90% покрытия для хуков и утилит, что минимизировало регрессионные ошибки при рефакторинге. Настроил e2e-тестирование с изолированной БД, контейнеризацию (Docker) и CI/CD пайплайны, сократив время развертывания среды до 2-3 минут.
Фронтенд: нужен доступ к резюме
Бэкенд: нужен доступ к резюме
- REST API социальной платформы (Django + DRF). Реализовал CRUD для постов, групп и комментариев с токеновой аутентификацией и кастомными правами доступа. Применил select_related для оптимизации запросов, что устранило проблему N+1. Защитил критичные поля через read-only сериализаторы, исключив возможность подмены владельца контента.
- Асинхронный бэкенд для благотворительного фонда (FastAPI + SQLAlchemy 2.0). Разработал API с JWT-аутентификацией и ролевой моделью, реализовал автоматическое FIFO-распределение пожертвований с транзакционной целостностью, что исключило ошибки двойного списания средств. Реализовал разделение на API, CRUD и сервисный слои, настроил миграции БД через Alembic. Применил строгую типизацию (mypy, без any) и Pydantic v2, защитив API от передачи лишних полей.
Производство
Инженер, начальник бюро
Руководил командой 5–8 человек, составлял планы работ и отчеты, контролировал сроки.
Развил навыки системного мышления, деловой переписки и переговоров.
