Tutorly — техническое описание
0. Бизнес-цели и успех (обязательно)
- Цель бизнеса (12–24 мес): Набрать 25 постоянных учеников и сформировать мини-группы; доход 250+ тыс. ₽/мес за 12 мес.
- Кто платит vs кто пользуется: Платят родители; пользуются школьники 10–11 классов.
- Ценность для пользователя (одной фразой): Понятный план подготовки к ЕГЭ с репетитором, у которого проверяемые результаты.
- KPI успеха v1 (3–7 измеримых):
- ≥ 30 заявок на пробное занятие в месяц
- Конверсия пробное → оплата ≥ 50%
- Конверсия сайта ≥ 5%
- Средний балл учеников ≥ 80
- ≥ 20 отзывов на сайте
- Монетизация / экономика: Индивидуально 2 500 ₽/60 мин, мини-группа 1 200 ₽, пакет 8 занятий со скидкой 10%.
- Go-to-market: Профи.ру и Авито как источник отзывов, VK и Telegram-канал с разборами задач, сарафан родителей.
- SEO / контент / маркетинг в v1: Страницы «репетитор по профильной математике ЕГЭ онлайн», «подготовка к ЕГЭ с нуля»; блог с разборами задач №1–19.
- Конкуренты / аналоги (1–3) и отличие: Профи.ру, онлайн-школы (Умскул, 100балльный). Отличие: персональный подход, маленькие группы, прозрачные результаты.
- Анти-цели v1: Не делаем LMS, видеокурсы и оплату на сайте в v1.
1. Название и суть
- Название проекта: Tutorly — сайт репетитора по математике ЕГЭ
- Одной фразой: Личный сайт репетитора с программой, отзывами и записью на пробное занятие.
- Для кого: Родители и школьники, готовящиеся к профильной математике.
- Проблема: Родителям сложно оценить репетитора: нет понятной программы, цен и подтверждённых результатов.
- Связь с §0: каждый сценарий v1 ведёт к KPI конверсии и измеряется целями в аналитике.
2. Границы
IN SCOPE (обязательно в v1):
- Hero с оффером и записью на бесплатную диагностику
- Блок «Обо мне»: опыт, баллы учеников
- Форматы и цены
- Программа подготовки по этапам
- Отзывы родителей и учеников
- FAQ
- Форма записи на консультацию с выбором удобного времени
- Админ-список заявок
OUT OF SCOPE:
- Личный кабинет ученика
- Оплата онлайн
- Видеокурсы
Позже (v2+):
- Кабинет с домашними заданиями
- Оплата пакетов
- Telegram-бот напоминаний
3. Стек
- Frontend: React 19 + Vite (продакшен); макет — чистый HTML/CSS/JS без сборки
- Стили UI: CSS Modules / собственная дизайн-система по INPUT/DESIGN.html
- Backend: Node.js 20 LTS + Express
- БД OLTP: PostgreSQL 16
- Аналитика / OLAP: Яндекс Метрика; OLAP не требуется в v1
- Кэш / очереди / observability: не требуется в v1; логи pino, uptime-мониторинг
- Хостинг / облако: VPS в РФ (Timeweb Cloud / Selectel), Nginx, Docker Compose
- Монолит / модульный монолит / сервисы: модульный монолит
4. Ключевые сценарии
- Родитель читает программу, выбирает «индивидуально» и записывает ребёнка на диагностику в субботу.
- Школьник из соцсетей смотрит отзывы и оставляет заявку на мини-группу.
- Репетитор получает заявку в Telegram и подтверждает время.
5. Сущности и данные
| Сущность | Поля (примерно) | Связи | Заметки |
|---|---|---|---|
| Lead | name, role(parent/student), phone, telegram, grade, format, preferred_time, comment, created_at | — | ПД |
| Review | author, grade_result, text, date | — | С согласия автора |
| Package | title, lessons, price, format | — | Прайс |
| Article | title, slug, body, task_number | — | v1: 3 статьи |
6. Интеграции
- Telegram Bot API — заявки
- SMTP — копия
- Яндекс Метрика
- Ссылки на Профи.ру/Авито с отзывами
7. Нефункциональные требования
- Ожидаемая нагрузка: До 3 000 посетителей в месяц
- Latency / доступность: TTFB < 300 мс, LCP < 2,5 с на mobile, доступность 99,5%
- Retention EventLog / evidence / audit: логи 30 дней, заявки/заказы 3 года, бэкап БД ежедневно с хранением 14 дней
- Compliance: 152-ФЗ, согласие родителя для несовершеннолетних, самозанятость (чеки «Мой налог»)
8. Безопасность
- Без регистрации; админка с JWT; капча и rate-limit на форму.
- HTTPS (Let's Encrypt), helmet, CSP, валидация входных данных на сервере, секреты в .env вне репозитория.
9. UX / клиенты
- Web, mobile-first.
- Доступность: контраст AA, фокус-состояния, подписи полей форм.
9b. Дизайн
- HTML-референс:
INPUT/DESIGN.html(картинки вINPUT/assets/, описания вINPUT/assets/DESCRIPTIONS.md)
9c. CI/CD и окружения
- Окружения: local / ci / staging / production
- CI: GitHub Actions — lint, тесты, сборка Docker-образа; деплой на staging по merge в main, на production по тегу
- Хостинг: VPS в РФ, Docker Compose, Nginx reverse proxy
10. Ограничения
- Язык кода: TypeScript (strict) на фронте и бэке; автотесты Vitest + Playwright для ключевых сценариев
- Запрещённые практики: хранение секретов в репозитории, ПД в логах, inline-SQL без параметров
11. Готовые модули
- logging-pino
- rate-limiting
- caching-redis
- auth-jwt
- websocket-socketio
- admin-panel
- file-upload
- crud-table
- payments-stripe
- search
- email-nodemailer
12. Критерии приёмки v1
- Форма записи валидирует телефон и время, показывает подтверждение
- Заявка приходит в Telegram
- Все цены и форматы видны без перехода
- Адаптив 360–1920 px
- Lighthouse SEO ≥ 95
13. Свободные заметки
Проект Webcraftly
Нужен такой же продукт?
Сайт репетитора ЕГЭ: программа, тарифы, отзывы и запись на диагностику.