- Overview
- Key Features
- Architecture Diagram
- Tech Stack
- Getting Started
- Project Structure
- API Documentation
- Development
- License
A modern, scalable notification system built with .NET Core using a microservices architecture. This project demonstrates best practices in software design, including separation of concerns, clean architecture, and API gateway pattern implementation.
The application consists of multiple components:
- Microservices: UserService and NotificationService for handling business logic
- API Gateway: Centralized routing using Ocelot
- Web UI: MVC application with responsive design
- Shared Libraries: Common, DAL, BLL, and API layers for code reuse
- 📧 Notification Management: Create, send, and track notifications
- 👤 User Management: User registration and profile management
- 🔌 Microservices Architecture: Independent, scalable services
- 🚪 API Gateway: Centralized request routing and management
- 📚 API Documentation: Interactive Swagger UI for all services
- 🎨 Responsive UI: Modern web interface using Bootstrap and jQuery
- 🗄️ Local Database: SQL Server LocalDB with Dapper ORM
- 🔒 CORS Support: Cross-origin resource sharing enabled
| Layer | Technology |
|---|---|
| Framework | ASP.NET Core 3.1 |
| Architecture | Microservices with API Gateway |
| Languages | C# |
| Database | SQL Server LocalDB (Dapper ORM) |
| API Gateway | Ocelot |
| Frontend | ASP.NET Core MVC (Bootstrap, jQuery) |
| API Documentation | Swagger/OpenAPI |
| HTTP Client | RestSharp |
- .NET Core 3.1 SDK
- Visual Studio or Visual Studio Code
- SQL Server LocalDB (included with Visual Studio)
-
Clone the repository:
git clone https://github.com/ahmadmdabit/NotificationSystem.git cd NotificationSystem -
Build the solution:
dotnet build
-
Start the microservices:
# In separate terminals cd UserService && dotnet run cd NotificationService && dotnet run cd ApiGateway && dotnet run cd UI && dotnet run
-
Or use the watch command for development:
# In separate terminals cd UserService && dotnet watch run cd NotificationService && dotnet watch run cd ApiGateway && dotnet watch run cd UI && dotnet watch run
| Service | URL |
|---|---|
| UserService | https://localhost:44344 |
| NotificationService | https://localhost:44314 |
| ApiGateway | https://localhost:44315 |
| UI | https://localhost:[port] |
├── Common/
│ ├── Common Library (.NET Standard 2.0)
│ ├── DAL Library (.NET Standard 2.0) - Dapper & SQL Server
│ ├── BLL Library (.NET Standard 2.0)
│ └── API Library (.NET Standard 2.0) - Swagger
├── Services/
│ ├── UserService (ASP.NET Core 3.1 RESTful API)
│ └── NotificationService (ASP.NET Core 3.1 RESTful API)
├── ApiGateway/ (Ocelot API Gateway)
└── UI/ (ASP.NET Core 3.1 MVC - Bootstrap/jQuery)
Each microservice includes interactive Swagger documentation:
- UserService:
https://localhost:44344/swagger - NotificationService:
https://localhost:44314/swagger
The documentation provides:
- Complete endpoint list
- Request/response schemas
- Interactive testing interface
This N-Tier architecture promotes maintainability and scalability:
- Common Layer: Shared entities, helpers, and interfaces
- DAL Layer: Database operations using Dapper ORM
- BLL Layer: Business logic implementation
- API Layer: Shared controllers and contracts with Swagger
- Services: RESTful microservices exposing business functionality
- ApiGateway: Centralized routing and request management
- UI: Responsive web interface with AJAX communication
- Define entities in
Common/Entities - Create repository interfaces in
DAL/Repository - Implement repositories in
DAL/Repository - Create business interfaces in
BLL/Business - Implement business logic in
BLL/Business - Add controllers in
API/Controller - Register services in the microservice's
Startup.cs - Add routing in
ApiGateway/ocelot.json - Create UI pages if needed
Licensed under the MIT license.

