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")