Giter Club home page Giter Club logo

beatbox-booking-backend's Introduction

Python version 3.12.2

Запуск приложения

  1. Создайте .env файл в корневой директории с переменными из test.env

  2. Измените поля со значением changeme и установите корректные значения для подключения к БД

  3. Установите poetry и зависимости с помощью него (команды приведены ниже)

  4. Локальный запуск:

    dev-launch.sh
  5. Запуск в Docker-контейнере:

docker compose up --build

Установка и обновление зависимостей

poetry install --with dev,test
poetry update --with dev
poetry add <packagename> --group dev
poetry remove <packagename> --group test

Форматирование кода

black ./app
black --check . --diff

Запуск тестов

pytest -v

Миграции БД

alembic upgrade head

beatbox-booking-backend's People

Contributors

codenjoyer avatar 2picode avatar dolbikcop avatar naughtyzombr avatar

Stargazers

 avatar

Watchers

 avatar  avatar

beatbox-booking-backend's Issues

Дополнить модели БД

Всем моделям, в которых есть Datetime, добавить временную зону

Студия

Добавить геопозицию (longitude, latitude). Добавить время работы студии и броней, каждые должны быть кратны получасу.

site_url

номер телефона

tg

vk

wa

Сотрудник

user_id

studio_id

Комната

Добавить отношение к списку файлов

Нужна ассоц. таблица для файлов (room_id, file_url)

Файл

Url (PK)

Тип (enum фото, видео)

Доп. услуги

Название, стоимость, описание,

Слот

Флаг is_available (нейминг?, доступен ли для брони)

Комната

Бронь

Пользователь

Статус (ожидает оплату, время для оплаты истекло, забронировано)

Слот

Отзыв

Добавить опциональный room_id

Добавить опциональность тексту

Пользователь (посетитель, Visitor)

Номер телефона

Разграничить роли пользователей

Сотрудники студии (отношения один ко многим от студии) (Employee)

Привилегии посетителя + операции создания, обновления, удаления над студиями, комнатами. Редактировать время открытия и закрытия студии, возможность изменить состояние слота (открыто, закрыто для записи)

Посетитель (Visitor)

Привилегии гостя + может бронировать комнаты, оставлять отзывы на те, в которых был. Отличается от гостя предоставленными почтой, номером телефона и паролем. Все эти поля обязательны. Может посмотреть брони для всей студии на будущий период, для комнаты на будущий период (период времени, например - конкретный день)

Гость (Guest)

Просмотр студий, отзывов на них

Поиск по студиям

Поиск по case-insensitive вхождению строки в названии студии
Добавить соответствующий query параметр в эндпоинт получения всех студий

Рейтинг и отзывы

Рейтинг и отзывы

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

Функционал бронирования

Функционал бронирования

Хранение истории бронирования пользователя (хранение требование подтверждение брони)

Внесение предоплаты (требование подтверждение брони) за 2 часа до визита (опционально)

Скрипт для загрузки демо данных

Отдельный скрипт при запуске которого будут загружены демонстрационные данные в БД. В числе данных должны быть студии, комнаты, отзывы на студии, прошедшие брони (опционально)

Спроектировать модуль для отправки писем

Модуль должен принимать сообщения из очереди RabbitMQ с контейнера, подключаться к почтовому серверу и отправлять письмо с наполнением из сообщения. Обрабатывать возможные ошибки и ситуации неудачной отправки (в другую очередь по TTL)

Наполнить Dockerfile

Дописать его так, чтобы сервер поднимался в контейнере по команде docker run --build

Аутентификация пользователей

Чтобы не все руками писать, посмотри на fastapi-login. Используем JWT Bearer токены. Пользователь может быть обычным и суперпользователем. Нужен один эндпоинт (типа /auth/token), который будет требовать логин и пароль, для получения токена. Хеширование пароля обязательно! Удачи!
https://github.com/MushroomMaula/fastapi_login

Рефакторинг

  • время работы студии поменять на время от 00:00 до 23:59
  • форматтеры на нормальные отступы и переносы аргументов функции
  • логика создания пользователя из зависимостей в сервис
  • не прокидывать сессию бд в эндпоинты
  • сменить url'ы эндпоинтов комнат
  • добавить валидацию на номер телефона в пользователе и студии

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.