Клиент пришёл с идеей агрегатора проп-трейдинговых фирм - сайта, где трейдер в одном месте сравнивает компании, их челленджи, условия и выплаты и выбирает, где получить финансируемый счёт.
Нужна была не витрина, а полноценная платформа:
- каталог фирм и челленджей с фильтрами, сравнением условий и детальными карточками;
- отзывы трейдеров с верификацией выплат, рейтинги и Trust Score;
- программа лояльности, промокоды и партнёрские награды;
- роли для всех сторон: трейдеры, владельцы фирм, партнёры, модерация;
- автоматическое наполнение каталога - условия фирм постоянно меняются, вести их руками невозможно;
- SEO как главный канал привлечения: тысячи страниц под органический трафик.
Стек зафиксировали так: фронтенд на Next.js (React.js, TypeScript, Tailwind), backend на Nest.js (Node.js, PostgreSQL, Redis), AI-скрейпер на Puppeteer + Claude API, инфраструктура в Docker за Nginx.
Собрал платформу из нескольких частей.
1. Публичный сайт - Next.js 15 на App Router, React.js 18, TypeScript, Tailwind v4, Radix/shadcn. Под SEO сделал SSR/SSG/ISR-рендеринг, динамический sitemap почти на 1900 URL, JSON-LD структурированные данные, управляемые мета-теги и контент под каждую страницу и ISR-кэширование для скорости. Данные - на TanStack Query, формы на React Hook Form + Zod, мультиязычность через next-intl, авторизация на NextAuth v5, графики на Recharts.
2. Backend - Nest.js 10 (Node.js) на TypeScript, TypeORM и PostgreSQL. Очереди и фоновые задачи на Redis + Bull, регулярные задачи через cron (@nestjs/schedule). Авторизация и роли - JWT + Passport с RBAC, валидация на class-validator, документация в Swagger, защита от перебора через Throttler. Картинки обрабатываю через Sharp, почта - Nodemailer, файлы лежат в S3/MinIO.
3. AI-скрейпер - отдельный модуль на Puppeteer со stealth-плагинами, для обхода Cloudflare использовал FlareSolverr. Обход идёт по sitemap фирм, плюс подтягиваю внешние рейтинги (TrustPilot, ForexPeaceArmy). Сами данные структурирует Claude API: Haiku категоризирует ссылки, Sonnet вытаскивает структурированные данные о фирме - так каталог наполняется автоматически.
Для управления сделал две админки на Vite + React.js (Radix/shadcn): основную - для фирм, отзывов, промокодов и наград, и отдельную SEO-панель - для мета-тегов, редиректов и контент-блоков по путям.
Инфраструктура - Docker + Docker Compose на Ubuntu VPS под Nginx. Развёл staging и production окружения, деплой через CI/CD по cron (сборка - рестарт). В контейнерах PostgreSQL, Redis и MinIO.
Получилась рабочая платформа, которая закрывает весь цикл - от автоматического сбора данных о фирмах до выбора челленджа трейдером.
Сайт построен под поиск: тысячи страниц со структурированными данными, быстрый рендеринг за счёт ISR, динамический sitemap почти на 1900 URL - всё, чтобы расти в органике. AI-скрейпер снимает ручную работу: каталог фирм и челленджей (около 400 страниц) наполняется и обновляется сам.
Многоролевая система позволяет работать всем сторонам сразу - трейдерам, владельцам фирм, партнёрам и команде модерации. Программа лояльности и отзывы с верификацией выплат держат аудиторию вовлечённой. Админка и SEO-панель дают полный контроль над контентом и мета-данными без участия разработчика.
Платформа развёрнута на проде, работает стабильно и готова масштабироваться по трафику и числу фирм.