{"id":25545174,"url":"https://github.com/hadi-soufan/.net-microservice","last_synced_at":"2026-04-14T14:32:09.954Z","repository":{"id":276628193,"uuid":"929810625","full_name":"hadi-soufan/.NET-Microservice","owner":"hadi-soufan","description":"AuctionApp - Microservices-based Auction System","archived":false,"fork":false,"pushed_at":"2025-02-18T17:08:52.000Z","size":74,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-18T17:47:25.664Z","etag":null,"topics":["docker-compose","dotnet","masstransit","microservice","mongodb","nextjs","postgresql","rabbitmq"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hadi-soufan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-09T13:12:36.000Z","updated_at":"2025-02-18T17:08:56.000Z","dependencies_parsed_at":"2025-02-09T14:31:13.532Z","dependency_job_id":"f0b043db-fd5a-4a88-8e14-5d9f37759107","html_url":"https://github.com/hadi-soufan/.NET-Microservice","commit_stats":null,"previous_names":["hadi-soufan/.net-microservice"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hadi-soufan%2F.NET-Microservice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hadi-soufan%2F.NET-Microservice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hadi-soufan%2F.NET-Microservice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hadi-soufan%2F.NET-Microservice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hadi-soufan","download_url":"https://codeload.github.com/hadi-soufan/.NET-Microservice/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239800429,"owners_count":19699128,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker-compose","dotnet","masstransit","microservice","mongodb","nextjs","postgresql","rabbitmq"],"created_at":"2025-02-20T08:18:07.407Z","updated_at":"2026-02-09T03:30:19.476Z","avatar_url":"https://github.com/hadi-soufan.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AuctionApp - Microservices-based Auction System\n\n**AuctionApp** is a **.NET 9 microservices-based auction system** with a **Next.js frontend**. It features a **modular architecture** with separate services for **auctions, search, bidding, notifications, and authentication**.\n\n## 📖 Table of Contents\n\n- [Architecture](#architecture)\n- [Technologies Used](#technologies-used)\n- [Microservices Overview](#microservices-overview)\n- [Installation and Setup](#installation-and-setup)\n- [API Endpoints](#api-endpoints)\n- [Event-Driven Communication](#event-driven-communication)\n\n## 🏗️ Architecture\n\n![image](https://github.com/user-attachments/assets/52a1d660-c177-47f6-a935-a8bd374a32a8)\n\n## 🛠️ Technologies Used\n\n### Backend:\n- **.NET 9 Web API** (Microservices)\n- **PostgreSQL** (Relational Data)\n- **MongoDB** (NoSQL Data)\n- **RabbitMQ** (Event-driven communication)\n- **MassTransit** (Message broker integration)\n- **Entity Framework Core** (ORM)\n- **Mapster** (Object Mapping)\n- **IdentityServer** (Authentication \u0026 Authorization)\n\n### Frontend:\n- **Next.js** (React-based Web Application)\n- **TailwindCSS** (Styling)\n\n### Infrastructure:\n- **Docker \u0026 Docker Compose** (Containerization)\n- **Kubernetes** (Future Deployment)\n- **Polly** (Resilience and fault handling)\n\n## 🏢 Microservices Overview\n\n### **1️⃣ Identity Service**\n- **Manages authentication and authorization**.\n- **Database:** PostgreSQL.\n- **External authentication providers support** (OAuth, JWT).\n\n### **2️⃣ Auction Service**\n- **Manages auction creation and updates**.\n- **Database:** PostgreSQL.\n- **Communicates with Search and Bidding services via RabbitMQ**.\n\n### **3️⃣ Search Service**\n- **Handles search queries on auctions**.\n- **Database:** MongoDB.\n- **Consumes auction-related events**.\n\n### **4️⃣ Bidding Service**\n- **Manages bid placements**.\n- **Database:** MongoDB.\n- **Consumes auction and bid events**.\n\n### **5️⃣ Notification Service**\n- **Uses SignalR for real-time updates**.\n- **Broadcasts bid and auction status changes**.\n\n## 🚀 Installation and Setup\n\n### **1️⃣ Clone the Repository**\n```sh\ngit clone [https://github.com/your-repo/auction-app.git](https://github.com/hadi-soufan/.NET-Microservice.git)\ncd src/\n```\n\n### **2️⃣ Start Services Using Docker**\nEnsure you have **Docker \u0026 Docker Compose** installed, then run:\n\n```sh\ndocker-compose up -d\n```\n\nThis will start:\n- **PostgreSQL (for Identity \u0026 Auction Service)**\n- **MongoDB (for Search \u0026 Bidding Service)**\n- **RabbitMQ (for event messaging)**\n\n### **4️⃣ Run Migrations for PostgreSQL**\n```sh\ndotnet ef database update\n```\n\n### **5️⃣ Start the Microservices**\nRun each service individually:\n\n```sh\ncd src/AuctionService\ndotnet run\n```\n\nRepeat for other services (`SearchService`, `BiddingService`, etc.).\n\n## 📌 API Endpoints\n\n### **🔹 Auction Service**\n| Method | Endpoint | Description | Auth |\n|--------|---------|-------------|------|\n| `POST` | `/api/auctions` | Create an auction | ✅ |\n| `PUT` | `/api/auctions/:id` | Update an auction | ✅ |\n| `DELETE` | `/api/auctions/:id` | Delete an auction | ✅ |\n| `GET` | `/api/auctions` | Get all auctions | ❌ |\n| `GET` | `/api/auctions/:id` | Get auction by ID | ❌ |\n\n### **🔹 Search Service**\n| Method | Endpoint | Description | Auth |\n|--------|---------|-------------|------|\n| `GET` | `/api/search?query` | Search auctions with filters | ❌ |\n\n## 🔄 Event-Driven Communication\n\n### **📤 Events Emitted**\n| Service | Event | Description |\n|---------|-------|-------------|\n| AuctionService | `AuctionCreated` | Triggered when a new auction is created |\n| AuctionService | `AuctionUpdated` | Triggered when an auction is updated |\n| AuctionService | `AuctionDeleted` | Triggered when an auction is deleted |\n| BiddingService | `BidPlaced` | Triggered when a user places a bid |\n| BiddingService | `BiddingFinished` | Triggered when an auction ends |\n\n### **📥 Events Consumed**\n| Service | Event | Source |\n|---------|-------|--------|\n| SearchService | `AuctionCreated` | AuctionService |\n| SearchService | `AuctionUpdated` | AuctionService |\n| SearchService | `AuctionDeleted` | AuctionService |\n| BiddingService | `AuctionFinished` | SearchService |\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhadi-soufan%2F.net-microservice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhadi-soufan%2F.net-microservice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhadi-soufan%2F.net-microservice/lists"}