Клиент пришёл с идеей сделать агрегатор проп-трейдинговых фирм - сайт, где трейдер может в одном месте сравнить компании, их челленджи, условия и выплаты и выбрать, где получить финансируемый счёт.
Задача стояла не просто сделать витрину, а полноценную платформу:
1. большой каталог фирм и их челленджей (около 400 страниц челленджей) с рейтингами, trust-score, инструментами, платформами и условиями выплат
2. отзывы и оценки от трейдеров с модерацией и верификацией выплат
программа лояльности: очки за действия и обмен их на бесплатные челленджи
3. профили и сообщество трейдеров, блог, промокоды
4. разные роли в системе: трейдер, владельцы фирм, партнёры и амбассадоры, админ, редактор, SEO-специалист
5. отдельное требование - SEO: сайт должен хорошо индексироваться, отдавать структурированные данные и быстро открываться на тысячах страниц
6. автоматический сбор данных о фирмах с их сайтов, чтобы не заполнять всё вручную
Главная цель - собирать трафик из поиска и стать удобной точкой входа для трейдеров, которые выбирают проп-фирму.
Собрал платформу из нескольких частей.
1. Публичный сайт - Next.js 15 на App Router, React 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 - NestJS 10 на 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 (Radix/shadcn): основную - для фирм, отзывов, промокодов и наград, и отдельную SEO-панель - для мета-тегов, редиректов и контент-блоков по путям.
Инфраструктура - Docker + Docker Compose на Ubuntu VPS под Nginx. Развёл staging и production окружения, деплой через CI/CD по cron (сборка - рестарт). В контейнерах PostgreSQL, Redis и MinIO.
Получилась рабочая платформа, которая закрывает весь цикл - от автоматического сбора данных о фирмах до выбора челленджа трейдером.
Сайт построен под поиск: тысячи страниц со структурированными данными, быстрый рендеринг за счёт ISR, динамический sitemap почти на 1900 URL - всё, чтобы расти в органике. AI-скрейпер снимает ручную работу: каталог фирм и челленджей (около 400 страниц) наполняется и обновляется сам.
Многоролевая система позволяет работать всем сторонам сразу - трейдерам, владельцам фирм, партнёрам и команде модерации. Программа лояльности и отзывы с верификацией выплат держат аудиторию вовлечённой. Админка и SEO-панель дают полный контроль над контентом и мета-данными без участия разработчика.
Платформа развёрнута на проде, работает стабильно и готова масштабироваться по трафику и числу фирм.