Code Monkey home page Code Monkey logo

hotels's Introduction

Приложение для бронирования комнат в отеле

Приложение разработано как API для frontend. Данное приложение предусматривает регистрацию, авторизацию, выход из аккаунта. Данные методы реализованы с помощью JWT-токена. В приложении разработаны собственные права для пользователей. Токен помещается в cookies, а не в headers. Реализована только часть API.

Требования

  • Для комнат должны быть поля: номер/название, стоимость за сутки, количество мест.

    Routes:
    
    - api/rooms/
    
  • Пользователи должны уметь фильтровать и сортировать комнаты по цене, по количеству мест.

    Routes:
      
    - api/rooms/
    
  • Пользователи должны уметь искать свободные комнаты в заданном временном интервале.

    Routes:
    
    - api/rooms/
    
  • Пользователи должны уметь забронировать свободную комнату.

    Routes:
    
    - api/bookings/
    
  • Суперюзер должен уметь добавлять/удалять/редактировать комнаты и редактировать записи о бронях через админ панель Django.

    Routes:
    
    - admin/
    
  • Брони могут быть отменены как самим юзером, так и суперюзером.

    Routes:
    
    - admin/
    - api/bookings/id METHOD: DELETE
    
  • Пользователи должны уметь регистрироваться и авторизовываться (логиниться).

    Routes:
    
    - api/users/auth/login
    - api/users/auth/logout
    - api/users/auth/register
    
  • Чтобы забронировать комнату пользователи должны быть авторизованными. Просматривать комнаты можно без логина. Авторизованные пользователи должны видеть свои брони.

    Routes:
    
    - api/rooms/
    - api/bookings/id METHOD: DELETE
    - api/users/me
    

P.S. Остальные роуты и фичи можно посмотреть по роуту docs/ 👉🏻👈🏻

Стек

  • Django;
  • DRF;
  • СУБД предпочтительно PostgreSQL, но не обязательно. Главное не SQLite;
  • При необходимости можно добавлять другие библиотеки.

Дополнительно

  • Автотесты;
  • Аннотации типов;
  • Линтер;
  • Автоформатирование кода;
  • Документация к API;
  • Инструкция по запуску приложения

Используемый стек

  • Django
  • DRF
  • PostgreSQL

Особенности

  • Для приложения предусмотрено два вида документации: swagger и базовая документация drf_yasg. Первая находмтся по роуту /docs. Вторая же появляется при обращении на определенный метод API.
  • Для приложения разработана инструкция по сборке. Сборка выполняется с помощью Docker.
  • Для приложения предусмотрен линтер flake8. При запуске приложения в Docker происходит автоматическая проверка кода директории apps.
  • Специально для удобства сборки был также загружен файл .env. (знаю, что его нельзя загружать😢...всё для удобства)

Сборка

Данное приложение развернуто в Docker для удобства проверки. Для сборки приложения необходимо установить Docker. Для удобства проверки все миграции в приложении запускаются и создаются автоматически, а также БД заполняется тестовыми данными с помощью фикстур. Для сборки приложения необходимо выполнить следующие действия.

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

    git clone https://github.com/ITSamantha/hotels
    cd hotels
    
  2. Выполнить build в директории приложения с помощью следующей команды:

    docker compose build --no-cache
    
  3. Для запуска приложения необходимо выполнить следующую команду:

    docker compose build up
    
  4. Можно начинать работу с приложением. Для работы создан суперюзер. Ниже представлены данные для входа под аккаунтом админа, а также данные для входа под аккаунтом обычного пользователя.

    Для администратора:
      username: admin
      password: admin
    
    Для пользователя:
      username: pinguin
      password: pinguin
    

hotels's People

Contributors

itsamantha 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.