NawarAli1912 / EStore.API

MIT License
6 stars 0 forks source link

EStore.API

Overview

This project is a .NET 8 Web API built following the principles of Clean Architecture. It leverages various technologies and design patterns from DDD to provide a robust and scalable solution. Offering a wide range of endpoints to effectively manage products, orders, categories, carts and other essential e-commerce functionalities. It features a seamless integration with Elasticsearch, ensuring fast and accurate search capabilities for an enhanced product discovery experience. This API is designed to streamline the operations of an online store, catering to both the business's and the customers' needs with efficiency and ease.

Features

Getting Started

Prerequisites

Installation

  1. Clone the repository.
  2. Configure the database connection in appsettings.json.
  3. Run database migrations using dotnet ef database update.
  4. Start the Elasticsearch server.
  5. Configure AWS S3 settings for product images.
    • AWS S3 Configuration:
      • Make sure you have an AWS account and access to the S3 service.
      • Configure your AWS credentials on your machine.
      • Since this project is currently set up to use AWS services with the root user, ensure that you are using the appropriate credentials on your local machine.
  6. Start the application using dotnet run.

Usage

Entity Framework Core and Dapper:

This combination offers a balanced approach to data access. EF Core provides a developer-friendly ORM for standard operations, while Dapper enhances performance for complex queries. Highlighting this could underscore your commitment to both developer efficiency and application performance.

Idempotency Support:

Reliable Idempotency Implementation: The system's architecture includes a well-designed implementation of idempotency for select endpoints. This is crucial for ensuring consistent outcomes in the face of repeated requests. Such a feature is particularly important in distributed systems where network reliability can be an issue, thereby enhancing the overall robustness and reliability of the application.

Result Pattern for Explicit Error Handling:

The project adopts the result pattern to handle errors explicitly. This approach avoids the use of exceptions for control flow, leading to cleaner and more maintainable code. By employing a generic result type, the system provides clear and consistent feedback on operations, significantly improving error handling and enhancing the overall user experience.

Background Service and Quartz

The project uses a background service with Quartz to handle domain events in the Outbox, ensuring asynchronous and reliable processing.

NEST for Enhanced Search Capabilities:

The project leverages NEST in conjunction with Elasticsearch to provide advanced search functionalities. This integration facilitates quick, scalable, and precise searching capabilities within the product database, offering users a seamless and effective search experience.

Contributing

We welcome contributions! Feel free to submit issues, feature requests, or pull requests.

License

This project is licensed under the MIT License.

Codebase Maintainability Index

Hierarchy Maintainability Index
src\Application (Debug) 87%
src\Contracts (Debug) 99%
src\Domain (Debug) 89%
src\Infrastructure (Debug) 73%
src\Presentation (Debug) 73%
src\SharedKernel (Debug) 95%

Notes

This project is still under development.