An open API service indexing awesome lists of open source software.

https://github.com/ismail-mohammed-atef/talabat

web app providing restful APIS to be consumed by frontend application using angular framework
https://github.com/ismail-mohammed-atef/talabat

authentication authorization csharp design-patterns dotnet-core entity-framework-core jwt webapi

Last synced: 2 months ago
JSON representation

web app providing restful APIS to be consumed by frontend application using angular framework

Awesome Lists containing this project

README

          

# Web API Application

## Overview
This project is a Web API built using .NET Core, following the Onion Architecture pattern to ensure modularity and maintainability. It incorporates advanced design patterns like Generic Repository, Specification, and Unit of Work to manage data access efficiently. The API includes authentication and authorization for security, utilizes Redis as an in-memory database for caching, and integrates Stripe for payment processing.

## Features
- **Onion Architecture**: Promotes separation of concerns and scalability.
- **Authentication & Authorization**: Secure user management with Identity and JWT.
- **Generic Repository Pattern**: Ensures flexible and reusable data access.
- **Specification Pattern**: Provides advanced querying capabilities.
- **Unit of Work Pattern**: Maintains transactional integrity.
- **Redis Caching**: Enhances performance with in-memory storage.
- **Stripe Payment Gateway**: Enables secure online payments.
- **RESTful API**: Well-structured endpoints following best practices.

## Technologies Used
- **Backend**: ASP.NET Core Web API, C#
- **Database**: SQL Server with Entity Framework Core
- **Caching**: Redis
- **Security**: Identity, JWT Authentication, Authorization
- **Payment Gateway**: Stripe
- **Design Patterns**: Onion Architecture, Generic Repository, Specification, Unit of Work

## Installation
1. Clone the repository.
2. Open the project in Visual Studio.
3. Restore NuGet packages.
4. Configure the database connection in `appsettings.json`:
```json
{
"ConnectionStrings": {
"DefaultConnection": "Server=your-server;Database=your-db;User Id=your-user;Password=your-password;"
}
}
```
5. Configure Redis and Stripe settings in `appsettings.json`:
```json
{
"Redis": {
"Connection": "localhost:6379"
},
"Stripe": {
"SecretKey": "your-stripe-secret-key",
"PublishableKey": "your-stripe-publishable-key"
}
}
```
6. Apply migrations and update the database:
```sh
dotnet ef database update
```
7. Build and run the application.

## Usage
1. Register/Login to obtain an authentication token.
2. Use the token to access secured API endpoints.
3. Perform CRUD operations with efficient data management.
4. Utilize Redis caching for improved performance.
5. Make secure payments via Stripe API.

## Requirements
- **.NET Version**: .NET Core 8 or later
- **Database**: SQL Server
- **Caching**: Redis
- **Payment Processing**: Stripe Account

## License
This project is licensed under the MIT License.

## Contact
For support or inquiries, reach out via email at ismail.mohammed.atef@gmail.com.