- Go
- Docker
- Grafana
- Prometheus
- Swagger
- MongoDB
- Cart Management: Handle up to 10 unique items (excluding VasItems) and a total of 30 products. The total cart amount should not exceed 500,000 TL.
- Item Varieties: Support for different item types like VasItem, DefaultItem, DigitalItem, with specific constraints on quantity and identification.
- Digital Items: Restriction on the quantity and specific categorization (CategoryID 7889).
- Default Items: Common e-commerce products with pricing rules in relation to VasItems.
- VasItems: Represent value-added services, constrained by category and seller ID.
- Promotions: Implementation of various discount strategies like SameSellerPromotion, CategoryPromotion, and TotalPricePromotion.
- Reliability: Robust error handling and consistent performance.
- Usability: Simple and intuitive http-request-based interaction.
- Maintainability: Code should adhere to SOLID principles, Domain Driven Design and be easy to modify or extend.
- Performance: Optimized for fast processing of cart operations.
- Go environment setup for development.
- Docker installed for containerization (optional).
- Grafana and Prometheus for monitoring and analytics (optional).
-
Direct Execution:
- After building, you can run the application using:
make run
- This will start the application using the compiled binary.
- After building, you can run the application using:
-
Development Mode:
- For development purposes, you can run the application directly with Go using:
make dev
- This allows you to run the application without compiling it first.
- For development purposes, you can run the application directly with Go using:
-
Docker:
- To run the application in a Docker container, use:
make up
- This will build and run the application in a Docker container as defined in your
docker-compose
file. - To stop and remove the container, use:
make down
- To run the application in a Docker container, use:
- To generate Swagger documentation, run:
make swag
- This will create Swagger documentation based on your code annotations.
-
Persistence Tests:
- To run persistence layer tests, execute:
make persistance-tests
- This will run tests located in the
./internal/infrastructure/persistence
directory.
- To run persistence layer tests, execute:
-
Application Tests:
- For application layer tests, execute:
make application-tests
- This will run tests in the
./internal/application
directory.
- For application layer tests, execute: