Senior Fullstack-разработчик (Python / FastAPI / React / TypeScript) at Федерация Футбола Казахстана in Астана. Skills: Architecture Design, Code Review, FastAPI, Integration Testing, PostgreSQL. Apply on NeverHard.
Company
Федерация Футбола Казахстана
Location
Астана
Type
full_time
Required skills:
Architecture Design
Code Review
FastAPI
Integration Testing
PostgreSQL
Python
React
Rest API
SQL
TypeScript
О роли IT-департамент Казахстанской федерации футбола развивает внутренний продукт для автоматизации и оптимизации процессов организации. Ищем Senior Fullstack Developer с сильной backend-экспертизой, который будет развивать серверную часть на Python и FastAPI, пользовательские интерфейсы на React и TypeScript, интеграции и архитектуру продукта. Предстоит работать со сложной бизнес-логикой, ролевой моделью доступа, большими объёмами табличных данных, фоновыми задачами и внутренними процессами федерации. Основные обязанности Разрабатывать и поддерживать REST API на Python и FastAPI и SPA на React и TypeScript. Реализовывать бизнес-логику, вычисления, проверки данных и ролевую модель доступа. Разрабатывать асинхронные операции и фоновые задачи. Создавать сложные формы и редактируемые таблицы с валидацией, вычисляемыми значениями и автосохранением. Реализовывать маршрутизацию и отображение интерфейса с учётом прав пользователя. Проектировать структуру PostgreSQL, писать и оптимизировать запросы, поддерживать миграции. Интегрировать продукт с брокерами сообщений, объектными хранилищами и внешними системами. Реализовывать безопасную загрузку, хранение и выдачу файлов. Интегрировать frontend с REST API, обрабатывать загрузку, кеширование, ошибки и повторные запросы. Оптимизировать производительность API, больших списков и таблиц. Писать unit-, integration- и компонентные тесты. Участвовать в проектировании архитектуры, декомпозиции задач и code review. Настраивать логирование и обработку ошибок. Участвовать в контейнеризации и базовых CI/CD-процессах. Поддерживать локализацию интерфейса. Что мы ожидаем Общий опыт Высшее техническое образование. Не менее 3 лет коммерческого опыта разработки web-приложений. Сильный опыт backend-разработки на Python и уверенный опыт frontend-разработки на React и TypeScript. Умение самостоятельно проектировать и реализовывать сложные задачи. Backend Уверенное знание Python: модель данных, type hints, коллекции, итераторы, генераторы, декораторы, контекстные менеджеры и обработка исключений. Понимание устройства CPython, управления памятью, reference counting и garbage collector. Уверенное знание asyncio: event loop, coroutines, tasks, futures, cancellation и обработка ошибок. Понимание конкурентности, параллелизма, I/O-bound и CPU-bound задач. Практический опыт разработки REST API на FastAPI. Уверенное знание Pydantic v2 и проектирования API-контрактов. Хорошее понимание REST, HTTP, JSON, кодов ответа, идемпотентности и OpenAPI. Уверенное знание PostgreSQL и SQL: схемы, индексы, транзакции, блокировки и планы запросов. Практический опыт с SQLAlchemy 2.x и Alembic. Опыт реализации JWT-аутентификации, ролей и проверки прав. Практический опыт с Celery и RabbitMQ и/или Redis. Понимание retries, идемпотентности и обработки неуспешных фоновых задач. Опыт работы с Amazon S3, MinIO или другими S3-совместимыми хранилищами. Понимание безопасной загрузки и выдачи файлов. Frontend Уверенное знание JavaScript и TypeScript, включая generics, utility types и discriminated unions. Хорошее знание React: компоненты, хуки, управление состоянием и особенности рендеринга. Опыт разработки SPA с React Router и Vite. Уверенное владение HTML и CSS. Опыт работы с Tailwind CSS и shadcn/ui. Понимание принципов построения переиспользуемых компонентов. Практический опыт с TanStack Query. Опыт работы с TanStack Table или аналогичными headless-решениями. Умение реализовывать редактирование и валидацию ячеек, вычисляемые строки и клавиатурную навигацию. Опыт разработки сложных форм с React Hook Form и Zod. Умение находить лишние ререндеры и оптимизировать большие списки и таблицы с помощью мемоизации и виртуализации. Понимание accessibility и адаптивной верстки. Тестирование и качество кода Опыт написания unit- и integration-тестов с pytest. Опыт тестирования FastAPI и асинхронного кода с pytest-asyncio или AnyIO и HTTPX. Опыт работы с Vitest и React Testing Library. Понимание ООП, функционального программирования, SOLID, композиции, модульности и immutability. Уверенное использование type hints, статической проверки типов, линтинга и форматирования. Практический опыт с Ruff и mypy либо аналогами. Инструменты и инфраструктура Опыт работы с pyproject.toml, uv или Poetry. Знание Node.js на уровне пакетных менеджеров, скриптов, зависимостей и сборки. Уверенная работа с Git и участие в code review. Практический опыт с Docker и Docker Compose. Умение писать Dockerfile, использовать multi-stage build, переменные окружения, networks, volumes и health checks. Базовое понимание CI/CD: линтинг, тестирование, сборка Docker-образов, миграции и развертывание. Безопасность и коммуникация Базовое понимание безопасности web-приложений и API: XSS, CORS, SQL injection, JWT, валидация данных и контроль доступа. Грамотная письменная и устная речь на русском языке. Английский язык на уровне чтения технической документации. Будет преимуществом Опыт работы в продуктовых IT-командах или крупных организациях. Опыт с Apache Kafka и event-driven архитектурой. Опыт использования Testcontainers. Опыт применения raw SQL или asyncpg для сложных запросов. Опыт генерации PDF- и XLSX-документов в фоновых задачах. Опыт настройки логирования, мониторинга, метрик и distributed tracing. Опыт разработки систем с аудитом изменений и чувствительными данными. Опыт работы с Playwright, Redux Toolkit или Node.js. Опыт генерации типизированного API-клиента по OpenAPI. Опыт разработки мультиязычных приложений и работы с i18n. Опыт развития дизайн-систем и интерфейсов с большим объёмом табличных или финансовых данных. Условия Официальное трудоустройство в городе Астана. Испытательный срок - 3 месяца. Заработная плата обсуждается по итогам собеседования. Квартальные премии в размере одного месячного оклада. Техническое собеседование проводится офлайн в офисе. Для кандидатов, которые покажут уровень выше ожиданий на техническом этапе, готовы рассмотреть индивидуальные условия по заработной плате.