Первое задание
Каждое задание зависит от другого. То есть получится так, что сделав все три задания получится один большой полноценный проект. Начнем
Выбор технологий
Что бы правильно спроектировать приложение и не страдать, нужно правильно выбрать технологии для этого.
Для данного проекта мы будем использовать следующее:
PostgreSQL
NestJS
S3 хранилище
Nodemailer для отправки писем (можно использовать сторонний сервис, однако следует все равно интегрировать его в проект)
Бизнес требования
Регистрация и авторизация
Регистрация:
E-mail, пароль или социальные сети (OAuth) Возможна активация по e-mail Авторизация (Login):
Использование JWT (JSON Web Tokens) или сессий
Хранение accessToken/refreshToken в cookies
Проверка роли и прав с помощью гуардов
Управление курсами и уроками
Создание курса:
Роли: только преподаватель или администратор
Указываем название, описание, обложку, категорию
Редактирование курса:
Добавление уроков (Lesson), модулей (Module), материалов (Materials)
Возможность устанавливать структуру "Курс -> Модуль -> Урок"
Доступ к урокам:
Проверяется подписка (если платные курсы)
Проверяется статус обучения (допустим, урок открывается только после предыдущего)
Тесты и задания
Тесты (AssessmentModule):
Поддержка разных типов вопросов: множественный выбор, одиночный выбор, открытый текст, drag-n-drop
Ограничение по времени на тест
Подсчёт баллов и отображение результатов
Задания (Homework/Assignment):
Преподаватель создаёт задание с дедлайном и критериями оценивания
Студент загружает решение (файл, ссылка на GitHub и т. д.)
Преподаватель выставляет оценку и комментарии
Личный кабинет пользователя
Студент
Список доступных курсов, прогресс по урокам и тестам
Модуль уведомлений о новых уроках, дедлайнах и т. д.
Сертификаты или отметки о завершении курса
Преподаватель
Список создаваемых курсов и уроков
Мониторинг прогресса студентов, просмотр результатов тестов
Возможность отправлять объявления или рассылки
Администратор
Управление всеми курсами, пользователями, платежами
Создание глобальных категорий, настройка тарифов
Просмотр общей статистики (активность, выручка)
Первый этап
ЭТАП 1: Базовое приложение для обучения Цель: создать простую платформу, где преподаватель может публиковать материалы курсов, а студент — просматривать их и отмечать прогресс.
Ключевой функционал
Регистрация/Авторизация
Простая система регистрации по e-mail и паролю. Авторизация с помощью JWT (accessToken / refreshToken). Роли пользователей: «преподаватель» и «студент».
Управление курсами
Преподаватель может создавать курсы (название, описание, обложка). Студент может просматривать список доступных курсов.
Управление уроками
Для каждого курса преподаватель может создавать уроки (название, текстовое содержание). Студент может открывать уроки и менять статус прохождения (например, «просмотрен»).
Личный кабинет
Студент видит, на какие курсы записан и какой у него прогресс. Преподаватель видит свои курсы и может их редактировать.
Результат Этапа 1
Простая рабочая MVP-платформа: зарегистрировался, зашёл, записался на курс, посмотрел уроки. Преподаватель может создать курс, добавить уроки. Студент может видеть свои курсы и прогресс.