Our platform offers a unique and interactive way to prepare for technical interviews and refresh forgotten knowledge in web development and Python. With a collection of challenging quizzes and tests, users can assess their skills and identify areas for improvement. Our platform also provides in-depth explanations and resources to help users deepen their understanding and become interview-ready. Whether you're a seasoned developer or just starting out, our platform is the perfect tool to take your skills to the next level.
Стек: Django 4.1, Vue + Vite, Celery, Docker
-
Фронтенд
- разобраться почему csrf кука не в куке
- question page
- вывод тегов
- пагинация вопросов
- дизайн оформление
- страница тегов
- быстрый поиск
- навигация на список вопросов по тегу
- user page
- История ответов
- Мои вопросы со статусом pub/unpub
- Home page
- Категории вопросов new, most-popular, for-you
-
Апи
- Шифрование api
- Implement question daily limit for user creation
- partial_update для QuestionViewSet
- Добавление модели Quiz с ManyToMany к Question
- Главная страница
- интерактив - 3d фигура где каждая часть это навигация (login/reg/questions/tags)
- Модели
- Question
- User может создавать Question
- Tag
- ManyToMany к Question
- Поиск, сортировка по тэгам
- Choice
- Ответы на вопрос Question
- Answer
- Ответ пользователя
- Report
- Борьба с ошибками контента и устареванием
- Question
- User
- Личная страница
- История прохождения тестов со статусом
- Возможность создавать Question
- Награды (карма, титул)
- Сохранение понравившихся вопросов
- Формировать подходящие предложения на основе предпочтений
- Статистика и анализ ошибок пользователя в бизнес плане
- Questions
- Возможность выполнять отдельные задания, а также связанные с quiz
- система лайков - динамичные евенты, подобие как в тик-токе
- Сбор статистики ответов, ошибок
- Показать глобальный процент ответов
- Вопросы в разнобой
- Режим "на время"
- Режим "мне повезет"
- Quiz
- Отдельная структура
- Формирование узконаправленных тестов
- Использование компаниями для тестирования сотрудников
- Cистема User Ranking
- Мобильное приложение
---
title: Модели
---
classDiagram
Question <|--|> Tag
Question <|-- Choice
Question <|-- Report
Question <|-- Answer
Choice <|--|> Answer
User <|-- Answer
User <|-- Report
class Question {
user: ForeignKey[related_name='questions']
tags: ManyToMany[Tag, related_name='questions']
-
uuid: UUIDField
title: CharField[100]
text: TextField
explanation: TextField
language: en | ru
is_published: BooleanField
-
created_at: DateTimeField
updated_at: DateTimeField
published()
}
class Tag {
label: CharField[100]
slug: SlugField[110]
question_count()
}
class Choice {
question: ForeignKey[Question, related_name='choices']
-
uuid: UUIDField
text: TextField
is_correct: BooleanField
-
updated_at: DateTimeField
created_at: DateTimeField
}
class Report {
user = ForeignKey[User, related_name='reports']
question = ForeignKey[Question, related_name='reports']
-
msg = CharField
updated_at: DateTimeField
created_at: DateTimeField
}
class Answer {
user: ForeignKey[User, related_name='answers']
question: ForeignKey[Question, related_name='answers']
choices: ManyToManyField[Choice, related_name='answers']
-
uuid: UUIDField
is_correct: BooleanField
updated_at: DateTimeField
created_at: DateTimeField
}
class User {
}
- Реализован при помощи Vite + Vue (Pseudo-decoupled)
- Возможность загрузки vue из django
- Подробнее в
frontend/vite.config.js - Билд/Перезагрузка статики на лету в
brainrefresh/static - Разделение .html файлов
- Frontend для локальной разработки (необязательно)
- Backend для продакшена
- Подробнее в
- Минусы:
- Отсутствие хэша у static файлов
- Конфликты между статикой бэка и фронта при билде
- Возможная путаница при 2+ разработчиках
# В руте
npm install
# Frontend разработка
npm run dev
# Backend разработка (build watch)
npm run build-w
Running type checks with mypy:
$ mypy brainrefresh
To run the tests, check your test coverage, and generate an HTML coverage report:
$ coverage run -m pytest
$ coverage html
$ open htmlcov/index.html
$ pytest
Moved to Live reloading and SASS compilation.
This app comes with Celery.
To run a celery worker:
cd brainrefresh
celery -A config.celery_app worker -l infoPlease note: For Celery's import magic to work, it is important where the celery commands are run. If you are in the same folder with manage.py, you should be right.
MailHog running, to view messages that are sent by your application, open your browser and go to http://127.0.0.1:8025
The following details how to deploy this application.
See detailed cookiecutter-django Docker documentation.
- Готовое API
- API Тестрование, кеширование, пагинация, права пользователя API
- Покрытие тестами всех моделей
- Модель Answer + API
- Frontend компоненты Question, QuestionList
- Frontend роутинг
- Модели для Question, Choice, Tag
- API для Question, Choice, Tag
- Frontend билд-система (Vite + Vue)
- Инициализация проекта