Docker structure is being established...
docker-compose build
docker-compose up -d
- ASP.NET Core
- Entity Framework
- Swagger
- Mapper
- Serilog
- Rate Limit
- Ocelot
- Elasticsearch
- Kibana
- Nginx
- RabbitMQ
This project is designed as a microservice architecture for user management, customer management, and sales tracking. Below are the expected features and evaluation criteria.
- Users should be able to log in to the system (JWT authentication).
- Manage user roles (Admin, Sales Representative, etc.).
- User information should be managed with CRUD operations.
- Customers' information (name, email, phone, company) should be managed with CRUD operations.
- Notes can be added and edited for each customer.
- The customer list should be sortable and filterable.
- Create a sales pipeline for potential sales (e.g., "New", "In Contact", "Negotiation", "Closed").
- Store the date and notes for each sales stage.
- Log the timestamp when the sales status changes.
- User management, customer management, and sales tracking should be designed as separate microservices.
- Microservices should communicate through an API Gateway.
- Design using SQL or NoSQL database preference.
- Each microservice should have its own database.
- Write unit tests for each service.
- Prepare API documentation (Swagger is recommended).
- Code Quality:
- Modularity, readability, and adherence to DRY principles.
- Microservice Design:
- Independence of services.
- Database Design:
- Performance and scalability.
- Testing & Security:
- Coverage of unit tests.
- Secure authentication using JWT.
- Technical Documentation:
- Detailed documentation for better understanding.
- Performance & Usability:
- API response times and efficiency.
- Version control the microservices using Git and upload them to a remote repository (GitHub, GitLab, Bitbucket).
- Containerize the microservices.
- Organize each microservice in separate folders.
- Use Docker Compose to orchestrate the entire system (
docker-compose.yml
file). - Follow clean code and secure coding principles.
- API documentation should be accessible via Swagger.
- Preferably, provide a video explanation of your work and share its link.