Skip to content

Cервис бронирования отелей. Реализован с помощью FastAPI. Используется асинхронный подход к запросам с базе данных. Пользователи могут просматривать список доступных отелей, бронировать номера на определённые даты, а также управлять своими бронями через удобный API.

License

Notifications You must be signed in to change notification settings

tims1de/booking-fastapi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cервис booking

Python FastAPI PostgreSQL Alembic SQLAlchemy Docker Redis Celery Sentry Prometheus Grafana Uvicorn Gunicorn

Описание

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

Превью Превью Превью Превью Превью Превью Превью Превью Превью

Регистрация и аутентификация

  • Пользовательская система регистрации
  • Неавторизованные пользователи имеют доступ только для чтения
  • Аутентификация через куки и JWT-токены
  • Создание новых записей разрешено только авторизованным пользователям
  • Просмотр персональной информации в профиле

Бронирование и управление

  • Бронирование номеров в отелях
  • Просмотр и отмена своих бронирований
  • Отправка email-подтверждения через Celery

Поиск и просмотр отелей

  • Фильтрация отелей по местоположению и датам
  • Отображение доступных отелей на странице
  • Загрузка и обработка изображений отелей с помощью Celery

Администрирование и инфраструктура

  • Управление сервисом через админ-панель
  • Кеширование и обработка фоновых задач через Redis
  • Версионирование API
  • Мониторинг ошибок через Sentry
  • Кастомная система логирования
  • Сбор метрик с Prometheus и визуализация в Grafana
  • Развертывание в Docker

Локально документация доступна по адресу: http://localhost:8000/v1/docs/

Локальный запуск проекта

  • Предварительно необходимо установить Docker и Redis для вашей системы.

  • Склонировать репозиторий:

   git clone <ссылка на репозиторий>

Cоздать и активировать виртуальное окружение:

Команды для установки виртуального окружения на Mac или Linux:

   python3 -m venv env
   source env\bin\activate

Команды для Windows:

   python -m venv venv
   source venv\Scripts\activate
  • Создать файл .env по образцу:
   cp .env-non-dev .env
  • Установить зависимости из файла requirements.txt:
   cd ..
   pip install -r requirements.txt
  • Для создания миграций выполнить команду:
   alembic init migrations
  • В папку migrations в env файл вставьте следующий код:
from logging.config import fileConfig

from alembic import context
from sqlalchemy import engine_from_config, pool

from bookings.models import Booking
from config import settings
from database import Base
from hotels.models import Hotel
from hotels.rooms.models import Room
from users.models import User


config = context.config
config.set_main_option('sqlalchemy.url', f'{settings.DATABASE_URL}?async_fallback=True')

if config.config_file_name is not None:
    fileConfig(config.config_file_name)

target_metadata = Base.metadata
  • Инициализировать БД:
    alembic revision --autogenerate -m "comment"  
  • Применить миграцию:
    alembic upgrade head 
  • Запустить проект:
    uvicorn main:app --reload   
  • Запустить Redis:
    redis-server.exe
    redis-cli.exe
  • Запустить Celery:
    celery -A tasks.celery_app:celery worker --loglevel=INFO --pool=solo
  • Запустить Flower:
    celery -A tasks.celery_app:celery flower

Автор

Куприянов Тимофей - https://github.com/tims1de

About

Cервис бронирования отелей. Реализован с помощью FastAPI. Используется асинхронный подход к запросам с базе данных. Пользователи могут просматривать список доступных отелей, бронировать номера на определённые даты, а также управлять своими бронями через удобный API.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages