Distributed-eStore
Ecommerce SPA application with a microservices architecture implemented from scratch. Tech stack - Docker, Consul, Fabio, RabbitMQ, .Net Core, Mediatr, CQRS, React, Redux. .NET Core Microservices template, .NET React Redux, .NET RabbitMQ, .NET Distributed, Docker, .NET Core with Docker.
File Explorer
Download Latest Version (.zip)- compose.yml
- infrastructure.yml
- microservices.yml
- AdminAuth.cs
- BaseController.cs
- HomeController.cs
- IdentityController.cs
- OrdersController.cs
- ProductsController.cs
- launchSettings.json
- IIdentityService.cs
- IOrdersService.cs
- IProductsService.cs
- appsettings.json
- Distributed-eStore.Api.Gateway.csproj
- Dockerfile
- Program.cs
- Startup.cs
- .dockerignore
- Distributed-eStore.Api.Gateway.sln
- Dockerfile
- AccessTokenService.cs
- AccessTokenValidatorMiddleware.cs
- AuthAttribute.cs
- Extensions.cs
- IAccessTokenService.cs
- IJwtHandler.cs
- JsonWebToken.cs
- JsonWebTokenPayload.cs
- JwtAuthAttribute.cs
- JwtHandler.cs
- JwtOptions.cs
- SignInCommand.cs
- SignUpCommand.cs
- ConsulHttpClient.cs
- ConsulOptions.cs
- ConsulServiceDiscoveryMessageHandler.cs
- ConsulServiceNotFoundException.cs
- ConsulServicesRegistry.cs
- Extensions.cs
- IConsulHttpClient.cs
- IConsulServicesRegistry.cs
- CommandDispatcher.cs
- Dispatcher.cs
- Extensions.cs
- ICommandDispatcher.cs
- IDispatcher.cs
- IQueryDispatcher.cs
- QueryDispatcher.cs
- Extensions.cs
- FabioHttpClient.cs
- FabioMessageHandler.cs
- FabioOptions.cs
- IFabioHttpClient.cs
- Handler.cs
- ICommandHandler.cs
- IEventHandler.cs
- IHandler.cs
- IQueryHandler.cs
- CreateOrder.cs
- CreateProduct.cs
- ICommand.cs
- IEvent.cs
- IMessage.cs
- IRejectedEvent.cs
- IResource.cs
- MessageNamespaceAttribute.cs
- RejectedEvent.cs
- Resource.cs
- BaseOrder.cs
- CreateOrder.cs
- CreateOrderRequest.cs
- IdentityUser.cs
- OrderItems.cs
- Product.cs
- RegisterUserResponse.cs
- Extensions.cs
- IMongoDbInitializer.cs
- IMongoDbSeeder.cs
- IMongoRepository.cs
- MongoDbInitializer.cs
- MongoDbOptions.cs
- MongoDbSeeder.cs
- MongoRepository.cs
- Pagination.cs
- BaseController.cs
- ErrorHandlerMiddleware.cs
- Extensions.cs
- IServiceId.cs
- JsonParser.cs
- ServiceId.cs
- BrowseOrders.cs
- BrowseProducts.cs
- GetProductById.cs
- BusPublisher.cs
- BusSubscriber.cs
- CorrelationContext.cs
- Extensions.cs
- IBusPublisher.cs
- IBusSubscriber.cs
- ICorrelationContext.cs
- RabbitMqOptions.cs
- Extensions.cs
- QueryParamSerializer.cs
- RestEaseOptions.cs
- RestEaseServiceNotFoundException.cs
- AggregateId.cs
- BaseEntity.cs
- DistributedEStoreException.cs
- IFilter.cs
- IIdentifiable.cs
- IPagedFilter.cs
- IPagedQuery.cs
- IQuery.cs
- PagedQueryBase.cs
- PagedResult.cs
- PagedResultBase.cs
- AppOptions.cs
- Distributed-eStore.Common.csproj
- Extensions.cs
- IInitializer.cs
- IServiceId.cs
- IStartupInitializer.cs
- StartupInitializer.cs
- BaseController.cs
- HomeController.cs
- IdentityController.cs
- TokensController.cs
- RefreshToken.cs
- Role.cs
- User.cs
- ChangePassword.cs
- RefreshAccessToken.cs
- RevokeAccessToken.cs
- RevokeRefreshToken.cs
- AccessTokenRefreshed.cs
- AccessTokenRevoked.cs
- PasswordChanged.cs
- RefreshAccessTokenRejected.cs
- RefreshTokenRevoked.cs
- RevokeAccessTokenRejected.cs
- RevokeRefreshTokenRejected.cs
- SignedIn.cs
- SignedUp.cs
- SignInRejected.cs
- SignUpRejected.cs
- launchSettings.json
- IRefreshTokenRepository.cs
- IUserRepository.cs
- RefreshTokenRepository.cs
- UserRepository.cs
- ClaimsProvider.cs
- IClaimsProvider.cs
- IdentityService.cs
- IIdentityService.cs
- IRefreshTokenService.cs
- RefreshTokenService.cs
- appsettings.Development.json
- appsettings.json
- Codes.cs
- Distributed-eStore.Services.Identity.csproj
- Program.cs
- Startup.cs
- .dockerignore
- Distributed-eStore.Services.Identity.sln
- Dockerfile
- HomeController.cs
- OrdersController.cs
- Order.cs
- OrderItem.cs
- OrderDto.cs
- OrderItemDto.cs
- BrowseOrdersHandler.cs
- CreateOrderHandler.cs
- launchSettings.json
- BrowseOrders.cs
- IOrdersRepository.cs
- OrdersRepository.cs
- appsettings.json
- Distributed-eStore.Services.Order.csproj
- Program.cs
- Startup.cs
- .dockerignore
- Distributed-eStore.Services.Order.sln
- Dockerfile
- HomeController.cs
- ProductsController.cs
- Product.cs
- ProductDto.cs
- BrowseProductsHandler.cs
- CreateProductHandler.cs
- GetProductHandler.cs
- launchSettings.json
- BrowseProducts.cs
- GetProduct.cs
- IProductsRepository.cs
- ProductsRepository.cs
- ProductsSeeder.cs
- appsettings.json
- Distributed-eStore.Services.Product.csproj
- Program.cs
- Startup.cs
- .dockerignore
- Distributed-eStore.Services.Product.sln
- Dockerfile
- favicon.ico
- index.html
- manifest.json
- BottomBanner.css
- BottomBanner.tsx
- CartProduct.css
- CartProduct.tsx
- CartProducts.css
- CartProducts.tsx
- CartWidget.css
- CartWidget.tsx
- Footer.css
- Footer.tsx
- OrderCreatedPage.tsx
- ProductList.css
- ProductList.tsx
- ColorBox.css
- ColorBox.tsx
- ColorSwitcher.css
- ColorSwitcher.tsx
- Product.css
- Product.tsx
- index.ts
- PrivateRoute.jsx
- Logout.tsx
- Layout.tsx
- api.ts
- index.ts
- products.ts
- AccessoriesProductsPage.css
- AccessoriesProductsPage.tsx
- Cart.css
- Cart.tsx
- FemaleProductsPage.css
- FemaleProductsPage.tsx
- HomePage.css
- HomePage.tsx
- Login.css
- Login.tsx
- MaleProductsPage.css
- MaleProductsPage.tsx
- NavMenu.css
- NavMenu.tsx
- ProductFilter.css
- ProductFilter.tsx
- ProductView.css
- ProductView.tsx
- Register.css
- Register.tsx
- index.tsx
- createOrder.ts
- index.ts
- products.ts
- authUtils.ts
- index.ts
- cartActions.ts
- cartReducers.ts
- cartTypes.ts
- index.ts
- localStorageHelpers.ts
- index.ts
- productsActions.ts
- productsReducers.ts
- productsTypes.ts
- index.ts
- userActions.ts
- userReducers.ts
- userTypes.ts
- configureStore.ts
- index.ts
- App.test.tsx
- App.tsx
- index.tsx
- react-app-env.d.ts
- registerServiceWorker.ts
- .env
- .eslintrc.json
- .gitignore
- package-lock.json
- package.json
- README.md
- tsconfig.json
- BaseController.cs
- IdentityController.cs
- OrdersController.cs
- ProductsController.cs
- _ViewImports.cshtml
- Error.cshtml
- Error.cshtml.cs
- launchSettings.json
- IApiGatewayService.cs
- .gitignore
- appsettings.Development.json
- appsettings.json
- Distributed-eStore.UI.csproj
- Program.cs
- Startup.cs
- .dockerignore
- Distributed-eStore.UI.sln
- Dockerfile
- .dockerignore
- .gitignore
- architecture.png
- cart.png
- Distributed-eStore.sln
- LICENSE
- product.png
- products1.png
- products2.png
- README.md
- services.yml
# Installation Guide
git clone https://github.com/evgenirusev/Distributed-eStore
Downloads the entire project code from GitHub to your computer.
cd Distributed-eStore
Moves into the project folder you just downloaded.
2. Docker
Easy Recommended- Git Needed to download the project code from GitHub.
- Docker Desktop Needed to build and run containers. Install it and keep it running in the background.
docker compose -f compose/compose.yml up -d --build
Runs the command against the services defined in the compose file.
3. .NET
Mediumcd Distributed-eStore.Api.Gateway
This project's files live in a subfolder, so move into it first.
dotnet restore
Downloads the packages the project depends on.
dotnet run
Builds the project and runs it immediately.
4. Node.js
Easycd Distributed-eStore.UI/src/ClientApp
This project's files live in a subfolder, so move into it first.
npm install
Downloads and installs the libraries listed in package.json.
npm start
Starts the development/run server.
