Nuar is an advanced, modular, and extensible API Gateway framework specifically designed for modern microservices architecture. With a focus on scalability, observability, and performance, Nuar simplifies API management, routing, and communication between services while providing seamless integration with popular tools and technologies.
================================================================================
.-----------------. .----------------. .----------------. .----------------.
| .--------------. || .--------------. || .--------------. || .--------------. |
| | ____ _____ | || | _____ _____ | || | __ | || | _______ | |
| ||_ \|_ _| | || ||_ _||_ _|| || | / \ | || | |_ __ \ | |
| | | \ | | | || | | | | | | || | / /\ \ | || | | |__) | | |
| | | |\ \| | | || | | ' ' | | || | / ____ \ | || | | __ / | |
| | _| |_\ |_ | || | \ `--' / | || | _/ / \ \_ | || | _| | \ \_ | |
| ||_____|\____| | || | `.__.' | || ||____| |____|| || | |____| |___| | |
| | | || | | || | | || | | |
| '--------------' || '--------------' || '--------------' || '--------------' |
'----------------' '----------------' '----------------' '----------------'
_ _____ _
/\ (_)/ ____| | |
/ \ _ __ _| | __ __ _| |_ _____ ____ _ _ _
/ /\ \ | '_ \| | | |_ |/ _` | __/ _ \ \ /\ / / _` | | | |
/ ____ \| |_) | | |__| | (_| | || __/\ V V / (_| | |_| |
/_/ \_\ .__/|_|\_____|\__,_|\__\___| \_/\_/ \__,_|\__, |
| | __/ |
|_| |___/
/#### Nuar API Gateway ####\
@#~ *Innovative & Fast* ~#@
================================================================================
- Modular Design: Use only the components you need by adding or removing features via Nuar extensions.
- Authentication & Authorization: Supports JWT, OAuth, and custom authentication mechanisms.
- CORS Management: Effortlessly manage CORS policies using the Nuar.Cors extension.
- Custom Error Handling: Fine-tune error responses with Nuar.CustomErrors.
- Distributed Tracing: Achieve observability with Nuar.Tracing, leveraging OpenTelemetry.
- API Documentation: Automatically generate API docs with Nuar.Swagger using OpenAPI.
- Message Brokers: Integrate RabbitMQ with Nuar.RabbitMQ for microservices communication.
- Scalability & Resilience: Built with Polly for handling retries, circuit-breaking, and resilience.
.
├── docs # Documentation and assets
│ └── logo # Nuar logo assets
├── README.md # This readme file
├── scripts # Build and packaging scripts
├── src # Core and extension libraries
│ ├── Nuar # Core Nuar framework
│ ├── Nuar.Cors # CORS policy management
│ ├── Nuar.CustomErrors # Custom error handling
│ ├── Nuar.Host # Host project for running the gateway
│ ├── Nuar.JWT # JWT authentication
│ ├── Nuar.RabbitMQ # RabbitMQ messaging support
│ ├── Nuar.Swagger # Swagger API documentation
│ └── Nuar.Tracing # Distributed tracing support
Ensure you have the following tools installed:
- .NET SDK 8.0 or later
- RabbitMQ (for message brokering)
- Docker (optional, for deployment)
-
Clone the Repository
git clone https://github.com/ITSharpPro/Nuar.git cd nuar_framework
-
Restore Dependencies
dotnet restore
-
Build the Project
dotnet build
-
Run the API Gateway
Navigate to the host directory and run the API Gateway:
cd src/Nuar.Host/src/Nuar.Host dotnet run
Nuar is fully configurable through YAML. Define routes, services, CORS, security policies, and more in nuar.yml
:
routes:
- path: /api/service1
service: service1
method: GET
auth:
required: true
-
Build & Package: Use the following script to package all components:
bash scripts/pack-all.sh
-
Run Tests: To execute all unit tests, run:
bash scripts/build-and-test.sh
Nuar is designed to be modular. Below are some key extensions:
- Nuar.Cors: Manage Cross-Origin Resource Sharing (CORS) policies.
- Nuar.JWT: Add JWT-based authentication and authorization.
- Nuar.RabbitMQ: Integrate RabbitMQ for message-based communication.
- Nuar.Swagger: Generate API documentation with Swagger and OpenAPI.
- Nuar.Tracing: Utilize OpenTelemetry for distributed tracing and observability.
Contributions are welcome! If you have a bug report, feature request, or want to contribute code, please follow these steps:
- Fork the repository.
- Create a new feature branch.
- Submit a pull request with your changes.
We also encourage opening discussions on issues to get feedback from the community before starting large feature developments.
The Nuar Framework is licensed under the Apache-2.0 License.
For more information, visit ITSharpPro or check the official documentation.