RCENEXT - платформа для просмотра и управления расписанием
Перечень основых функциональных возможностей:
- Управление и просмотр основного расписания
- Управление и просмотр изменений в расписании
- Управление и просмотр расписания учебных практик (FUTURE FEATURE)
- Управление и просмотр расписания звонков (FUTURE FEATURE)
Расписание составляется не только для студентов, но и для преподавателей. Это достигается нормализацией данных в БД.
Расписание доступно для любого посетителя сайта.
Поиск расписания поддерживает фильтр по дате.
Расписание можно получить как для всех групп, так и для одной конкретной.
Весь код приложения условно разделен на 3 самостоятельных модуля
Далее implementation details
- Управление преподавателями
- Управление расписанием занятий
- Управление расписанием практик
- Управление расписанием звонков
- Управление календарем
- Аутентификация и авторизация
- Бесконечный скролл для компонентов с server state
- teachers CRUD
- classes CRUD
- timetables CRUD
- practices CRUD
- bells CRUD
- calendar CRUD
- Интеграция PostgreSQL
- Аутентификация
- Пагинация
- TypeScript (Язык программирования для веб клиента)
- Python (Язык программирования для REST API сервиса)
- PostgreSQL (Основная база данных)
- Redis (Хранилище для сессий)
ADMIN - обладает всеми возможными привилегиями
TEACHER, STUDENT - пока что равноправны, но ...
Страницы, которые необходимо реализовать в основном приложении:
/
- Общая инфа о сайте
/classes
- точное расписание для всех групп
/groups/<group>/classes
- расписание для группы
/teachers/<teacherId>/classes
- расписание для учителя
/bells
- расписание звонков
/me
- профиль авторизованного студента/преподавателя
/classes/edit
- редактирование расписания
/timetable/me
- точное расписание для авторизованного пользователя
/timetable/me/base
- основное расписание для авторизованного пользователя
/admin
- общая инфа об админ-панели
/admin/students
- менеджер студентов
/admin/teachers
- менеджер преподавателей
/admin/timetable
- менеджер расписания
z indexes in app: 30 - header 40 - modals 50 - notifications
Для работы приложения необходимо определить два файла .env
в директориях frontend
и backend
. Чтобы понять, что должно находится в этих файлах обратитесь к .env.example
соответствующего модуля.
Все модули проекта возможно развернуть с помощью Docker. Для упрощения работы с запуском контейнеров созданы два файла, организовывающих работу всех контейнеров: compose.yaml
и compose.dev.yaml
.
Этот файл отвечает за запуск всех контейнеров, необходимых для работы всего приложения, и специально оптимизирован для работы на реальном сервере.
Чтобы стартовать приложение в режиме production
, необходимо в корне проекта запустить следующую команду:
docker compose --build --detach
В результате чего на localhost выставятся 3 порта
:4200
- rest api сервис ("backend"):4201
- сервер для обслуживания статических файлов, для работы ("backend"):4202
- веб клиент ("frontend")
ℹ️ Примечание
Данные значения можно изменить в файле
compose.yaml
Второй файл создан с целью ведения локальной разработки на своей машине, поддерживающей Docker. Для удобства рядом с ним также лежит скрипт startup.bat
, запускающий соответствующую команду для старта приложения. В результате ее работы выставляются два порта на localhost:
:3000
- веб клиент ("frontend"):4200
- rest api сервис ("backend")