- 🚀 Описание проекта
- 🛠 Стек технологий
- 📒 Возможности сервиса
- 💻 Инструкция по установке
- 👨💻 Подготовка базы данных
- 👨💻 Запуск проекта
- 👨💻 Docker контейнер
- 👥 Contributors
Share & Park представляет собой веб-сервис краткосрочной аренды парковочных мест. Благодаря своим функциям сервис выступает в качестве площадки, на которой владельцы парковочных мест могут предложить услуги аренды всем заинтересованным автовладельцам.
В ходе создания проекта применялись различные инстументы и технологии. Они представлены ниже:
Каждый пользователь может просматривать каталог парковочных мест других пользователей. Для удобства пользователя предусмотрен поиск по карте, фильтрация по ближайшим станциям метро (отсортированы в алфавитном порядке), стоимости аренды и статусу (готов/не готов к аренде). Также реализован полнотекстовый поиск по адресу парковочного места.
После авторизации пользователь сервиса получает доступ в личный кабинет, в котором может создавать/редактировать данные своего профиля (ФИО, номер телефона) и привязывать данные банковской карты (Номер карты, срок действия, CVC/CVV).
В разделе ЛК "Владелец парковки" каждый авторизованный пользователь может создавать/редактировать/удалять парковочные места. При создании парковочного места требуется указать расположение на карте, добавить фотографию и указать остальные данные (адрес, ближайшее метро, стоимость часа аренды, описание и статус парковочного места).
Выбрав подходящее парковочное место, пользователь может арендовать его. Так информация об аренде попадает в раздел ЛК "Арендатор". После завешения аренды происходит определение стоимости аренды в пересчете на минуты. Так создается банковский чек, содержащий данные об оплате услуги аренды (бенифициар, арендатор, стоимость аренды, время оплаты).
На основе данных банковских операций в разделе "Владелец парковки" хранится история пополнения баланса карты за устуги парковки. В соответствии с этим в разделе "Арендатор" хранится история списаний за услуги парковки.
База данных в числе остальных содержит 6 ключевых моделей: Пользователь
, Парковочное место
, Аренда
, Банковская карта
, Квитанция об оплате
, Строчка заказа
. Ниже представлена графическая схема моделей и их взаимосвязей.
1.1 Обновляете систему, уставливаете и запускаете Postgres
sudo apt update
sudo apt install postgis postgresql-14-postgis-3
1.2 Заходите в аккаунт Postgres, открываете терминал Postgres, уставливаете и запускаете Postgres
sudo -i -u postgres
psql
1.3 Создаете базу данных, подключаетесь и устанавливаете расширение для полнотекстового поиска (pg_trgm)
CREATE DATABASE parking_prod;
\c parking_prod;
CREATE EXTENSION pg_trgm;
2.1 Клонируете репозиторий
git clone https://github.com/XanderMoroz/Moscow_Parking.git
2.2 Уставливаете, распаковываете и активируете виртуальное окружение (virtual environment)
pip3 install virtualenv
virtualenv env
. env/bin/activate
2.3 Уставливаете зависимости проекта:
pip install -r requirements.txt
2.4 Переходите в директорию проекта:
cd ShareAndPark
2.5 Создаете и применяете миграции:
python3 -m manage makemigrations
python3 -m manage migrate
2.6 Создаете нового пользователя:
python3 -m manage createsuperuser
2.7 Запускаете проект:
python3 -m manage runserver
- Разворачиваете 3 контейнера (Django + Nginx + Postgis):
docker compose up build -d
- Заходите через браузер по адресу:
localhost:8000