Кто нам нужен:
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 (оговаривается при собеседовании)
-
Дружный молодой коллектив.
-
Комфортный офис.