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 поддер DD5F ивают частичную работу с проектам по средсвам передачи флагов:
-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