Skip to content

iswebdevru/rcenext

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RCENext

Описание

RCENEXT - платформа для просмотра и управления расписанием

Перечень основых функциональных возможностей:

  • Управление и просмотр основного расписания
  • Управление и просмотр изменений в расписании
  • Управление и просмотр расписания учебных практик (FUTURE FEATURE)
  • Управление и просмотр расписания звонков (FUTURE FEATURE)

Расписание составляется не только для студентов, но и для преподавателей. Это достигается нормализацией данных в БД.

Расписание доступно для любого посетителя сайта.

Поиск расписания поддерживает фильтр по дате.

Расписание можно получить как для всех групп, так и для одной конкретной.

Структура проекта

Весь код приложения условно разделен на 3 самостоятельных модуля

Roadmap

Далее implementation details

web

  • Управление преподавателями
  • Управление расписанием занятий
  • Управление расписанием практик
  • Управление расписанием звонков
  • Управление календарем
  • Аутентификация и авторизация
  • Бесконечный скролл для компонентов с server state

api

  • 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 - менеджер расписания

offtop

z indexes in app: 30 - header 40 - modals 50 - notifications

Развертывание

Переменные окружения

Для работы приложения необходимо определить два файла .env в директориях frontend и backend. Чтобы понять, что должно находится в этих файлах обратитесь к .env.example соответствующего модуля.

Docker

Все модули проекта возможно развернуть с помощью Docker. Для упрощения работы с запуском контейнеров созданы два файла, организовывающих работу всех контейнеров: compose.yaml и compose.dev.yaml.

compose.yaml

Этот файл отвечает за запуск всех контейнеров, необходимых для работы всего приложения, и специально оптимизирован для работы на реальном сервере.

Чтобы стартовать приложение в режиме production, необходимо в корне проекта запустить следующую команду:

docker compose --build --detach

В результате чего на localhost выставятся 3 порта

  1. :4200 - rest api сервис ("backend")
  2. :4201 - сервер для обслуживания статических файлов, для работы ("backend")
  3. :4202 - веб клиент ("frontend")

ℹ️ Примечание

Данные значения можно изменить в файле compose.yaml

compose.dev.yaml

Второй файл создан с целью ведения локальной разработки на своей машине, поддерживающей Docker. Для удобства рядом с ним также лежит скрипт startup.bat, запускающий соответствующую команду для старта приложения. В результате ее работы выставляются два порта на localhost:

  1. :3000 - веб клиент ("frontend")
  2. :4200 - rest api сервис ("backend")