GameWise — это образовательная платформа, которая делает процесс обучения более увлекательным и интерактивным. Пользователи могут записываться на курсы, проходить тесты по пройденному материалу и соревноваться друг с другом за место в глобальном лидерборде, что способствует повышению мотивации и вовлеченности.
У администраторов сайта есть возможность дополнять платформу своими курсами. Курс включает в себя теоретический материал по теме, после которого следует тестирование для пользователей, которое позволит им как закрепить свои знания, так и попасть в глобальный рейтинг, посоревноваться с другими заинтересованными пользователями.
На нашей платформе реализованна система наград за выполнение определённых условий пользователями. Эти достижения позволяют куда приятнее подкрепить полученные знания признанием общества.
Список доступных достижений на данный момент:
| Название | Условие получения | Тэг |
|---|---|---|
| Первый курс | Пройдите первый курс, чтобы получить эту ачивку | first_course |
| Топ-1 в рейтинге | Станьте лучшим игроком в рейтинге | top_1 |
| Все задачи курса выполнены верно | Выполните все задачи курса с правильными ответами | all_correct |
| Три курса выполнены | Пройдите три курса, чтобы получить эту ачивку | three_courses |
GameWise — название отражает назначение самой платформы: обучение с геймификацией процесса.
GameWise предназначен для пользователей, желающих проводить свои часы обучения какому-либо навыку не только с пользой для себя, но и показывать остальным ребятам, что у всего есть цель. Система поддерживает администрирование контента, а также выстраивание справедливого соревнования между пользователями. Осуществлена система лидерборда и ачивок.
Для работы приложения требуется установить docker. Скрипты запуска работают на linux/macos. Для работы на windows требуется использовать эмуляцию работы unix, например git bash или cygwin.
После установки докера требуется создать аккаунт на hub.docker.com и сгенерировать на нём personal access token. Никнейм и токен нужно вставить в .env файл на соответсвующие места в двойых ковычках
DOCKERHUB_USERNAME="sample_username"
DOCKERHUB_TOKEN="sample_token"
В папке находятся 3 скрипта для запуска, останоки и сборки приложения
- build_and_push.sh собирает проект и загружает на докерхаб в соответтвии с .env
- start.sh запускает проект в соответтвии с .env, требуется предварительная сборка
- stop.sh останавливает проект в соответтвии с .env
Скрипты start и stop поддерживают частичную работу с проектам по средсвам передачи флагов:
-w/-f - Запустить web/frontend составляющую
-a/-b - Запустить api/backend составляющую
Если ни одного флага передано не было, то работа выполняется со всем проктом
| Название | Содержимое | Тип данных | Ограничения | Стандартное значение |
|---|---|---|---|---|
| username | имя пользователя | Char | длина не более 255, уникален | — |
| почтовый адрес пользователя | String | уникален | — | |
| is_active | может ли пользователь входить на сайт | Bool | — | True |
| is_staff | является ли пользователь сотрудником | Bool | — | False |
| is_superuser | является ли пользователь суперюзером | Bool | — | False |
| date_joined | дата последнего захода на сайт | DateTime | — | Now |
| profile_photo | аватар профиля | Image | — | — |
| Название | Содержимое | Тип данных | Ограничения | Стандартное значение |
|---|---|---|---|---|
| title | Название курса | Char | длина не более 255, уникален | — |
| author | ID автора курса | ForeignKey | — | — |
| description | Опиасние курса | Text | длина не более 500 | null |
| tags | Тэги курса | Char | длина не более 255 | — |
| content | Содержимое курса | Text | — | null |
| Название | Содержимое | Тип данных | Ограничения | Стандартное значение |
|---|---|---|---|---|
| course | ID курса | ForeignKey | — | — |
| user | ID пользователя | ForeignKey | — | — |
| enrollment_date | Дата записи | DateTime | — | Now |
| Название | Содержимое | Тип данных | Ограничения | Стандартное значение |
|---|---|---|---|---|
| course | ID курса | ForeignKey | — | — |
| text | Текст вопроса | Char | длина не более 255 | — |
| Название | Содержимое | Тип данных | Ограничения | Стандартное значение |
|---|---|---|---|---|
| question | ID вопроса | ForeignKey | — | — |
| text | Текст ответа | Char | длина не более 255 | — |
| is_correct | Является ли ответ верным | Bool | — | — |
| Название | Содержимое | Тип данных | Ограничения | Стандартное значение |
|---|---|---|---|---|
| course | ID курса | ForeignKey | — | — |
| user | ID пользователя | ForeignKey | — | — |
| correct_answers | Ответы пользователя | Int | Значение неотрицательно | — |
| Название | Содержимое | Тип данных | Ограничения | Стандартное значение |
|---|---|---|---|---|
| title | Название достижения | Char | длина не более 255, уникален | — |
| description | Описание достижения | Text | — | — |
| image | Иконка достижения | Image | — | — |
| condition | Условие получения достижения | Char | длина не более 255 | — |
| Название | Содержимое | Тип данных | Ограничения | Стандартное значение |
|---|---|---|---|---|
| user | ID пользователя | ForeignKey | — | — |
| achivement | ID достижения | ForeignKey | — | — |
| date_earned | Дата получения достижения | DateTime | — | Now |
- Не может быть 2 записи достижений пользователя с одинаковой парой значений {user, achivement}
- Не может быть 2 записи записей на курс с одинаковой парой значений {user, course}
| Название роли | ответственность | количество пользователей |
|---|---|---|
| User | Отсутствует | Не ограничено |
| Admin | Редактирование пользователей, создание и редактирование курсов | 5 |
| URL запроса | результат |
|---|---|
| /api/register/ | запрос данных у пользователя для регистрации на сайте |
| /api/login/ | запрос данных для авторизации на сайте |
| /api/profile/?userid={userid} | запрос к БД на получение данных о пользователе по его id |
| /api/courses/ | Выводит список всех доступных курсов |
| /api/courses/{course_id}/ | Возвращает API-ответ с детальной информацией о курсе с указанным id |
| /api/courses/{course_id}/enroll/ | Осуществляет регистрацию (запись) пользователя на курс с указанным id |
| /api/courses/create/ | Интерфейс для создания нового курса |
| /api/user/{userid}/courses | возвращает количество курсов по всем пользователям |
| /api/user/{int:user_id}/courses/ | посмотреть курсы конкретного пользователя |
| /api/courses/users | посмотреть количество курсов всех пользователей |
| /api/users/{int:user_id}/edit/ | отредактировать информацию о пользователе |
| /api/delete_user/{int:user_id}/ | удалить из базы пользователя по id |
| api/courses/users | информация о сумме набранных очков за курсы |
| api/courses/{course_id}/add-form/ | создание тестировочной формы по материалам курса |
| api/courses/{course_id}/questions/ | берет вопросы курса из бд для отображения их в форме пользователя |
| api/courses/{course_id}/check-answers/ | проверяет корректность ответов, данных пользователем |
| api/achievements/ | общий список ачивок |
| api/users/{user_id}/achievements-view/ | показать ачивки конкретного пользователя |
Python 3.8 Node.js 20
sqlite3
