{"id":18938860,"url":"https://github.com/nikoo-asadnejad/productservice","last_synced_at":"2025-09-15T06:28:13.238Z","repository":{"id":203149332,"uuid":"708944114","full_name":"Nikoo-Asadnejad/ProductService","owner":"Nikoo-Asadnejad","description":"This project is a sample implementation of Domain-Driven Design (DDD), Command Query Responsibility Segregation (CQRS), and Clean Architecture using .NET. It demonstrates a modern approach to building scalable and maintainable applications.","archived":false,"fork":false,"pushed_at":"2025-09-13T13:21:36.000Z","size":2942,"stargazers_count":6,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-13T15:37:29.163Z","etag":null,"topics":["cqrs","cqrs-architectural-pattern","cqrs-pattern","csharp","ddd","ddd-architecture","ddd-cqrs","ddd-example","ddd-patterns","ddd-sample","domain-driven-design","domain-event","domain-events","dotnet-core","event-driven","fluent-api","fluentvalidation"],"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/Nikoo-Asadnejad.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":"2023-10-23T17:41:32.000Z","updated_at":"2025-09-13T13:21:40.000Z","dependencies_parsed_at":"2024-01-12T21:02:35.925Z","dependency_job_id":"a10eb338-7892-4302-8eca-137e0f21a804","html_url":"https://github.com/Nikoo-Asadnejad/ProductService","commit_stats":null,"previous_names":["nikoo-asadnejad/productservice"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Nikoo-Asadnejad/ProductService","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nikoo-Asadnejad%2FProductService","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nikoo-Asadnejad%2FProductService/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nikoo-Asadnejad%2FProductService/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nikoo-Asadnejad%2FProductService/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Nikoo-Asadnejad","download_url":"https://codeload.github.com/Nikoo-Asadnejad/ProductService/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nikoo-Asadnejad%2FProductService/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275216872,"owners_count":25425558,"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","status":"online","status_checked_at":"2025-09-15T02:00:09.272Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["cqrs","cqrs-architectural-pattern","cqrs-pattern","csharp","ddd","ddd-architecture","ddd-cqrs","ddd-example","ddd-patterns","ddd-sample","domain-driven-design","domain-event","domain-events","dotnet-core","event-driven","fluent-api","fluentvalidation"],"created_at":"2024-11-08T12:15:38.671Z","updated_at":"2025-09-15T06:28:13.211Z","avatar_url":"https://github.com/Nikoo-Asadnejad.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ProductService\n\nWelcome to the ProductService repository. This project is a sample implementation of Domain-Driven Design (DDD), Command Query Responsibility Segregation (CQRS), and Clean Architecture using .NET. It demonstrates a modern approach to building scalable and maintainable applications.\n\n ## Overview\n\nProductService is designed to manage product-related operations in an e-commerce system. The project adheres to the following architectural principles:\n\n- Domain-Driven Design (DDD): Organizes code around the business domain, ensuring a clear separation of concerns and encapsulation of business logic.\n- CQRS (Command Query Responsibility Segregation): Separates read and write operations to optimize performance and scalability.\n- Clean Architecture: Ensures that the application is structured in a way that maintains a separation between core business logic and external concerns.\n\n## Key Features\n\n- Fluent Validation: Implemented for validating inputs in a fluent and expressive manner.\nInternal Message Queue: Uses .NET channels to handle internal messaging and communication between components.\nDomain Event Handlers: Processes domain events to trigger actions or updates based on changes in the domain model.\nCQRS with MediatR: Utilizes MediatR for implementing the CQRS pattern, handling commands and queries in a decoupled manner.\nArchitecture\n\n- Domain Layer\nEntities: Core business objects representing concepts like Product.\nValue Objects: Immutable types representing attributes with business logic.\nAggregates: Consist of entities and value objects to enforce consistency rules.\n\n- Application Layer\nCommands and Command Handlers: Defines actions and their corresponding handlers for processing write operations.\nQueries and Query Handlers: Defines read operations and their handlers for fetching data.\n\n- Infrastructure Layer\nRepositories: Implement data access logic and repository patterns to interact with data sources.\nMessage Queue: Implements internal messaging using .NET channels for asynchronous communication.\n\n- Presentation Layer\nAPI Controllers: Expose endpoints for interacting with the service, handling HTTP requests and responses.\n\n- Validation\nFluent Validation is used to ensure that inputs meet the required specifications before processing.\n\n- Internal Messaging\nInternal communication between components is handled using .NET channels. This provides a scalable approach to managing asynchronous tasks and events.\n\n- Domain Events\nDomain events are published and handled to manage changes in the domain model. This allows for decoupled and efficient processing of domain-related actions.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikoo-asadnejad%2Fproductservice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnikoo-asadnejad%2Fproductservice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikoo-asadnejad%2Fproductservice/lists"}