This project is an e-commerce platform that utilizes the Entity Framework and LINQ for data access, the Onion Architecture and Repository Pattern for separation of concerns, and the Unit of Work and Specification Pattern for building efficient queries. The project follows the principles of the Clean Architecture, also known as the “Onion Architecture” which promotes separation of concerns and maintainability. The Repository pattern is used to abstract the data access layer and provide a consistent interface for querying the database. The Unit of Work pattern is used to manage the context and transaction of the Entity Framework. The Specification pattern is used to build complex queries in a composable and maintainable way. This project is built to handle large amounts of data and provide a scalable solution to e-commerce needs 1.
The project follows the Onion Architecture, dividing the codebase into layers:
- Core: Contains domain models, interfaces, and business logic.
- Infrastructure: Houses implementations of data access, external services, and other infrastructure concerns.
- Application: Contains application services that orchestrate business logic using core domain models.
- Web API: Exposes endpoints, DTOs, and handles HTTP requests.
Configuration settings, such as database connection strings, Redis cache settings, Stripe API keys, Hangfire configurations, and Twilio credentials, are stored in the appsettings.json file. Update these settings with your specific configuration.
The application uses MSSQL Server as its database. Entity Framework Core is employed for database operations. Migrations are used to create and update the database schema. Ensure to run dotnet ef database update after making changes to the models.
Redis is used for caching to enhance the performance of certain operations. The caching settings can be configured in appsettings.json.
Integration with the Stripe payment gateway is implemented for processing payments. The Stripe API key should be configured in appsettings.json.
Automapper is used to simplify the mapping between entity models and DTOs. The mapping profiles can be found in the Utilities folder.
The project follows the principles of Onion Architecture, separating concerns into layers to maintain a clear and modular codebase.
Custom middleware is implemented to handle exceptions globally, providing consistent error responses.
Logging is implemented using Serilog to capture application events and errors. Log files can be configured in appsettings.json.
FluentValidation is used for robust server-side validation, ensuring that input data meets specified criteria.
Background job processing is handled using Hangfire, providing a reliable and scalable solution for executing tasks asynchronously.
Twilio is integrated for sending messages. Configure your Twilio credentials in appsettings.json to enable this feature.
Detailed documentation for API endpoints can be found in the Documentation folder. This documentation provides information on request and response formats, authentication, and example usage.
- Onion Architecture: Separation of concerns and maintainability.
- Repository Pattern: Abstraction of the data access layer and consistent interface for querying the database.
- Unit of Work Pattern: Management of the context and transaction of the Entity Framework.
- Specification Pattern: Building complex queries in a composable and maintainable way.
- Stripe Payment Gateway: Integration with Stripe for payment processing.
To get started with this project, follow these steps:
- Clone the repository to your local machine.
- Open the solution file in Visual Studio.
- Build the solution.
- Run the project.
The Talabat Integration Platform API enables vendors to manage store, menus and orders on the Talabat platform. The API can be integrated with a vendor’s POS system to improve efficiency for menu management and order management. This API is for developers 2.
Contributions are welcome! Please feel free to submit a pull request.