This was inspired by an assessment for a senior backend engineer role.
The Micro-Order project is a microservice-based application that consists of three main services:
- Owner-Service
- Product-Service
- Order-Service
This service is responsible for managing the owners of the products. It includes functionalities such as:
- Creating a new owner (user)
- Updating owner details
- Deleting an owner
- Retrieving owner information
This service handles all operations related to products. It includes functionalities such as:
- Adding a new product
- Updating product details
- Deleting a product
- Retrieving product information
This service manages the orders placed by customers. It includes functionalities such as:
- Creating a new order
- Updating order details
- Deleting an order
- Retrieving order information
Detailed information can be found in each service README file.
- Clone the repository:
git clone https://github.com/emmrys-jay/micro-order.git
- Navigate to the project directory:
cd micro-order
- Start all required containers for databases and cache using Docker Compose:
make service-up
- Navigate to the home directory of each of the services in different terminals and start them in development mode
cd owner-service make air cd product-service make air cd order-service make air
- All the default configs are being used, and they can be found in
config-sample.yml
in each service
- Access the services via their respective endpoints:
- Owner-Service:
http://localhost:8081
- Product-Service:
http://localhost:8082
- Order-Service:
http://localhost:8080
- Owner-Service:
- Add mechanism to handle consumer errors when handling events
- Security fixes
- Swagger documentation for each service
- Proper Error handling between grpc calls
Contributions are welcome! Please follow these steps:
- Fork the repository.
- Create a new branch (
git checkout -b feature/your-feature
). - Commit your changes (
git commit -am 'Add new feature'
). - Push to the branch (
git push origin feature/your-feature
). - Create a new Pull Request.
This project is licensed under the MIT License. See the LICENSE file for details.
For any inquiries or issues, please contact:
- Emmrys Jay - [email protected]