АПИСЕРВИС

Backend-разработчик (Node.js + TypeScript)

Не указана
  • Курск
  • От 3 до 6 лет

Кто нам нужен:

Backend-разработчик на Node.js + TypeScript. Проекты сложнее обычных REST-CRUD’ов: реляционные БД с десятками связанных сущностей, фоновые очереди, WebSocket в реальном времени, множественные интеграции (платежи, SMS, OAuth, мессенджеры), RBAC, файловые загрузки и обработка медиа.
Ищем человека, который понимает Node.js как платформу, а не “JS+express”.

Обязанности:

  • Развивать существующий backend на Node.js + TypeScript + Express.
  • Проектировать схему БД и миграции (MySQL/PostgreSQL).
  • Писать слой бизнес-логики и API: REST + WebSocket.
  • Делать фоновые задачи через очереди (BullMQ / RabbitMQ / аналог).
  • Интегрировать внешние сервисы: платёжные шлюзы, SMS/Email-провайдеры, OAuth-провайдеры, мессенджеры.
  • Поддерживать RBAC (роли, права на сущности).
  • Работать с медиа: загрузки, ресайз, валидация.
  • Деплой: Docker / pm2 / systemd, мониторинг, разбор инцидентов в проде.
Требования:
  • Обязательно

  • Node.js + TypeScript – 3+ года практики на проде. Не “после курсов”.
  • Express или Fastify / NestJS – любой из основных HTTP-фреймворков на проде.
  • TypeScript – понимание generics, conditional/mapped types, discriminated unions; умение читать сложные сигнатуры.
  • Реляционные БД – MySQL или PostgreSQL. Уметь читать EXPLAIN, понимать индексы, JOIN’ы, транзакции, уровни изоляции.
  • ORM / query builder – Prisma, TypeORM, Sequelize, Knex или аналог. Понимание, когда ORM мешает и нужен сырой SQL.
  • Redis – как кэш, очередь, pub/sub. Понимание TTL, persistence, eviction policies.
  • Очереди задач – BullMQ, RabbitMQ, Kafka или аналог. Идемпотентность, ретраи, dead-letter.
  • WebSocket / Socket.io – реальный опыт, понимание масштабирования (sticky sessions, Redis-адаптер).
  • REST API – проектирование, версионирование, валидация входных данных (Yup, Zod, Joi).
  • Аутентификация – JWT, сессии, OAuth, refresh-токены. Понимание, где что хранить и почему.
  • Git – ветки, мержи, ребейзы, разрешение конфликтов.
  • Английский – технический, на чтение.
  • Желательно

  • Passport.js или другая библиотека стратегий аутентификации.
  • Опыт интеграции с OAuth-провайдерами (Google, VK, Yandex, Telegram-login и т.п.).
  • Платёжные интеграции – Сбербанк-эквайринг, Тинькофф, Stripe, ЮКасса и подобное. Понимание трёхдоменной авторизации, чарджбэков, чеков ОФД.
  • Файловые загрузки – multer / busboy, S3-совместимые хранилища, обработка больших файлов.
  • Sharp или другая библиотека ресайза изображений; работа с EXIF.
  • Docker / docker-compose, базовое понимание Linux на сервере.
  • CI/CD – GitLab CI, GitHub Actions; pipeline’ы для тестов и деплоя.
  • Логирование и мониторинг – Winston/Pino, structured logs, Sentry, Grafana/Loki.
  • Тестирование – Jest, Vitest; unit, integration, end-to-end.
  • Будет плюсом

  • Опыт с NestJS – DI-контейнер, модульная архитектура.
  • gRPC или GraphQL на проде.
  • Микросервисы: gRPC, message brokers, service discovery.
  • Безопасность: OWASP Top 10, защита от SSRF/SQLi/XSS, rate limiting, защита от brute-force.
  • Опыт с высоконагруженными системами: профилирование, оптимизация запросов, шардирование.
  • Опыт миграции legacy-кода: с JS на TypeScript, с одного фреймворка на другой, переписывание ORM-слоя.
  • DevOps-навыки: nginx, certbot, бэкапы БД, разбор инцидентов в проде.
  • Frontend-кругозор: понимание, как клиент потребляет API, чтобы не делать неудобные эндпоинты.

Текущий стек:

Node.js, TypeScript (ESM), Express, MySQL + Prisma, Redis, BullMQ, Socket.io, Passport.js (несколько стратегий), Yup, Sharp, Multer, JWT, vhost-маршрутизация по поддоменам, GitLab.
Стек может меняться – ищем не “знатока этих библиотек”, а человека, который быстро въезжает в новый код.

Что мы оцениваем:

Способность читать чужой большой TypeScript-код с устоявшимися паттернами.

Понимание trade-off’ов: ORM vs raw SQL, очередь vs синхронный вызов, кэш vs консистентность.

Аккуратность с многопоточностью/конкуррентностью на Node.js: race conditions, transactions, locks.

Дисциплина в коммитах: маленькие осмысленные коммиты, чистая история.

Самостоятельность в отладке – гипотезы и проверки, а не “не работает, помогите”.

Умение сказать “не знаю” вместо размытых ответов.

Условия:

  • Оформление по ТК РФ, полный соц. пакет.

  • Испытательный срок до трех месяцев.

  • Пятидневная рабочая неделя с 9-00 до 18-00 (оговаривается при собеседовании)

  • Дружный молодой коллектив.

  • Комфортный офис.