fatihsalli / Graduation-Project-TechnoMarket.eShop

BilgeAdam .Net Full Stack Course Graduation Project - Electronic products sales system made in a microservices architecture using .NET Core

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

TechnoMarket.eShop

BilgeAdam .Net Full Stack Course Graduation Project

Electronic products sales system based on a simplified microservices architecture and Docker containers using .NET Core 6

There are five microservices which implemented e-commerce modules over Catalog, Basket, Customer, Order and PhotoStock microservices with NoSQL (MongoDB, Redis) and Relational databases (PostgreSQL, Sql Server) with communicating using RabbitMQ-MassTransit and Ocelot API Gateway. You can see the diagram of the project below;

alt text

Whats Including In This Repository

Catalog microservice

  • ASP.NET Core Web API application
  • REST API principles, CRUD operations
  • Repository and Unit Of Work Pattern Implementation
  • Sql Server database connection and containerization
  • Using Entity Framework Core ORM
  • Using FluentValidation and AutoMapper
  • Using Custom Response, Middleware and Exceptions with Shared Library
  • Testing with xUnitTest for Services and Controllers

Customer microservice

  • ASP.NET Core Web API application
  • REST API principles, CRUD operations
  • Repository and Unit Of Work pattern Implementation
  • PostgreSQL database connection and containerization
  • Using Entity Framework Core ORM
  • Using FluentValidation and AutoMapper
  • Using Custom Response, Middleware and Exceptions with Shared Library

Order microservice

  • ASP.NET Core Web API application
  • REST API principles, CRUD operations
  • MongoDB database connection and containerization
  • Using MongoDB Driver
  • Using FluentValidation and AutoMapper
  • Using Custom Response, Middleware and Exceptions with Shared Library

Basket microservice

  • ASP.NET Core Web API application
  • REST API principles, CRUD operations
  • Redis database connection and containerization
  • Using FluentValidation
  • Using Custom Response, Middleware and Exceptions with Shared Library
  • Publish Checkout Queue with using MassTransit and RabbitMQ

PhotoStock microservice

  • ASP.NET Core Web API application
  • REST API principles, CRUD operations
  • Using Custom Response, Middleware and Exceptions with Shared Library

IdentityServer microservice (Not completed yet)

  • Using IdentityServer4 (JWT)

Asynchronous Communication of Microservices

  • Using MassTransit for RabbitMQ Message-Broker system
  • Publishing Checkout command from Basket microservices and Subscribing this message from Order microservices
  • Publishing ProductUpdate event from Catalog microservices and Subscribing this event from Order microservices (Eventual Consistency)

API Gateway Ocelot Microservice

  • Implement API Gateways with Ocelot
  • The Gateway aggregation pattern in Shopping.Aggregator

Microservices Cross-Cutting Implementations

  • Implementing Centralized Distributed Logging with Elasticsearch, Logstash, Kibana and SeriLog for Microservices

WebUI ShoppingApp Microservice

  • ASP.NET Core Web Application with Html, CSS and Bootstrap 5.2.3
  • Call Ocelot APIs with HttpClientFactory
  • To register and login using UserManager with IdentityUser (Temporarily made due to lack of Identity Server)

Docker Compose establishment with all microservices on docker

  • Containerization of microservices
  • Containerization of databases
  • Override Environment variables

Run The Project

  1. After the cloning this repository please change the value of PhotoStock.Api:Volumes:source (docker-compose.override.yml file) where you want to save photos.

alt text

  1. Run below command at the root directory which include docker-compose.yml files;
docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d
  1. You can launch microservices as below urls:

mainscreen2

About

BilgeAdam .Net Full Stack Course Graduation Project - Electronic products sales system made in a microservices architecture using .NET Core


Languages

Language:C# 86.9%Language:HTML 10.7%Language:Dockerfile 2.0%Language:CSS 0.3%Language:JavaScript 0.1%