Skip to content

sashis/eduquate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

eduquate

Образовательный сайт на Django.

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

Проект структурно разделен на 3 приложения: Accounts - отвечающий за профили, Courses - отвечающий за описание курсов на образовательной площадке и Learning - обслуживающий подписки пользователей на курсы. На данный момент созданы только модели данных и доступна панель администратора.

Модели данных. Accounts

В проекте предусмотрены 3 профиля: Студент, Преподаватель и Суперпользователь. Стандартный джанго-профиль заменен на собственный User и расширен полями, общими для всех профилей, в качестве логина используется адрес электронной почты.

Профиль Студента является основным для системы и, поскольку пока полностью описывается базовой пользовательской моделью, представлен в проекте прокси-моделью Student, которую при необходимости можно будет расширить связью один-к-одному с базовой.

Профиль Преподавателя Tutor является расширением базовой модели и представляет связь один-к-одному.

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

Courses

Приложение представлено двумя связанными моделями (один-ко-многим): Course - описание курсов и Lesson - описание занятий в рамках курса. Помимо этого модель Course связана с Tutor (многие-к-одному); предполагается, что преподаватели являются создателями и редакторами собственных курсов. Ещё одна связь Course - Student (многие-ко-многим) через промежуточную модель learning.CourseSubscription.

Learning

Приложение представлено двумя моделями. CourseSubscription - промежуточная модель между курсом и студентом, хранящая дополнительные аттрибуты этой связи; предполагается, что связь будет образовываться при подписке студента на произвольный курс, ограничивающим фактором является невозможность преподавателя (автора курса) учится на собственном курсе. LearningProgress - модель фиксирует прогресс обучения по занятиям в рамках ранее созданной подписки.

Установка и запуск

cp .env.sample .env
docker-compose up --build

Для остановки достаточно выполнить docker-compose down -v

При запуске контейнера с приложением автоматически создается база с пользователями, курсами и подписками. Создается суперпользователь с заданными ADMIN_EMAIL и ADMIN_PASSWORD.

Работа приложения

1. CBV

В проекте определены CRUD для модели курсов. Доступ к созданию/изменению/удалению ограничен для авторизованных пользователей с профилем преподавателя.

2. Работа с очередями

Для выполнения фоновых задач используется Celery, в качестве брокера сообщений используется Redis. Соответствующие сервисы настроены в docker-compose. На текущий момент в фоне выполняется отправка писем от зарегистрированных пользователей преподавателям (копия письма отправляется на почту администратора). Для регистрации celery-задач используется django-celery-results, журнал доступен на административной странице.

3. GraphQL

Реализован GraphQL API для моделей пользователей и курсов. Для запроса данных по всем курсам с преподавателями и студентами, можно выполнить запрос на http://site/graphql

query {
  allCourses {
    id,
    name,
    tutor {
      user {
        id,
        fullName,
        email
      }
    }
    students {
      id,
      fullName,
      email
    }
  }
}

4. REST API

Добавлен API /api/v1/ для моделей User, Course, CourseSubscription. Добавлена поддержка JWT-токенов.

About

educational site, training task

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published