0коммитов в Zapisly за 3 месяца
0строк Python в продакшне
0тестовых файлов, тесты в CI
0миграции базы данных
О себе
Пишу backend на Python и умею довести проект до работающего в интернете продукта:
спроектировать данные, подключить платежи, поднять сервер, настроить CI/CD и разобраться,
почему в четыре утра отвалился вебхук.
Большой объём в одиночку получается за счёт выстроенного AI-ассистированного
процесса: спецификация → план → отдельная ветка → реализация → тесты в CI →
автодеплой. ИИ забирает генерацию и рутинный рефакторинг; архитектурные решения, отладку
продакшна и разбор инцидентов оставляю за собой. Под каждый проект держу файл правил для
ассистента и ставлю технические предохранители — например, git-хук, который не даёт
случайно запушить в main.
Есть опыт коммерческой работы на заказ — сайт для сервиса 3D-печати. В команде разработки
пока не работал, и иду именно за этим: за код-ревью от сильных инженеров и практикой в
большой чужой кодовой базе.
Проекты
Zapisly
в продакшне
приватный репозиторий
SaaS-платформа онлайн-записи · автор и единственный разработчик · май 2026 — сейчас
Мульти-тенантная платформа для записи клиентов на услуги: Telegram-бот, REST API и
Telegram Mini App. Развёрнута на VPS, работает в продакшне с реальными пользователями.
- Backend: FastAPI и aiogram 3 — 39 доменных моделей, 40 сервисов бизнес-логики, около 45 000 строк Python
- Данные: PostgreSQL через SQLAlchemy 2 async и asyncpg, 84 миграции Alembic, Redis и Celery для фоновых задач и отложенных уведомлений
- Мульти-тенантность: изолированные данные бизнесов на одной платформе плюс режим собственного бота для клиента на premium-тарифе
- Платежи: YooKassa и интеграция с ФНС «Мой налог» — автоматические чеки для самозанятых
- Интеграции: двусторонняя синхронизация с Google Calendar по OAuth 2.0, генерация iCalendar-фидов, QR-коды для офлайн-точек
- Mini App: React 18 + Vite + Tailwind, 91 компонент — запись клиента и кабинет мастера внутри Telegram
- Предметная логика: расчёт свободных слотов с учётом смен и отпусков, лист ожидания, лояльность и штамп-карты, промокоды, пакеты визитов, реферальные программы, зарплаты мастеров, финансовый учёт, админ-панель с аудит-логом
- Качество и деплой: 112 тестовых файлов на pytest, CI поднимает реальные PostgreSQL и Redis на каждый push; деплой — push в
main → тесты → доставка на сервер → миграции автоматом. Крон-бэкапы БД с ротацией, Sentry
Задача, которой я горжусь: DPI-блокировки Telegram в России
Бот терял большинство запросов к Telegram. Разобрался и починил: webhook переехал на
www-субдомен за Cloudflare-прокси, потому что Telegram надолго кеширует IP апекс-хоста
и не подхватывал смену адреса; внутри контейнера закрепил IP api.telegram.org,
так как обычный DNS отдавал IPv6 без маршрута; на исходящие запросы добавил ретраи
сетевых сбоёв. Бот стал работать стабильно.
Python 3.12FastAPIaiogram 3
SQLAlchemy 2 asyncPostgreSQLRedis
CeleryAlembicReact
ViteTailwindDocker
nginxGitHub ActionsCloudflare
Sentrypytest
3D Marketplace
приватный репозиторий
Маркетплейс моделей для 3D-печати · fullstack · апрель 2026
Площадка для публикации и продажи STL-моделей с просмотром прямо в браузере.
- Backend на FastAPI и SQLAlchemy async, авторизация на JWT, Celery для обработки загруженных файлов
- Просмотр STL-моделей в браузере на Three.js и React Three Fiber, загрузка drag-n-drop
- Next.js 14 с TanStack Query и Zustand, двуязычный интерфейс RU/EN на i18next
- End-to-end тесты на Playwright, включая отдельный аудит 3D-вьюера и превью моделей
- Юридическая база площадки: пользовательское соглашение, политика конфиденциальности, DMCA-политика и форма жалобы на двух языках
- Развёртывание: Docker Compose, nginx, скрипт деплоя со сборкой на локальной машине
FastAPIPostgreSQLCelery
JWTNext.js 14TypeScript
Three.jsPlaywrightDocker
код — по запросу
Scan & Print
в продакшне
открытый код
Корпоративный сайт сервиса 3D-печати · frontend · коммерческий заказ · апрель — май 2026
Сайт для действующей компании 3D-печати и сканирования (Пенза, на рынке с 2018 года):
каталог услуг, портфолио работ, блог, приём заявок. Работа по заказу клиента.
95 коммитов, около 5 000 строк TypeScript.
- Next.js 16 и React 19 на TypeScript, стилизация на Tailwind CSS 4
- Динамические маршруты для услуг, кейсов портфолио и статей блога
- 3D-элементы на Three.js и React Three Fiber, анимации на GSAP и Motion
- Форма заявки: React Hook Form с валидацией через Zod, отправка письма через nodemailer
- SEO: программная генерация
sitemap.xml и robots.txt, микроразметка FAQ
Next.js 16React 19TypeScript
Tailwind 4Three.jsGSAPZod
Music Player
открытый код
Десктопный аудиоплеер · Python и PySide6 · июнь 2026
Плеер на 5 500 строк с честной архитектурой MVVM — модели, сервисы, viewmodel'ы и
представления разделены, а не свалены в один файл.
- Локальная библиотека: сканирование папок, чтение метаданных через mutagen, обложки альбомов
- Интеграция с Яндекс.Музыкой по OAuth (device code flow)
- Интернет-радио с каталогом станций, плейлисты, очередь воспроизведения
- Поиск по мере набора, режимы повтора и перемешивания, светлая и тёмная темы
- GitHub Actions собирает бандл PyInstaller и установщик для Windows через Inno Setup
PythonPySide6mutagen
PyInstallerInno SetupGitHub Actions
Парсеры 2ГИС
открытый код
Сбор данных · Python · февраль — март 2026
Парсеры карточек организаций из 2ГИС по городу и области: контакты, адреса,
категории — в структурированную выгрузку для дальнейшей работы.
- Браузерная автоматизация с обходом ленивой подгрузки списка и пагинации
- Headless-режим для запуска на сервере без графической оболочки
- Отдельные сценарии для города и для области, устойчивые селекторы ссылок
PythonSeleniumheadless
Бот рассылки коммерческих предложений
открытый код
Автоматизация продаж · Python · февраль 2026
Холодная e-mail-рассылка по базе организаций, собранной парсером 2ГИС: очередь из Excel,
отправка по расписанию, разбор ответов SMTP и отчёты в Telegram.
- Защита от блокировки: одно письмо за проход с паузой 4–6 минут, экспоненциальный бэкофф на спам-отказах и кулдаун после трёх подряд
- Статусы вместо памяти: результат каждой отправки пишется в базу, падение процесса не теряет прогресс и не создаёт дублей
- Разбор ошибок SMTP: несуществующий адрес закрывается навсегда, таймаут возвращается в очередь отдельным скриптом
- Целостность данных: flock на файле базы и атомарная запись — параллельный отчёт не прочитает половину файла
Pythonsmtplibpandas
Telegram Bot APIflock