Esse projeto é o Tech Challenge da fase 1 da Pós Tech da FIAP em Arquitetura de Software, que consiste em uma aplicação monolítica para uma lanchonete, com uma API contendo funcionalidades de cadastro e listagem de produtos, realização de pedidos, entre outras, vide documentação da API abaixo.
A incialização do projeto pode ser feita através da ferramenta docker compose, que sobe dois containers docker, sendo um para o banco de dados MySQL e outro para a aplicação NodeJS.
A arquitetura de software utilizada é a Arquitetura Hexagonal, juntamente com os conceitos do Domain Driven Design.
O design estratégico e tático do DDD e também o Event Storming pode ser encontrado no link abaixo:
https://miro.com/app/board/uXjVKKkB6uI=/?share_link_id=33815948017
Utilize a ferramenta Docker Compose, executando o comando abaixo, na raíz do projeto
docker-compose up --build
Esse comando irá subir dois containers docker (tc-db e tc-app), para servir o banco de dados MySQL e a aplicação NodeJS.
curl --request POST \
--url http://localhost:3000/api/produtos \
--header 'Content-Type: application/json' \
--cookie JSESSIONID=90ED2EA964471F20F03954DE12951B0B \
--data '{
"nome": "X-Bacon",
"descricao": "Hambúrguer, presunto, mussarela, bacon, alface, tomate, catchup e maionese do cheff",
"preco": 36.00,
"categoria": "LANCHE"
}'
curl --request POST \
--url http://localhost:3000/api/produtos \
--header 'Content-Type: application/json' \
--cookie JSESSIONID=90ED2EA964471F20F03954DE12951B0B \
--data '{
"nome": "Nostro Chips Crocante",
"descricao": "Deliciosa Batata Asterix Crocante",
"preco": 7.00,
"categoria": "ACOMPANHAMENTO"
}'
curl --request POST \
--url http://localhost:3000/api/produtos \
--header 'Content-Type: application/json' \
--cookie JSESSIONID=90ED2EA964471F20F03954DE12951B0B \
--data '{
"nome": "Coca cola 2l",
"descricao": "",
"preco": 12.00,
"categoria": "BEBIDA"
}'
curl --request POST \
--url http://localhost:3000/api/produtos \
--header 'Content-Type: application/json' \
--cookie JSESSIONID=90ED2EA964471F20F03954DE12951B0B \
--data '{
"nome": "Mentos Frutas",
"descricao": "Mentos Pastilhas/Balinhas redondo ",
"preco": 3.00,
"categoria": "SOBREMESA"
}'
curl --request GET \
--url http://localhost:3000/api/produtos \
--cookie JSESSIONID=90ED2EA964471F20F03954DE12951B0B
curl --request GET \
--url http://localhost:3000/api/lanches \
--cookie JSESSIONID=90ED2EA964471F20F03954DE12951B0B
curl --request GET \
--url http://localhost:3000/api/acompanhamentos \
--cookie JSESSIONID=90ED2EA964471F20F03954DE12951B0B
curl --request GET \
--url http://localhost:3000/api/bebidas \
--cookie JSESSIONID=90ED2EA964471F20F03954DE12951B0B
curl --request GET \
--url http://localhost:3000/api/sobremesas \
--cookie JSESSIONID=90ED2EA964471F20F03954DE12951B0B
curl --request POST \
--url http://localhost:3000/api/acessos/sign-up \
--header 'Content-Type: application/json' \
--cookie JSESSIONID=90ED2EA964471F20F03954DE12951B0B \
--data '{
"nome": "Sergio Lago",
"email": "[email protected]",
"cpf": "99200223819",
"senha": "abc123"
}'
curl --request POST \
--url http://localhost:3000/api/acessos/sign-in \
--header 'Content-Type: application/json' \
--cookie JSESSIONID=90ED2EA964471F20F03954DE12951B0B \
--data '{
"email": "[email protected]",
"senha": "abc123"
}'
curl --request POST \
--url http://localhost:3000/api/pedidos \
--header 'Content-Type: application/json' \
--cookie JSESSIONID=90ED2EA964471F20F03954DE12951B0B \
--data '{
"ponto_de_venda_id": 1,
"itens": [
{
"nome": "X-Bacon",
"preco": 30.0,
"descricao": "Hambúrguer, presunto, mussarela, bacon, alface, tomate, catchup e maionese do cheff",
"categoria": "LANCHE"
},
{
"nome": "Coca-Cola",
"preco": 12.5,
"descricao": "",
"categoria": "BEBIDA"
}
]
}'
curl --request POST \
--url http://localhost:3000/api/pedidos \
--header 'Authorization: Baerer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJub21lIjoiTWF0aGV1cyBHdXN0YXZvIiwiZW1haWwiOiJtZ3VzdGF2b0BnbWFpbC5jb20iLCJjcGYiOiIzNzEwMDIyMzgwNiIsImlhdCI6MTcxNjY5NzEwNiwiZXhwIjoxNzE2NzA0MzA2fQ.C1bHHAs_Y6QX_SzLMoYbJg92VGU2XVTQeCLeqwjo030' \
--header 'Content-Type: application/json' \
--cookie JSESSIONID=90ED2EA964471F20F03954DE12951B0B \
--data '{
"ponto_de_venda_id": 1,
"itens": [
{
"nome": "X-Bacon",
"preco": 30.0,
"descricao": "Hambúrguer, presunto, mussarela, bacon, alface, tomate, catchup e maionese do cheff",
"categoria": "LANCHE"
},
{
"nome": "Coca-Cola",
"preco": 12.5,
"descricao": "",
"categoria": "BEBIDA"
}
]
}'
curl --request GET \
--url http://localhost:3000/api/pedidos/ \
--header 'Cookie: JSESSIONID=90ED2EA964471F20F03954DE12951B0B' \
--cookie JSESSIONID=90ED2EA964471F20F03954DE12951B0B
curl --request GET \
--url http://localhost:3000/api/pedidos/1 \
--header 'Cookie: JSESSIONID=90ED2EA964471F20F03954DE12951B0B' \
--cookie JSESSIONID=90ED2EA964471F20F03954DE12951B0B
curl --request GET \
--url http://localhost:3000/api/clientes \
--cookie JSESSIONID=90ED2EA964471F20F03954DE12951B0B
curl --request GET \
--url http://localhost:3000/api/clientes/99200223819 \
--cookie JSESSIONID=90ED2EA964471F20F03954DE12951B0Ba