Vista del currículum
Junior Desarrollador Python
1000 $
RusiaMoscú
Tiempo completoTrabajo remoto
Experiencia laboral
6 meses
Último empleo
ИП Рубцов Андрей Сергеевич
Backend-разработчик
6 meses
Sobre ti
Sobre ti
Студент Университета МИСИС, развиваюсь в backend-разработке. Самостоятельно реализовал и развернул рабочую систему автоматизации Telegram-магазина: асинхронный API, бот, веб-админка, PostgreSQL, Redis, платежи и синхронизация с каналом. Интересуюсь проектированием API, надежностью, транзакциями и распределенными системами.
ОПЫТ
ИП Рубцов Антон Андреевич, КросСтокс - Backend-разработчик, проектная работа | единственный разработчик 02.2026 - 07.2026
• Разработал по техническому заданию систему продаж через Telegram: backend на FastAPI, бот на aiogram и административную панель на React.
• Спроектировал модели PostgreSQL и миграции SQLAlchemy/Alembic; реализовал каталог, корзину, роли, промокоды, оформление заказов и единый жизненный цикл заказа.
• Применил Redis для корзин, резервирования остатков и идемпотентности платежных операций; использовал транзакции и блокировки строк для защиты от одновременной продажи последнего товара.
• Интегрировал синхронизацию ассортимента с Telegram-каналом через Telethon, криптоплатежи и СБП, уведомления и обработку статусов доставки.
• Контейнеризировал сервисы с Docker Compose, развернул проект в Yandex Cloud и добавил тесты для платежей, резервов, парсинга размеров и синхронизации канала.
Experiencia en afiliación
No hay datos disponibles
Experiencia laboral6 meses
Febrero 2026 - Julio 2026
(6 meses)
ИП Рубцов Андрей Сергеевич
Backend-разработчик
Я самостоятельно разрабатывал систему автоматизации продаж кроссовок через telegram. проект включал backend, клиентского telegram-бота, веб-панель администратора, базу данных, интеграцию с telegram-каналом, обработку заказов и платежей, а также развёртывание всей системы на удалённом сервере.
backend и архитектура
серверную часть я разрабатывал на python и fastapi. проектировал rest api, разделял код на роутеры, сервисы, модели и отдельные модули бизнес-логики. для работы с базой данных использовал postgresql, async sqlalchemy и alembic, а для временных данных, корзины, блокировок и защиты от повторной обработки событий — redis.
я создавал модели пользователей, товаров, размеров, остатков, корзин, заказов, позиций заказа, резервов и платежей. также настраивал связи между таблицами, миграции базы данных, транзакции и блокировку записей при конкурентных запросах.
каталог товаров и telegram-канал
система была связана с telegram-каналом магазина. я реализовал получение и обработку публикаций через telethon: данные из постов преобразовывались в товары, сохранялись в базу и становились доступны в боте и административной панели.
обрабатывал название товара, описание, фотографии, цену, размеры и остатки. также реализовал обновление существующих публикаций и изменение информации о доступности товара. когда товар заканчивался, система могла изменить его состояние и синхронизировать это с каналом.
telegram-бот
клиентского бота разрабатывал на aiogram. через него пользователь мог:
* просматривать каталог;
* открывать карточку товара;
* выбирать размер;
* добавлять товар в корзину;
* изменять количество или удалять позиции;
* оформлять заказ;
* получать информацию об оплате;
* отслеживать изменение статуса заказа;
* получать уведомления от магазина.
я продумывал пользовательские сценарии и состояния бота, обрабатывал нажатия кнопок, ошибки, повторные запросы и ситуации, когда товар закончился уже во время оформления.
корзина, заказы и резервы
одной из основных задач была надёжная логика оформления заказа. я реализовал корзину, создание заказа и временное резервирование товара, чтобы выбранный размер не был продан одновременно нескольким покупателям.
при оформлении система проверяла наличие товара, блокировала нужные записи в базе и создавала резерв на ограниченное время. если пользователь не оплачивал заказ, резерв освобождался, а товар снова становился доступен. после успешной оплаты резерв подтверждался и остаток окончательно списывался.
для заказов я реализовал систему статусов и допустимых переходов между ними. например, заказ не мог случайно перейти из начального состояния сразу в доставленный. вся логика переходов была вынесена в отдельный сервис, чтобы разные части приложения не меняли статусы независимо друг от друга.
платежи
я разрабатывал обработку платежей и проверку их статусов через внешние api. особое внимание уделял защите от повторной обработки одного и того же платежа.
для этого использовал идентификаторы транзакций, блокировки и ключи идемпотентности в redis. даже если уведомление о платеже приходило несколько раз, система не должна была повторно подтверждать заказ, списывать остаток или отправлять одинаковые уведомления.
также обрабатывал пограничные случаи: недостаточная сумма, повторный платёж, задержка ответа внешнего сервиса, ошибка сети и оплата уже отменённого заказа.
административная панель
для сотрудников магазина была создана веб-панель, через которую можно было управлять товарами, остатками, заказами и пользователями.
я связывал административную панель с backend api, добавлял операции создания и редактирования товаров, изменения статусов заказов, просмотра информации о покупателе и управления остатками. изменения из панели сохранялись в базе и передавались другим компонентам системы.
фоновые задачи и события
для операций, которые не должны были выполняться прямо внутри пользовательского запроса, я использовал фоновые сервисы и таблицу событий outbox.
например, после оплаты заказа создавалось событие, которое затем обрабатывал отдельный worker: отправлял уведомление пользователю, обновлял информацию в telegram-канале и запускал другие необходимые действия. это позволяло не терять события при временных ошибках внешних сервисов и повторять обработку при необходимости.
тестирование и поиск ошибок
я самостоятельно проверял основные сценарии системы:
* добавление товара в корзину;
* оформление заказа;
* одновременную покупку одного размера разными пользователями;
* истечение срока резерва;
* успешную и неуспешную оплату;
* повторное получение уведомления о платеже;
* изменение статусов;
* работу после перезапуска сервисов;
* сохранность данных при обновлении проекта.
ошибки искал через логи приложений, docker logs, journalctl, запросы к базе данных и ручную проверку api через curl и swagger. исправлял проблемы с асинхронным кодом, транзакциями, конкурентным доступом, конфигурацией контейнеров и внешними интеграциями.
docker и развёртывание
все компоненты проекта собрал в контейнер с помощью docker. отдельно работали backend, telegram-бот, административная панель, postgresql, redis, фоновые worker-процессы и сервис прослушивания telegram-канала.
я писал и настраивал dockerfile и docker compose, подключал volumes, сети, переменные окружения, restart-политики и health-checks. проект был перенесён с локального компьютера на виртуальный сервер в yandex cloud с ubuntu server.
на сервере я настраивал ssh-доступ, firewall, docker, swap, переменные окружения, резервное копирование базы и файлов, прокси для доступа к telegram и автоматический запуск сервисов после перезагрузки.
результат работы
в результате я собрал полноценную работающую систему, которая автоматизировала публикацию и учёт товаров, работу каталога, оформление заказов, резервирование остатков, приём платежей, уведомления пользователей и управление заказами через административную панель.
проект работал на удалённом сервере автономно, без необходимости держать включённым мой компьютер. основная ценность системы заключалась в сокращении ручной работы сотрудников, снижении риска двойной продажи товара и объединении telegram-канала, бота, базы данных, платежей и административной панели в единый процесс.
Habilidades
pytest
alembic
Python
Java
API
FastAPI
SQL
Docker
Git
GitHub
PostgreSQL
Bash
Refactorización
Asignación de tareas a empleados
Optimización de código
Dominio de idiomas
Avanzado Inglés
Nativo Ruso
Tipo de empleo
Tipo de empleo
Tiempo completo, Tiempo parcial, Por proyecto
Formato de trabajo
Trabajo remoto
Horario de trabajo
Flexible, Por turnos, 5/2
Reubicación
Posible
Viajes de trabajo
Viajes posibles