Skip to content

Тестовое задание для компании Effective Mobile

Notifications You must be signed in to change notification settings

MLKolt/Barter_project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Платформа для обмена "Barter"


Описание

Монолитное веб-приложение на Django для организации обмена вещами между пользователями.
Пользователи могут размещать объявления о товарах для обмена, просматривать чужие объявления и отправлять предложения на обмен.

В приложении организован удобный инфтерфейс, а также необходимая функциональность:

  • Создание, редактирование и удаление объявлений для залогиненных пользователей.
  • Отдельные страницы просмотра всех объявлений и только своих (для авторизованного пользователя).
  • Фильтрация и поиск по ключевым словам в заголовке и описании объявления.
  • Страницы детального просмотра объявлений, на которых есть опция "предложить обмен" при определённых условиях:
    • Пользователь должен быть авторизован.
    • Пользователь не может предложить обмен сам себе.
  • Отдельные страницы для просмотра исходящих и входящих предложений, фильтрация по статусу для обеих групп, а также поиск по отправителям для входящих.
    • Важно:
      В момент, пока предложение находится на рассмотрении, предложенный товар скрывается из списка всех товаров платформы. Также пользователь не может снова предложить этот товар до окончания рассмотрения предложения другой стороной. При принятии предложения второй стороной из списка скрываются оба товара.
  • Flash-уведомления об операциях с объявлениями, предложениями и учётными записями.
  • Возможность регистрации и смены пароля через email (по умолчанию настроено на консольный вывод сообщения и только для пользователей, у которых указана почта).
  • Admin-панель с поиском и фильтрацией в моделях.
  • Также создана модель Category для категорий. Новые категории можно создавать только через admin-панель.
  • Реализована API для получения всех объявлений или только конкретного по id. Организована автоматическая документация.

Технологический стек

  • Язык: Python 3.8+.
  • Веб-фреймворк: Django 4+ (с использованием встроенной ORM).
  • Шаблонизация: Django Templates для создания HTML-страниц.
  • База данных: PostgreSQL (по умолчанию).
  • Django REST Framework. Автоматическая документация API (Swagger-UI или ReDoc).
  • Тестирование: Unittest для проверки ключевых функций приложения.

Установка и настройка

  1. Клонируем репозиторий:
git clone https://github.com/MLKolt/Effective_Mobile_Test.git
  1. Создаем виртуальное окружение:
python -m venv .venv
# на Linux/macOS:
source .venv/bin/activate
# на Windows:
.venv\Scripts\activate
  1. Устанавливаем зависимости:
pip install --upgrade pip
pip install -r requirements.txt
  1. Применяем миграции:
py manage.py migrate
  1. Создаем суперпользователя:
py manage.py createsuperuser

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

  1. Запуск сервера:
py manage.py runserver
# HTML-интерфейс:  
http://127.0.0.1:8000/ads/

#Базовый JSON-эндпоинт:  
http://127.0.0.1:8000/api/ads/
#Swagger-UI:  
http://127.0.0.1:8000/api/swagger/
# ReDoc:  
http://127.0.0.1:8000/api/redoc/
  1. Запуск тестов:
py manage.py test ads

About

Тестовое задание для компании Effective Mobile

Resources

Stars

Watchers

Forks