Это связка лендинга и учебной платформы для продажи онлайн-курса по тарифам Launch, VIP и Premium. Продукт закрывает полный коммерческий цикл: прогрев на лендинге, оформление заказа, оплата, авторизация и доступ к урокам с домашними заданиями. Для бизнеса это решение сокращает путь от заявки до оплаченного клиента и убирает ручную выдачу доступов после оплаты.
Система реализована как модульный fullstack-проект: backend на NestJS с PostgreSQL и TypeORM, frontend на Next.js с Mantine UI. На сервере выделены отдельные модули под заказы, платежи, авторизацию, подписки, планы и кабинет, что упрощает поддержку и развитие. Checkout создаёт заказ и пользователя в транзакции, инициирует платёж в ЮKassa и возвращает ссылку на оплату. Вебхук платежа валидируется, сверяет сумму и валюту, переводит заказ в paid, активирует подписку и отправляет доступы через SMTP (с fallback в логи, если почта не настроена). Доступ к контенту контролируется по рангу тарифа и публикации уроков, есть отправка домашних заданий и админский эндпоинт для управления видимостью уроков. Авторизация построена на JWT access/refresh, refresh-токены и login-link токены хешируются, добавлен rate limit на логин и ролевая модель user/support/admin. На фронте реализованы отдельные страницы для лендинга, checkout, статуса оплаты, входа и кабинета; API-клиент генерируется из OpenAPI через Kubb, а клиентский слой умеет автоматически обновлять access token по refresh token.
Проект дает бизнесу рабочую воронку «лендинг → оплата → доступ к обучению» без разрывов между маркетингом, платежом и обучающей частью. После внедрения такой схемы команда обычно снижает операционную нагрузку поддержки, быстрее обрабатывает оплаты и получает более стабильную конверсию из интереса в фактический доступ к продукту за счет автоматизации критичных шагов.