Web-приложение обеспечивающее возможность онлайн записи клиентов на услуги автомоечного комплекса и администрирования работы компании.
Рабочую версию сайта вы можете на https://aquamarine-pro.ru
Сайт состоит из четырёх независимых интерфейсов.
- Публичная часть
- Интерфейс менеджера
- Интерфейс администратора
- API
Главная страница сайта, где можно узнать о работе компании и её преимуществах перед конкурентами, заказать звонок от компании.
Также можно ознакомиться с прайсом услуг компании.
Цены на услуги в прайс-листе, обновляются с изменениями цен администратором в админ-панели.
В нижней части находится интерактивная Яндекс карта с месторасположением автомоечного комплекса и футер с контактными данными.
После авторизации пользователя, в зависимости от прав доступа, будет формироваться выпадающее меню
В "Профиле" пользователь может изменять свои данные, пароль, кроме логина и индивидуального прайса на автомобиль.
В "Мои записи" пользователь может посмотреть информацию о своих записях на автомойку и отменить их в случае необходимости.
Предусмотрена возможность восстановления пароля пользователя через электронную почту.
Вкладка "Доступное время" показывает свободные дни и время с учётом выбранных услуг, а также общее время работ и их стоимость.
Цены на услуги отображаются в зависимости от категории автомобиля клиента (седан/хетчбек, кроссовер или внедорожник).
Время, которое уже прошло, автоматически становится недоступным для записи.
В случае успешной записи будет соответствующее уведомление.
Но если время, которое выбрал пользователь уже занято, пока он регистрировал запись, то появится уведомление с предложением выбрать другое время.
У пользователей с правами менеджера или администратора, при записи на услуги, появляются поля для изменения марки и модели автомобиля, телефона и имени. Так как многие клиенты записываются по телефону указывая свои контактные данные. Также появляется вкладка "Менеджер" для быстрого перехода к интерфейсу менеджера для администрирования записей клиентов.
Предназначен для менеджера или администратора. Здесь менеджер получает полную информация на выбранный день (какой автомобиль, какие выбраны услуги и контакты клиента).
Записи выводятся на текущий день, а также на ближайшие 2 дня.
Страница автоматически обновляет данные при появлении новой записи или заявки на звонок.
Обновление происходит с использованием протокола Websocket и signals.
Также на странице отображена кнопка "Запросы звонка" которая начинает сигнализировать миганием, при поступлении запроса звонка от клиента. Кнопка перестаёт мигать, когда все телефонные звонки будут обработаны менеджером.
Вкладка "Админ - панель" в выпадающем меню пользователя. Сюда имеет доступ только администратор. Для обновления услуг и их цен, регистрации новых пользователей, для просмотра истории всех записей клиентов, в течение года.
В связи с пожеланием заказчика сайта, регистрация новых пользователей возможна только непосредственно администратором.
- Склонируйте репозиторий:
git clone https://github.com/SwedL/aquamarine.git
- Перейдите в каталог проекта
cd aquamarine
- Установите переменные окружения. Создайте файл .env и скопируйте содержимое из .env.dev.example, подставьте свои значения.
- Запустите контейнеры.
docker compose up --build
Создайте модель суперпользователя
- Войдите в терминал контейнера с помощью команды:
docker exec -it project bash
- Создайте суперпользователя (login: эл.почта):
python3 manage.py createsuperuser
- Склонируйте репозиторий в директорию /home:
git clone https://github.com/SwedL/aquamarine.git
- Перейдите в каталог проекта
cd aquamarine
- Установите переменные окружения. Создайте файл .env и скопируйте содержимое из .env.prod.example, подставьте свои значения.
- Создайте директории для certbot, выполнив:
mkdir -p certbot/conf
mkdir certbot/www
- Измените в docker-compose.prod.yml в строке 76 ваш email и ваш домен, для получения SSL-сертификата от Let's Encrypt
- Перейдите в директорию nginx/prod/default.conf и в строках 4, 17, 19, 20 установите значение вашего домена
- Запустите контейнеры.
docker compose -f docker-compose.prod.yml up --build
Создайте модель суперпользователя
- Войдите в терминал контейнера с помощью команды:
docker exec -it project bash
- Создайте суперпользователя (login: эл.почта):
python3 manage.py createsuperuser
Проект организован в соответствии с принципами слоистой архитектуры. Архитектура проекта:
aquamarine/
├── nginx/ # Директория конфигурационных файлов обратного прокси сервера
│ └── ...
└── project/ # Директория Django проекта
├── api/ # API endpoints
│ └── carwash/
│ ├── services/ # Сервисы API - выполняют операции над данными
│ ├── use_cases/ # Юзкейсы API - бизнес-логика на уровне сценариев использования
│ └── ...
├── aquamarine/ # Django проект aquamarine
│ └── ...
├── carwash/ # Приложение carwash
│ ├── exceptions # Исключения
│ ├── fixtures/ # Начальные данные для заполнения БД
│ ├── services/ # Сервисы - выполняют операции над данными
│ ├── tests/ # Тесты шаблонов, форм, представлений
│ ├── use_cases/ # Юзкейсы - бизнес-логика на уровне сценариев использования
│ ├── consumers.py # Обработка асинхронных событий websocket соединений
│ ├── models.py # Модели приложения
│ ├── routing.py # Маршрутизация асинхронных событий websocket соединений
│ ├── serializers.py # Сериализаторы моделей приложения и входных данных API
│ └── ...
├── common/ # Общие классы, методы, объекты
│ └── utils.py
├── templates/ # Шаблоны для собственной настройки интерфейса администратора
├── users/ # Приложение users
│ ├── permissions/ # Разрешения для пользователей
│ ├── tests # Тесты шаблонов, форм, представлений
│ ├── models.py # Модели приложения
│ ├── serializers.py # Сериализаторы моделей приложения
│ └── ...
├── Dockerfile
├── manage.py
└── pyproject.toml # Конфигурация Poetry
Документация API доступна по адресу: http://localhost:8000/swaggerui/
Проект покрыт различными тестами, которые проверяют его работоспособность.
При локальном запуске тесты запускаются командой:
python manage.py test
При запуске в Docker контейнере предварительно войдите в терминал контейнера:
docker exec -it project bash
- Осминин Алексей - SwedL