Обязанности:
О продукте Разрабатываем SaaS-платформу для автоматизации рекрутмента с мультитенантной архитектурой, большим количеством внешних интеграций (джоб-борды, мессенджеры, ATS-системы) и AI-функциональностью на базе LLM. Развиваем продукт более 2 лет: это уже не пустой greenfield, но без тяжёлого legacy и с возможностью влиять на архитектурные решения. Кого ищем Strong middle fullstack-разработчика, который умеет самостоятельно брать задачу, уточнять спорные места, предлагать рабочее решение и доводить его до продакшена с ревью команды. Это роль для человека, которому комфортно работать на обеих сторонах стека: от API, фоновых задач и интеграций до UI, компонентов и дизайн-системы. Фокус между backend и frontend примерно поровну, с возможным перекосом в зависимости от спринта. Чем предстоит заниматься Разрабатывать фичи от API до UI — проектирование эндпоинтов, бизнес-логика на бэкенде, интерфейс на фронте Разрабатывать и поддерживать backend-сервисы на FastAPI: REST API, webhook-обработчики, фоновые воркеры Развивать и поддерживать ATS-приложение: новые фичи, рефакторинг, оптимизация Разрабатывать внутреннее приложение (back office) Участвовать в развитии внутренней библиотеки компонентов (ui-kit) и дизайн-системы Интегрироваться с внешними сервисами: джоб-борды, мессенджеры, ATS-системы, платёжные сервисы Работать с асинхронной логикой, очередями, ретраями и обработкой ошибок во внешних интеграциях Интегрировать фронтенд с REST API бэкенда (типы генерируются из OpenAPI-схемы) Писать unit- и интеграционные тесты Участвовать в code review и принятии технических решений Разбираться в существующей кодовой базе и аккуратно развивать её Поддерживать и улучшать инженерную среду: CI/CD (GitHub Actions + Docker), линтинг (Biome), Storybook Что для нас важно — Backend Python 3.11+ — уверенное владение языком, типизацией, Pydantic Асинхронное программирование — понимание event loop, async/await, конкурентности, корректная работа с таймаутами и отменами FastAPI / REST API — построение и поддержка API, dependency injection, middleware, версионирование, пагинация, обработка ошибок, аутентификация (JWT) MongoDB — уверенный практический опыт, понимание индексов, агрегаций и особенностей документоориентированной модели Redis — кэширование, очереди задач, базовые паттерны синхронизации Внешние интеграции — опыт работы с внешними API, webhook-ами, обработка ошибок интеграций Тестирование — pytest, unit- и интеграционные тесты Что для нас важно — Frontend React — hooks, Context API, lazy/Suspense, оптимизация рендеров, state management, роутинг, data fetching TypeScript — дженерики, discriminated unions, type guards, strict mode REST API — интеграция с бэкендом, работа с OpenAPI-схемами, OAuth-флоу (refresh-токены) CSS Modules + PostCSS — кастомные миксины, nesting, CSS-переменные как дизайн-токены, адаптивная вёрстка (без CSS-фреймворков) Vite — конфигурация, code splitting, оптимизация бандла Компонентные библиотеки — опыт работы с ui-kit или дизайн-системой Тестирование — Vitest, React Testing Library Что для нас важно — общее Docker — уверенная работа с контейнерами и Docker Compose Git / PR / code review — нормальная инженерная практика командной разработки AI-инструменты для разработки — готовность использовать AI-инструменты в ежедневной разработке Какой стиль работы нам подходит Внимательность к деталям — важна аккуратность, особенно в задачах, связанных с биллингом, интеграциями и мультитенантностью Системное мышление — понимание, как изменение на одной стороне стека влияет на другую: API-контракты, типы, воркеры, вебхуки Продакшен-мышление — умение разбираться в логах, ошибках интеграций и причинах инцидентов Самостоятельность — умение разбираться в задаче, принимать решения и доводить до результата Инициативность — не просто закрывать тикеты, а предлагать улучшения в архитектуре, DX, производительности Письменная коммуникация — основная коммуникация асинхронная: чёткие описания PR, внятные комментарии к задачам Ответственность за результат — доводить задачу до рабочего состояния: проверить, покрыть тестами, пройти проверки перед ревью Реалистичная оценка сроков — готовность заранее поднимать риски Условия Удалённая работа, полный рабочий день Оформление по ТК РФ Часовой пояс команды — МСК (UTC+3) Продуктовая разработка — реальные задачи с ощутимым влиянием на продук Влияние на архитектурные решенияПохожие вакансии