Giter VIP home page Giter VIP logo

aquamarine's Introduction

Main-logo

Python Version Django Version DRF

Сайт онлайн записи клиентов на услуги автомоечного комплекса и администрирования работы компании.

Рабочую версию сайта вы можете посмотреть по ссылке aqua-marine.pro

Описание работы сайта

Сайт состоит из четырёх независимых интерфейсов.

  • Публичная часть
  • Интерфейс менеджера
  • Интерфейс администратора
  • API

Публичная часть:

Главная страница сайта, где можно узнать о работе компании и её преимуществах перед конкурентами, заказать звонок от компании.

head

Также можно ознакомиться с прайсом услуг компании.
Цены на услуги в прайс-листе, обновляются с изменениями цен администратором в админ-панели.

price

В нижней части находится интерактивная Яндекс карта с месторасположением автомоечного комплекса и футер с контактными данными.

footer

После авторизации пользователя, в зависимости от прав доступа, будет формироваться выпадающее меню

header

menu1 menu2 menu3

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

profile user registrations

Предусмотрена возможность восстановления пароля пользователя через электронную почту.

login reset password

Вкладка "Доступное время" показывает свободные дни и время с учётом выбранных услуг, а также общее время работ и их стоимость.
Цены на услуги отображаются в зависимости от категории автомобиля клиента (седан/хетчбек, кроссовер или внедорожник).
Время, которое уже прошло, автоматически становится недоступным для записи.

page registrations

В случае успешной записи будет соответствующее уведомление.
Но если время, которое выбрал пользователь уже занято, пока он регистрировал запись, то появится уведомление с предложением выбрать другое время.

registrations done registrations error

У пользователей с правами менеджера или администратора, при записи на услуги, появляются поля для изменения марки и модели автомобиля, телефона и имени. Так как многие клиенты записываются по телефону указывая свои контактные данные. Также появляется вкладка "Менеджер" для быстрого перехода к интерфейсу менеджера для администрирования записей клиентов.

manager registration

Интерфейс менеджера:

Предназначен для менеджера или администратора. Здесь менеджер получает полную информация на выбранный день (какой автомобиль, какие выбраны услуги и контакты клиента). Записи выводятся на текущий день, а также на ближайшие 2 дня.
Страница автоматически обновляет данные при появлении новой записи или заявки на звонок. Обновление происходит с использованием протокола Websocket и signals.

manager interface

Также на странице отображена кнопка "Запросы звонка" которая начинает сигнализировать миганием, при поступлении запроса звонка от клиента. Кнопка перестаёт мигать, когда все телефонные звонки будут обработаны менеджером.

request call widget

Интерфейс администратора:

Вкладка "Админ - панель" в выпадающем меню пользователя. Сюда имеет доступ только администратор. Для обновления услуг и их цен, регистрации новых пользователей, для просмотра истории всех записей клиентов, в течении года.

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

REST API:

Реализован с использованием Django Rest Framework.
Операции CRUD взаимодействия с базой данных осуществляются по следующим адресам url:

  • localhost:8000/api/v1/service-list/ - GET запрос на получение всех услуг (наименование услуги, продолжительность по времени, цена)
  • localhost:8000/api/v1/carwash-request-call/ - POST запрос на создание "Запрос звонка". Требуется авторизация пользователя.
  • localhost:8000/api/v1/carwash-registration/ - POST запрос на создание записи пользователя, на услуги автомоечного комплекса. Требуется авторизация пользователя.
  • localhost:8000/api/v1/carwash-user-registration-list/ - GET запрос на получение всех записей пользователя. Требуется авторизация пользователя.
  • localhost:8000/api/v1/carwash-user-registration-list/<int:id>/ - DELETE запрос на удаление записи пользователя, указанной в запросе. Требуется авторизация пользователя.
  • localhost:8000/api/v1/user-profile/ - GET и PUT запросы для получения данных профиля пользователя и их изменения. Требуется авторизация пользователя.

Установка

Предварительно создайте директорию для приложения (some directory)
Клонируйте код репозитория в созданную директорию (в some directory):

git clone https://github.com/SwedL/aquamarine.git

Также в каталоге проекта (some directory) создайте виртуальное окружение, выполнив команду:

  • Windows: python -m venv venv
  • Linux: python3 -m venv venv

Активируйте его командой:

  • Windows: .\venv\Scripts\activate
  • Linux: source venv/bin/activate

Перейдите в каталог aquamarine и установите зависимости в виртуальное окружение:

cd aquamarine
pip install -r requirements.txt

Создайте файл .env в каталоге aquamarine/ и положите туда такой код:

!Важно: SECRET_KEY замените на свой

DEBUG=True
SECRET_KEY='vu1c-=svhigsn81!1doknfa2zxchlq&^37vdyqgc165a8wswjr'
CACHE_FILE=aquamarine_cache

Для обеспечения оптимальной производительности и межпроцессорного обмена сообщениями канальных слоёв необходимо установить Redis
https://redis.io/docs/install/install-redis/

Создайте файл базы данных SQLite и проведите миграции моделей командой:

python manage.py migrate

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

  • Windows: python manage.py loaddata carwash\fixtures\services.json
  • Linux: python manage.py loaddata carwash/fixtures/services.json

Создайте модель суперпользователя (login: эл.почта) командой:

python manage.py createsuperuser

Запустите сервер:

python manage.py runserver

Тестирование

Проект покрыт различными тестами, которые проверяют его работоспособность.
Тесты запускаются командой:

python manage.py test

Автор проекта

  • Осминин Алексей - SwedL

aquamarine's People

Contributors

swedl avatar dependabot[bot] avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.