Skip to content

Dreams is a platform that consume several APIs to provide travel packages or airline tickets, buses, car rentals. The project aims to study the architecture of Microservices, using Apache Kafka, NodeJs, Docker and more.

Notifications You must be signed in to change notification settings

christiancesar/dreams-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dreams é um Projeto de Conclusão de Curso tem como objetivo aprofundar e por em prática alguns padrões de projetos listados pelos autores como Chris Richardson, Sam Newman, Marin Fowler, entre outros. No contexto da arquitetura de microsserviços.

No decorrer do artigo faço uso desta aplicação para explificar e aplicar os conceitos abordados pelos autores. O objetivo principal deste projeto é mostrar a complexidad

Requirements 🛠️

  • Nodejs
  • KafkaJs
  • Docker
  • Docker Compose
  • Insomnia

Begin 🔰

$ git clone https://github.com/christiancesar/dreams-project.git

$ git yarn

$ docker run --name dreams -e POSTGRES_USER=dreams -e POSTGRES_PASSWORD=dreams -d -p 5432:5432 postgres

#On project execute
$ docker-compose up

Topicos

Dreams

  • dreams-users -> Comunicação entre a api e o microsserviço Users

Users

  • users-dreams -> Comunicação entre Users e api

To-do

Backend

  • Isolar regra de negocio do Producer e Cosumer para que possa ser usado em toda api e microsserviços, um exemplo seria https://www.sohamkamani.com/nodejs/working-with-kafka/

  • A api tem de receber a requisição e disparar para o microsserviços uma String com o que deseja, exemplo seria:

      await request.producer.send({
        topic: 'dreams-users',
        messages: [
          { value: 'List All Users'}
        ]
      })

    E esperar uma resposta, incialmente é apenas para compreender o funcionamento.

  • Inclusão de um banco de dados dentro do microsserviço de usuários

  • Analisar o uso do PrismaJs ou TypeOrm

  • Fazer uso do Prisma para criação de banco de dados, isolar a camada de banco usando Repository Pattern

  • Fazer teste de conexão, inclusão de informações e listagem

  • Criar usuário enviando informações atrávez do insomnia para a api, a api deve enviar essas informações para o microsserviço que deverá salvar dentro de um banco de dados Postgres

  • Terminar CRUD dos usuários

  • Fazer teste com o Frontend

Ideia

-> O sistema deve fornecer o cadastro de usuários; -> O sistema deve fornecer pacotes incluindo passagens areas, hotel e translado; -> O sistema deve prover informações completas referentes aos voos, hotel(endereço, checkOut, checkIn), translado; -> Após a confirmação de pagamento, através do Stripe, o sistema deve salvar todas as informações do pacote e deixar disponivel no dashboard do usuario, o pacote adquirido;

? O carregamento das informações devem ser feitas via kafka ou gRPC

User

  • Cadastrar usuario dentro do sistema -> O Frontend irá se comunicar com a api gatway -> A Api Gatway irá mandar os dados para o microsserviço de usuarios -> No microsserviço irá salvar os dados e enviar o email para o cliente confirmar o cadastro -> O Usuário confirmando o cadastro o microsserviço irá enviar uma mensagem para o topico competente por informar que o usuario é valido -> O Consumer dentro da API Gatway irá ficar ouvindo o topico de users-created, para recepcionar os dados de usuarios cadastrados.

Dreams

-> Para que a consulta seja feita de forma mais rápida, a API Gatway persistirá os dados dentro de um banco de dados NoSql(MongoDB)

About

Dreams is a platform that consume several APIs to provide travel packages or airline tickets, buses, car rentals. The project aims to study the architecture of Microservices, using Apache Kafka, NodeJs, Docker and more.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published