Fullstack-разработчик (TypeScript: бэкенд + веб)
ONEMA · ВАКАНСИЯ
О проекте
Действующий маркетплейс с двумя контурами: B2C-витрина с мобильными приложениями на iOS и Android и B2B-часть для поставщиков, сотрудников и администраторов. В продукте работает AI-ассистент: подбор товаров по запросу на естественном языке, рецепты, учёт диетических ограничений.
Технически это двенадцать сервисов на Node.js и TypeScript плюс два мобильных приложения. Витрина и BFF — на Next.js 16.2 (App Router) и React 19, четыре B2B-приложения на том же стеке, данные и авторизация — в Supabase. Вокруг работают воркеры: пуш-уведомления, эмбеддинги для поиска, синхронизация с AmoCRM, экспорт телеметрии, обработка изображений. Деплой в Docker.
Технологический стек
Веб: Next.js 16.2 (App Router), React 19, TypeScript 5.7 strict, @supabase/ssr, lucide-react. Админка: @xyflow/react, @dnd-kit, exceljs, xlsx, sharp, react-image-crop.
Бэкенд: Next.js route handlers (70 в BFF, 57 в витрине), Express 4.21, Fastify 4.28, Node ≥ 20.9, pg 8.11.
Данные: Supabase — PostgreSQL, Auth, Storage; PL/pgSQL, Row Level Security.
AI: OpenAI API (gpt-4.1-mini, вызовы по HTTP), @xenova/transformers — локальные эмбеддинги.
Интеграции: 1С, AmoCRM, Exolve (SMS), Resend (email), VK, Yandex, S3/R2.
Инфраструктура: Docker, GitHub Actions, pino, Sentry, Vitest.
Основные обязанности
- Развивать B2C-витрину и BFF на Next.js, а также четыре B2B-приложения: админку, кабинет поставщика, кабинет сотрудника, авторизацию.
- Проектировать и поддерживать API, которым пользуются веб и оба мобильных клиента: контракт, версионирование, обратная совместимость.
- Отвечать за данные в Supabase: схема, индексы, функции PL/pgSQL, политики Row Level Security.
- Завести миграции и версионирование схемы БД в репозитории.
- Развивать AI-ассистента: поиск по эмбеддингам, вызовы LLM, разбор запросов на естественном языке.
- Поддерживать воркеры на Node.js: пуши, эмбеддинги, синхронизация с CRM, телеметрия, обработка изображений.
- Поддерживать интеграции с 1С, AmoCRM, SMS- и email-провайдерами.
- Держать наблюдаемость: структурные логи pino, ошибки в Sentry, разбор продакшен-инцидентов.
- Собирать и деплоить в Docker, развивать CI на GitHub Actions — сейчас он настроен только в двух репозиториях.
Требования
- Коммерческий опыт fullstack-разработки на TypeScript от 3 лет.
- Next.js на App Router и React в продакшене, строгий TypeScript.
- PostgreSQL на уверенном уровне: схема, индексы, разбор плана запроса.
- Разграничение доступа на уровне базы: Row Level Security или аналогичные механизмы.
- Node.js: Express или Fastify, фоновые воркеры.
- Проектирование REST API, который потребляют мобильные клиенты.
- Supabase, Firebase или самостоятельно собранная связка Postgres + Auth + Storage.
- Docker и понимание, как сервис попадает на продакшен.
Будет плюсом
- PL/pgSQL и версионирование схемы: Supabase CLI, Flyway, Sqitch или собственный подход.
- Векторный поиск, эмбеддинги, практический опыт с LLM API.
- Интеграции с 1С и CRM-системами.
- Sentry, структурное логирование, работа с инцидентами.
- Тесты: покрытие сейчас минимальное, и его предстоит наращивать.
Желательно: стек второго направления
У нас есть второе направление — два действующих интернет-магазина на PHP. Полное совпадение по этому стеку не требуется, но если такой опыт есть, вы сможете подключаться к задачам обоих направлений, а не одного:
- PHP 8.1 и Laravel 9: Eloquent, очереди, планировщик, Artisan-команды.
- Blade, Tailwind CSS, Alpine.js, Vite — серверный рендеринг витрины.
- MySQL и Memcached, кеширование запросов Eloquent.
- Laravel Passport и Sanctum, права на ролях (spatie/laravel-permission).
- Nginx, Docker Compose, GitLab CI — окружения и деплой магазинов.
- Интеграции со службами доставки: СДЭК, Boxberry, FivePost, Почта России.
- Генерация документов и выгрузок: Excel (maatwebsite/excel), PDF (FPDF/FPDI), штрихкоды и QR-коды.
- Обработка медиа: Intervention Image, FFmpeg.
- Next.js 15 и React 19 в headless-варианте — второй магазин собран как отдельный фронт к API.
- Нагрузочное тестирование на k6 — сценарии на 500–2000 rps.
Мы предлагаем
- Работу над продуктом с живой аудиторией: маркетплейс с веб-витриной, B2B-контуром и двумя мобильными приложениями.
- Современный стек в актуальных версиях: Next.js 16, React 19, Kotlin 2.0, SwiftUI на iOS 17.
- Реальное влияние на инженерные практики: команда собирается заново, процессы предстоит выстроить, а не наследовать чужие.
- Оплату всех согласованных часов: время фиксируется в трекере.
- Задачи приходят от PM уже согласованными.
- Первый месяц — пилотный объём работ с обратной связью по итогам: обе стороны спокойно проверяют, подходим ли друг другу.
- Удалённый формат и минимум встреч: статус-созвон 15 минут, дальше работа.
Формат работы
Уровень
Middle+ / Senior
Опыт
от 3 лет
Занятость
есть объём на полный день, частичная загрузка обсуждается
Формат
удалённо, часовой пояс — не более +3 часов к московскому
График
основное окно работы — 10:00–19:00 МСК, статус-созвон по будням в 11:30 МСК
Оформление
договор с самозанятым или ИП
Как откликнуться
Напишите пару предложений о самой сложной задаче со схемой данных или правами доступа, которую вы проектировали: в чём была сложность и к какому решению пришли.