Skip to content

kotorkovsciy/scbchallenge2023

Repository files navigation

Команда: letter-k




Визуальное описание функционала системы


Описание используемого технологического стека и инструментов

Для разработки веб-приложений с использованием Django требуется следующий технологический стек и инструменты:
Django Python-фреймворк высокого уровня, который облегчает создание веб-приложений. Django предоставляет мощные инструменты для управления базами данных, обработки URL-запросов, создания шаблонов и многое другое.
JavaScript (JS) Язык программирования, который используется для создания интерактивных элементов на стороне клиента веб-приложения. В связке с Django, JS может использоваться для добавления динамического поведения, отправки асинхронных запросов на сервер и взаимодействия с API.
HTML Язык разметки для определения структуры веб-страницы. CSS: Язык таблиц стилей для оформления внешнего вида элементов на веб-странице.
Cython Инструмент для ускорения функций, написанных на Python. Request: Библиотека для выполнения запросов с сайта hh.
Beautiful Soup4 (bs4) Библиотека для парсинга HTML и XML. django-environ: Модуль для управления настройками Django из переменных окружения.

Описание сервисов, сущностей БД, и других артефактов проекта

django.contrib.admin Это административный интерфейс Django, который предоставляет удобный способ управления моделями и данными в базе данных. Включает модель LogEntry для отслеживания действий пользователей.
django.contrib.auth Этот сервис обеспечивает аутентификацию и авторизацию пользователей. Включает модели AbstractUser, Permission, Group и User для управления пользователями, разрешениями и группами.
django.contrib.contenttypes Сервис, который обеспечивает отслеживание типов контента в приложениях Django. Включает модель ContentType для хранения информации о типах моделей.
django.contrib.sessions Этот сервис отвечает за управление сеансами пользователей и хранение данных сеансов. Включает модели AbstractBaseSession и Session
jobportal Сервис, разработанный в проекте jobportal. Включает модель UserProfile для хранения профилей пользователей и их ролей.
Модель Описание
LogEntry Хранит информацию о действиях пользователей в административном интерфейсе. Содержит поля id, content_type, user, action_flag, action_time, change_message, object_id и object_repr. Связана с моделями User и ContentType через внешние ключи.
AbstractUser Абстрактная модель, которая представляет пользователей. Включает поля date_joined, email, first_name, is_active, is_staff, is_superuser, last_login, last_name, password и username. Наследуется от моделей AbstractBaseUser и PermissionsMixin.
Permission Представляет разрешения, которые могут быть назначены пользователям или группам. Содержит поля id, content_type, codename и name. Связана с моделью ContentType через внешний ключ
Group Представляет группы пользователей. Содержит поля id и name. Связана с моделью Permission через поле permissions (ManyToManyField)
МUser Представляет пользователей. Содержит поля id, date_joined, email, first_name, is_active, is_staff, is_superuser, last_login, last_name, password и username. Связана с моделями Group и Permission через соответствующие поля (ManyToManyField). Наследуется от модели AbstractUser.
ContentType Хранит информацию о типах моделей. Содержит поля id, app_label и model.
AbstractBaseSession Абстрактная модель, представляющая базовую информацию о с, truncated for brevity. пользовательской сессии. Содержит поля session_key, session_data, expire_date и session_id.
Session Представляет конкретную пользовательскую сессию. Содержит поля session_key, session_data, expire_date и session_id. Наследуется от модели AbstractBaseSession.
UserProfile Модель Хранит информацию о профилях пользователей и их ролях. Содержит поля id, user, role и bio. Связана с моделью User через внешний ключ.

Шаблоны (templates) Файлы, содержащие HTML-код с вставками динамических данных, используемые для отображения пользовательского интерфейса.
URL-шаблоны (urls) Файлы, которые связывают URL-адреса с соответствующими представлениями.
Формы (forms) которые определяют поля и правила валидации для пользовательского ввода.
Статические файлы (static) Ресурсы, такие как CSS-стили, JavaScript-скрипты, изображения, используемые в пользовательском интерфейсе.
Миграции (migrations) Файлы, которые описывают изменения структуры базы данных, создаваемые и применяемые с помощью Django ORM.
Конфигурационные файлы (settings) Файлы, которые содержат настройки проекта, такие как база данных, аутентификация, статические файлы и другие параметры.
Административный интерфейс Интерфейс, предоставляемый Django для управления моделями и данными в административной панели.
Это лишь некоторые из основных сервисов, сущностей БД и артефактов проекта, которые могут присутствовать в Django-приложении. Реальный проект может содержать и другие компоненты в зависимости от его специфики и требований.

Описания архитектур системы физическая

Физическая архитектура системы определяет физическое размещение компонентов и ресурсов системы.
Клиентские устройства Компьютеры, мобильные устройства или другие устройства, на которых пользователи взаимодействуют с сервисом через веб-браузер или веб сайт
Веб-сервер Сервер, который принимает запросы от клиентских устройств через протокол HTTP или HTTPS. Веб-сервер обрабатывает эти запросы и передает их в приложение Django для дальнейшей обработки
Django-приложение Это ядро системы, которое содержит бизнес-логику, модели данных, представления и шаблоны. Django-приложение выполняет обработку запросов, взаимодействует с базой данных, формирует и возвращает ответы клиентским устройствам.
База данных Django-приложение взаимодействует с базой данных для сохранения и извлечения данных. База данных может быть размещена на отдельном сервере или использовать облачные сервисы баз данных, такие как Amazon RDS или Google Cloud SQL.
Системы хранения файлов Для хранения и обработки файлов, таких как загружаемые пользовательские изображения или документы, может использоваться отдельное хранилище файлов, такое как Amazon S3 или Google Cloud Storage
Внешние сервисы В приложении могут быть интегрированы внешние сервисы, такие как платежные системы, системы уведомлений или сервисы аутентификации через социальные сети. Взаимодействие с этими сервисами может осуществляться через API.

Описания архитектур системы логическая

Логическая архитектура системы определяет структуру и организацию компонентов и модулей приложения. Это общая логическая архитектура Django-приложения, которая основана на шаблоне проектирования MVC (Model-View-Controller).
Клиентские устройства Модель представляет данные и бизнес-логику системы. Она определяет структуру и отношения между данными, а также методы для работы с этими данными. Модель в Django обычно представляется в виде классов Python, которые наследуются от базового класса модели Django
Представление (View) Представление определяет, как данные из модели будут отображаться пользователю. Оно обрабатывает запросы от клиентских устройств, получает данные из модели, выполняет необходимую обработку и форматирование данных и передает их в шаблон для отображения.
Шаблон (Template) Шаблон содержит HTML-код с вставками динамических данных. Он определяет, как данные будут отображаться пользователю. В шаблоне можно использовать переменные и управляющие конструкции для динамического формирования контента.
URL-маршрутизация Django использует URL-шаблоны для связывания URL-адресов с соответствующими представлениями. URL-маршрутизация определяет, какой код будет выполнен при обращении к определенному URL-адресу
Формы (Forms) Django предоставляет инструменты для создания и обработки веб-форм. Формы используются для сбора данных от пользователей и их валидации перед сохранением в базе данных.
Сервисы и утилиты В приложении могут быть определены дополнительные службы и утилиты, которые выполняют специфические задачи, такие как отправка электронной почты, взаимодействие с API сторонних сервисов и другие.

Описание решения с точки зрения безопасности

Для обеспечения безопасности при разработке проекта, было уделено внимание следующим аспектам
Аутентификация и авторизация пользователей Были использованы механизмы django для аутентификации и авторизации пользователей. Также хранения было осуществлено используя hash-функции для защиты от атак, таких как перебор паролей или словарные атаки
Защита от атак Для обеспечения безопасности используется защита от атак, таких как XSS (межсайтовый скриптинг) и CSRF (межсайтовая подделка запроса). Для этого используется Django Forms и Django Templates, чтобы защитить приложение от XSS. Также используется Django CSRF, чтобы предотвратить CSRF-атаки.
Следование принципам безопасности разработки ПО А также используется строго типизированный язык программирования для предотвращения ошибок типизации в коде, которые могут привести к уязвимостям.

Как захостить проект

Windows

  1. Запустить скрипт compile_pars.ps1 (для этого нужно открыть PowerShell и ввести .\compile_pars.ps1).
  2. Создать файл .env New-Item -Path .env -ItemType file и внести в него свои данные по примеру .env.example.
  3. Запуск python manage.py runserver

Linux

  1. Использовать makefile, для этого нужно ввести в терминале make build
  2. Создать файл .env (touch .env) по примеру .env.example. внеся в него свои данные.
  3. Запуск make run

Docker

  1. Создать файл .env по примеру .env.example. внеся в него свои данные.
  2. Запустите docker-compose build
  3. Запуск docker-compose up