Sobre | Funcionalidades | Tecnologias | Documentação | Como Executar | Equipe
Projeto desenvolvido como requisito para aprovação na primeira fase da Pós-graduação em Software Architecture na instituição de ensino Fiap.
Em síntese, este projeto foi desenvolvido para atender aos requisitos de um sistema de backend monolítico que gerencia pedidos e pagamentos, bem como a preparação e entrega de pedidos. O projeto utiliza a Arquitetura Hexagonal e segue os padrões de Domain-Driven Design (DDD), conforme apresentado nas aulas.
✔️ Cadastro do Cliente: APIs para criar, editar e remover clientes, além de identificar clientes via CPF;
✔️ Gestão de Produtos: APIs para criar, editar, remover produtos e buscar produtos por categoria;
✔️ Fake Checkout: API para enviar produtos escolhidos para a fila, simulando a finalização do pedido;
✔️ Listagem de Pedidos: API para listar todos os pedidos;
✔️ Swagger: Disponibilização do Swagger para consumo das APIs.
As seguintes ferramentas foram usadas na construção do projeto:
- TypeScript e Node.js para o desenvolvimento da aplicação.
- Express como framework web.
- Arquitetura Hexagonal para organização do código.
- Swagger para documentação das APIs.
- Docker e Docker Compose para contêinerização da aplicação.
- MySQL como banco de dados.
A documentação do sistema foi desenvolvida seguindo os princípios de DDD com Event Storming, incluindo todos os tipos de diagrama apresentados na aula 6 do módulo de DDD.
- Realização do Pedido e Pagamento
- Preparação e Entrega do Pedido
Os diagramas foram desenhados seguindo os padrões explicados na aula e utilizando a linguagem ubíqua e, podem ser visualizados no nosso MIRO.
- Docker e Docker Compose instalados na máquina.
-
Clone este repositório para sua máquina local.
git clone https://github.com/jennyffermorais/RESTfull-API-hexagonal-architecture.git cd RESTfull-API-hexagonal-architecture
-
Configure as variáveis de ambiente. Crie um arquivo
.env
com as seguintes variáveis:MYSQL_ROOT_PASSWORD=mysql MYSQL_PASSWORD=jm_password MYSQL_DATABASE=tech_challenge_BD MYSQL_USER=jm_user MYSQL_HOST=mysql-db MYSQL_PORT=3306 APP_PORT=3000
-
Compile e construa a aplicação usando Docker.
docker-compose up --build
-
Acesse o Swagger para testar as APIs.
- O Swagger estará disponível em
http://localhost:3000/docs
.
- O Swagger estará disponível em
A aplicação está configurada para utilizar MySQL conforme especificado no arquivo docker-compose.yml
.
Para simular um ambiente Kubernetes, siga os passos abaixo:
-
Habilitar Kubernetes no Docker Desktop
- Certifique-se de que a função Kubernetes está habilitada no Docker Desktop.
-
Instalar a Ferramenta Kubectl
- Se ainda não tiver o
kubectl
instalado, siga as instruções aqui.
- Se ainda não tiver o
Para criar os recursos necessários para o banco de dados MySQL, execute o seguinte comando:
kubectl apply -f kubernetes/MySQL
Para criar os recursos necessários para a aplicação, execute o seguinte comando:
kubectl apply -f kubernetes/Application
Após a criação dos recursos, a aplicação estará disponível no seguinte endereço:
http://localhost:3000
O vídeo de apresentação do projeto está disponível no YouTube. Nele, detalhamos a arquitetura do cluster Kubernetes e explicamos os principais componentes e configurações envolvidos.