? Overview
This system provides a digital platform for managing city/village services, citizen requests, complaints, and IoT-based utility monitoring (Electricity & Water). It is structured using Clean Architecture principles to ensure scalability, maintainability, and testability.
? Tech Stack
Backend: .NET 8 Web API
Architecture: Clean Architecture (Domain, Application, Infrastructure, API)
Database: MongoDB
Authentication: ASP.NET Core Identity with JWT
Real-time: SignalR (for notifications and IoT alerts)
Logging: Serilog
? Project Structure
SmartCity.Domain: Core entities, value objects, and repository interfaces.
SmartCity.Application: Business logic, CQRS (MediatR), DTOs, and mapping.
SmartCity.Infrastructure: Persistence (MongoDB), Identity services, and external integrations.
SmartCity.API: RESTful endpoints and middleware.
✨ Key Features
Dashboard: Real-time statistics for managers and citizens.
Service Management: Digital catalog of services (e.g., Beach Access, Villa Maintenance).
Service Requests: Citizens can request services and track their status.
Complaint System: Report issues with categories and status tracking.
IoT Monitoring: Utility meter (Water/Electricity) monitoring with usage alerts.
Manager Portal: Tools for managing requests and responding to complaints.
? Getting Started
Prerequisites
.NET 8 SDK
MongoDB (Local or Atlas)
Configuration
Update the appsettings.json in SmartCity.API with your MongoDB connection string:
"MongoDbSettings": {
"ConnectionString": "mongodb://localhost:27017",
"DatabaseName": "SmartCityDb"
}
Running the Project
Navigate to the project root.
Run the application:
dotnet run --project src/SmartCity.API
Open http://localhost:5000/swa... to explore the API.
? Seed Data
On initial run, the system automatically seeds:
Admin Account: admin@smartcity.com / Admin123!
Citizen Account: ahmdasanhabwanar@gmail.com / Ahmed
Default Services: Beach Access, Villa Maintenance, Cleaning, etc.
Sample Data: Initial complaints, service requests, and utility meter readings.