Skip to content

JoaoPedro8807/drf-hotel-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Administração de Hotel com Django REST Framework

Uma API para administrar hotéis, onde usuários podem se cadastrar como hóspedes ou hoteleiros. Hoteleiros podem criar seus hotéis com seus respectivos quartos personalizado e visualizar reserva feitas e quartos ocupados em seu hotel. Hóspedes procurarar por quarto ou por hotel, podem fazer reservas para algum quarto do hotel, editar sua reserva. Deploy da API:

🔨 Funcionalidades:

  • 1: Cadastro de usuários como hóspedes ou hoteleiros.
  • 2: Hoteleiros podem criar e gerenciar seus hotéis e quartos.
  • 3: Hóspedes podem fazer reservas para quartos de hotéis.
  • 4: Confirmação e finalização de reservar com agendamentos
  • 5: Notificação por email de usuário para cada reserva

🛠️ DOCS SWAGGER :

DER

🛠️ Schema/DER:

DER

💬 Algumas tabelas que não está aqui, eu reaproveite do próprio django. A tabela UserAuth é um model reescrito do User padrão do django com algumas modificações, mas ela continua sendo a responsável por autenticação e autorização.

📈 Fluxo de dados

DIAGRAMA

O fluxo de dados para cada usuário segue esse diagrama, com algumas pequenas alterações.




E o sistema de chace com Redis, segue o diagrama abaixo, onde o cache da view é guardado com certa chave, e qualquer alteração no PosgresSQL, o signals do django consegue excluir essa key do redis e consequentemente atualizar o cachce da página.

DIAGRAMA

  • 1: Todo o processo de criação e login é feito com AuthUser, em seguida é criado seus respectivos usuários específicos (guest ou hotelier).

  • 2: A permissão para fazer um CRUD em cada instancia é baseada em cada uma dessas tabelas de usuário específicos.

  • 3: O celery é usado tanto como servidor de background para tasks asincronas que são mais demoradas e possíveis de se fazer em outro detereminado tempo, além também de ser usado para agendamento de tarefas, como: para finalizar o booking e atualizar o room (nesse caso agendada de acordo end_date do booking), com o celery-beat-schedule.

  • 4: O Redis utilizei tanto pra broker e banco pro celery e também para cache em alguns endpoints

  • 5 Cada usuário tem seu endpoint de perfil com seus dados importantes:

    • Hotelier com os dados pessoais e do hotel, como por exemplo rooms, bookings em andamento etc.

    • Hóspedes dados booking e do quarto que está hospedado, além do histórico e dados pessoais.

Video com um pouco do funcionamento da API : https://www.youtube.com/watch?v=biL52SBehxw

✔️ Tecnologias utilizadas

Django REST Framework
PostgreSQL
Celery
Redis
Docker


João Pedro

Releases

No releases published

Packages

No packages published

Languages