This repository contains the source code for the ByteMeBurger API, part of the FIAP Tech Challenge. The API is designed to manage a burger restaurant's operations, including order placement, customer registration, and product management. The recent updates introduce a new endpoint for customer registration and enhance various aspects of the application, such as error handling, data models, and service configurations.
Endpoints are protected since JWT token is now required. Since this application will run on EKS Cluster inside a private VPC, Customers endpoint will be deprecated or splited into a different service. Customers information can be extracted from token, since it's generated and validated internally.
It uses Masstransit to manage communication between services. Masstransit automatically creates Topics, Queues and Subscriptions.
- Docker
- .NET SDK
- Optionally, an IDE such as Visual Studio or VSCode
-
Clone the repository:
git clone https://github.com/soat-fiap/FIAP.TechChallenge.ByteMeBurger.git cd FIAP.TechChallenge.ByteMeBurger
-
Configure environment variables
- Configure .env file. You can use the .env.sample
- Remember to create the
.env
file
-
Start the services using Docker:
docker-compose up -d
-
Service health (check if the service is healthy before testing)
-
To verify the existing endpoints, go to
-
If you want to quickly seed the database with fake data and test some of the endpoints use the FIAP_TechChallenge_ByteMeBurger-endpoints.http file
-
Logs should (not guaranteed) be available here http://localhost:8081
-
Stop the services using Docker:
docker-compose down
- Docker with Minikube configured
Follow this if you want to build images locally
To Use local docker images in minikube, you can use the following commands to Push directly to the in-cluster Docker daemon (docker-env)
minikube start
minikube -p minikube docker-env --shell powershell | Invoke-Expression
docker build -t techchallenge/db:latest -f .\database\Dockerfile .\database
docker image push techchallenge/db:latest
- update the image in pod-mysql.yaml file
image: techchallenge/db:latest
docker build -t techchallenge/api:latest -f .\src\FIAP.TechChallenge.ByteMeBurger.Api\Dockerfile .
docker image push techchallenge/api:latest
- update the image in deployment-api.yaml file
image: techchallenge/api:latest
Run deploy.ps1 script to deploy the application to minikube
Use tunnel and port-forward to access the application
kubectl port-forward service/svc-seq 30008:80
minikube tunnel
You can use the postman collection for testing
To test mercado pago integration don't forget to add your credentials to the secret-mercadopago file and the notification url on configmap-api
Once you are done, you can stop the services running rollback.ps1 script
Since the application is running inside a private subnet and tokens are generated internally by API Gateway information on the token use used for some use cases where user information is required like Creating a new Order.
- Endpoint:
GET /api/products
- Requires
Admin
role
- Requires
- Endpoint:
DELETE /api/products/{id}
- Requires
Admin
role
- Requires
- Endpoint:
GET /api/customers
- Requires
Admin
role
- Requires
- Endpoint:
POST /api/customers
- Requires
Customer/Admin
role
- Requires
- Endpoint:
POST /api/orders
- Requires
Customer/Admin
role
- Requires
- Endpoint:
GET /api/orders/{id}
- Requires
Admin/Kitchen
role
- Requires