Вакансия: Fullstack TypeScript-разработчик (с уклоном во фронтенд)
Уровень: Middle+ / Senior Проект: Yanami
О проекте
Yanami — это современная E-commerce платформа. Мы развиваем интернет-магазин, который тесно интегрирован с Telegram Mini App. У пользователей единый аккаунт для сайта и Telegram: с общим балансом, историей заказов и бонусной системой.
Особенности нашей архитектуры и подходов:
Устройство: Headless-архитектура, где фронтенд реализован на Next.js, а бэкенд — на PayloadCMS (Node.js/MongoDB).
Возможности: Глубокая интеграция с платёжными провайдерами и Telegram, наличие собственной дизайн-системы и элементов геймификации (например, рулетка и бонусы).
База кода: Разработка ведётся в монорепозитории. Важно отметить, что это устоявшийся проект с большой кодовой базой (не разработка с нуля). Мы ищем человека, который умеет бережно встраиваться в существующую архитектуру и развивать её.
Технологический стек
Мы используем современные и проверенные инструменты:
Фронтенд: Next.js (App Router, React Server Components), React, TypeScript, Tailwind CSS, TanStack Query, Zustand, motion (для создания анимаций).
Бэкенд: PayloadCMS 3 (в качестве headless CMS), Node.js, MongoDB (Mongoose).
Инфраструктура: Turborepo + pnpm workspaces. У нас выделены общие пакеты: библиотека компонентов (UI-кит), типы и контракты.
Интеграции: Платёжные провайдеры (Ozon, Yandex Split, Dolyami), а также Telegram Bot API и Telegram Mini Apps.
Чем предстоит заниматься
Разрабатывать новый функционал как на стороне клиентской части (витрина магазина и Telegram Mini App), так и на бэкенде (коллекции, эндпоинты, бизнес-логика, фоновые cron-задачи).
Связывать пользовательские интерфейсы с REST API, работать с логикой корзины, оформлением заказа, статусами и платёжными сценариями.
Поддерживать строгую типобезопасность, следить за единым стилем написания кода и проводить проверку кода коллег (code review).
Заниматься отладкой сквозных процессов: от интерфейса пользователя через API и базу данных до обработки платежных вебхуков.
Наши ожидания (обязательные требования)
Для успешной работы вам потребуются следующие навыки:
Уверенное владение TypeScript: понимание дженериков, работа в строгом режиме, умение писать аккуратные типы.
Отличное знание React и Next.js: работа с App Router, чёткое разделение серверных и клиентских компонентов, использование роут-хендлеров.
Опыт проектирования и интеграции REST API.
Уверенная работа с Node.js: написание серверной логики, понимание асинхронности, взаимодействие с внешними API и вебхуками.
Понимание принципов работы с базами данных (SQL или NoSQL), знание того, как работают индексы, транзакции и атомарность.
Навыки современной вёрстки: использование Tailwind CSS, создание адаптивных интерфейсов и базовое понимание принципов доступности (a11y).
Умение управлять состоянием приложения (Zustand, Redux или Context) и работать с клиентским кешированием данных (TanStack Query или SWR).
Уверенная работа с Git, опыт командной разработки через ветвление и Pull Requests (PR).
Крайняя аккуратность в финансовых расчётах (правильные округления, обеспечение идемпотентности операций) — либо искренняя готовность быстро в это вникнуть.
Что будет большим плюсом
Эти знания помогут вам быстрее влиться в процесс, но их отсутствие не является препятствием:
Опыт работы с PayloadCMS (настройка коллекций, хуки, кастомные эндпоинты, фоновые задачи).
Важное уточнение: Мы не требуем обязательного знания PayloadCMS. Ключевой фундамент — это связка React/Next/TS/Node. Payload — это удобная надстройка с конфигурацией коллекций, эндпоинтами в стиле Express и Mongoose под капотом. Разработчик с крепкой базой осваивает её за пару недель.
Знание MongoDB и Mongoose, понимание атомарных операций (findOneAndUpdate, $inc, использование гардов).
Практический опыт настройки платёжных интеграций и обработки вебхуков.
Опыт создания Telegram Mini Apps и работы с Telegram Bot API.
Опыт работы в монорепозиториях (Turborepo или Nx) и с pnpm workspaces.
Умение создавать красивые анимации (с помощью Framer Motion или motion).
Понимание специфики E-commerce: корзина, процесс оформления заказа, промокоды, логика доставки и статусы заказов.
Навыки точных математических вычислений (использование decimal.js) и опыт работы с денежными суммами в минимальных единицах (копейках).
Личные качества и подход к работе
Внимание к деталям: для нас важно доводить каждую задачу до полноценного релиза в рабочей среде, а не просто до этапа демонстрации.
Умение читать, понимать и расширять чужой код, соблюдая заданные архитектурные рамки.
Способность честно и объективно оценивать сроки, а также вовремя сообщать о любых препятствиях или блокирующих факторах.
Самостоятельность при изучении и исследовании кодовой базы проекта.