Welcome to my eCommerce Platform, a scalable and secure web application built using .NET Core 8 with Onion Architecture. This design ensures clean code separation, maintainability, and scalability for optimal performance and growth.
✅ Tech Stack & Key Features:
-
ASP.NET Core 8.0:
The latest version of ASP.NET Core, providing a fast, secure, and reliable framework for building modern APIs and web applications. -
Onion Architecture:
A layered architecture designed to separate core business logic from dependencies like the database and UI, ensuring maintainability and scalability. -
SQL Server:
A robust and reliable database system used for storing product data, user information, and transactions. -
ASP.NET Core Identity:
An integrated authentication and authorization system with role-based management (admin, customer, pharmacist). -
JWT Authentication:
Secure token-based authentication with JSON Web Tokens (JWT), providing secure role management and session handling. -
Entity Framework Core (EF Core):
Object-relational mapping (ORM) for working with SQL Server and implementing efficient database operations. -
LINQ (Language Integrated Query):
A query syntax used for data querying and manipulation, enabling powerful interactions with EF Core for complex queries. -
Generic Repository & Unit of Work Pattern:
Implements a clean, maintainable data access layer. -
Mapster:
Efficient mapping between domain models and DTOs (Data Transfer Objects) for optimized data transfer between application layers. -
DTOs (Data Transfer Objects):
Simplifies data handling and communication between layers of the application. -
Specification Pattern:
Used for dynamic querying and filtering within the repository layer. -
Data Seeding:
Automatic population of the database with default users, roles, and products. -
Session Management:
Session handling is used to track user-specific data during interactions with the platform, such as login status, cart items, and preferences. This ensures a seamless experience by maintaining user session data across requests. -
Stripe Payment Integration:
Fully integrated with Stripe for secure and reliable payment processing.
![Checkout](https://private-user-images.githubusercontent.com/123558998/395774961-f99c4a66-6683-49ee-b7a1-37f0a460447f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxNTg4ODIsIm5iZiI6MTczOTE1ODU4MiwicGF0aCI6Ii8xMjM1NTg5OTgvMzk1Nzc0OTYxLWY5OWM0YTY2LTY2ODMtNDllZS1iN2ExLTM3ZjBhNDYwNDQ3Zi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMFQwMzM2MjJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04N2I4ZDdkMTg1MDY5ODk3MDQ0NmMzYTllNzU2MTc1YzIxM2IzNWVmNzhjNWM3NTE2MzhmOWIzYzAxZGE2NjI0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.hLUyY1WwxBbkKSEI8fmBiutW_ocqQtAjAKP2wVEHcIc)
- Global Error Handling:
A centralized error handling mechanism to ensure robustness and clean exception logging.
Complete authentication system with role-based management (admin, customer, pharmacist).
Secure token generation, token refresh, and role-based authentication using JWT.
CRUD operations for managing products, including filtering by category and price.
Ability to add, update, or remove items from the shopping cart.
Allow users to add products to their wishlist for future purchase consideration.
Offer discount codes or promotional coupons for customers to redeem at checkout.
Users can review and rate products, providing valuable feedback for other customers.
Improves performance and reduces database load by caching frequently accessed data.
Comprehensive error logging and handling to ensure smooth user experiences and fast issue resolution.
Cloudinary Integration
Cloudinary is used for managing and storing images in the Pharma Platform. It provides a scalable, secure, and feature-rich solution for image storage and transformation.
![358914909-0c91f3e2-1023-442a-b250-a458db4b0d32](https://private-user-images.githubusercontent.com/123558998/395775103-e1d14756-853e-4f8e-a5fc-1f9f147ee393.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxNTg4ODIsIm5iZiI6MTczOTE1ODU4MiwicGF0aCI6Ii8xMjM1NTg5OTgvMzk1Nzc1MTAzLWUxZDE0NzU2LTg1M2UtNGY4ZS1hNWZjLTFmOWYxNDdlZTM5My5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMFQwMzM2MjJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT01ZTAzNDIwM2Y2NmQzZjE2ZDQ2NDE1Y2I1NzFkOTMyZjJhYzc2ZGEwYzcyOTZlZTNmZmU1YzY3YWExNGY3NWY0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.YsSXFHX9m4EKOLskq-gh-bNW-91m9tddZlu3t2uW9rs)
We add account informations on appsettings.json and create an entity whose name is CloudinarySettings.
![358914917-bb570e84-265c-49ea-8115-721a9784087d](https://private-user-images.githubusercontent.com/123558998/395775107-96bfdf18-13e7-426a-9306-cd991b389787.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxNTg4ODIsIm5iZiI6MTczOTE1ODU4MiwicGF0aCI6Ii8xMjM1NTg5OTgvMzk1Nzc1MTA3LTk2YmZkZjE4LTEzZTctNDI2YS05MzA2LWNkOTkxYjM4OTc4Ny5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMFQwMzM2MjJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03MzQ1NjdiZDNjOGFiMTA0NTg3MWU2ZmYwMWI4ZTRlY2E4MGI2NTdhNzczYTRjYmEwZTQ2ZDVkNDM4ZjM2ZDE1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.QXLwfbyaqb9zgbMRUpSKvEGro7NWVV2aGp4rh_kdsPk)
Feel free to reach out via LinkedIn if you have any questions or would like to discuss the project further!