{"id":25461619,"url":"https://github.com/zonel/pricenegotiationapi","last_synced_at":"2026-04-13T16:33:15.085Z","repository":{"id":212526272,"uuid":"730161139","full_name":"zonel/PriceNegotiationAPI","owner":"zonel","description":"💲 Web API platform for price negotiations between customers and employees of an online store.","archived":false,"fork":false,"pushed_at":"2023-12-18T11:43:51.000Z","size":101,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-17T05:34:11.536Z","etag":null,"topics":["clean-architecture","dapper","docker-compose","dotnet","fluentvalidation","mediatr","mssql","serilog","webapi","xunit"],"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/zonel.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-12-11T10:35:39.000Z","updated_at":"2024-10-16T14:13:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"fb7a884a-28e2-4956-9800-128f2d4033b0","html_url":"https://github.com/zonel/PriceNegotiationAPI","commit_stats":null,"previous_names":["zoneel/pricenegotiationapi","zonel/pricenegotiationapi"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zonel/PriceNegotiationAPI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zonel%2FPriceNegotiationAPI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zonel%2FPriceNegotiationAPI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zonel%2FPriceNegotiationAPI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zonel%2FPriceNegotiationAPI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zonel","download_url":"https://codeload.github.com/zonel/PriceNegotiationAPI/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zonel%2FPriceNegotiationAPI/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31761983,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T15:25:13.801Z","status":"ssl_error","status_checked_at":"2026-04-13T15:25:09.162Z","response_time":93,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["clean-architecture","dapper","docker-compose","dotnet","fluentvalidation","mediatr","mssql","serilog","webapi","xunit"],"created_at":"2025-02-18T05:31:10.271Z","updated_at":"2026-04-13T16:33:14.998Z","avatar_url":"https://github.com/zonel.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PriceNegotiationAPI\nThis web application serves as a platform for price negotiations between customers and employees of an online store. Customers can propose a price for a product, and employees have the ability to accept or reject the proposal. Built using CLEAN architecture and containerized using Docker for ease of use.\n\n## Technologies\n- .NET 7\n- MSSQL Server\n- Dapper\n- MediatR\n- Xunit\n- Fluent Validations\n- Serilog\n- Clean Architecture\n\n## Architecture\nThe application follows the principles of Clean Architecture, emphasizing separation of concerns and maintainability. It's organized into distinct layers:\n\n![image](https://github.com/zoneel/PriceNegotiationAPI/assets/40122657/89ebfdcd-9a4b-4de0-8bf6-5d1bf0d88281)\n\n### Layers:\n- **Presentation Layer**: Responsible for handling API requests and responses.\n- **Infrastructure Layer**: Manages external concerns like database access, adhering to interfaces defined in the Domain layer.\n- **Application Layer**: Contains the business logic, including negotiation processes and product catalog management.\n- **Domain Layer**: Holds the core business entities and logic, ensuring independence from external concerns.\n\n## Database Overview\nThe application utilizes MSSQL Server Docker image for data storage. The database schema comprises tables for product catalog, negotiation details, and any necessary additional entities.\n\n![image](https://github.com/zoneel/PriceNegotiationAPI/assets/40122657/deda16be-09f9-46d0-93de-2de8116beca5)\n\n\n## API Endpoints\n### Products Endpoint:\n![image](https://github.com/zoneel/PriceNegotiationAPI/assets/40122657/639bda51-22c2-4aeb-9912-e87b357a44dc)\n\n### Negotiation Endpoint:\n![image](https://github.com/zoneel/PriceNegotiationAPI/assets/40122657/05be858f-08b9-49dd-9d4c-c7395c6fc886)\n\n### User Endpoint:\n![image](https://github.com/zoneel/PriceNegotiationAPI/assets/40122657/8c518b1e-a70d-441d-83f1-fb915e4e004d)\n\n\n## Launch Instructions\nTo run the application locally:\n1. Clone the repository.\n2. Create and run a container using docker-compose located in my project.\n3. Set up the MSSQL Server database using command below:\n\n   \u003e ```docker exec -it pricenegotiationdb /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P Password123 -i /sql-scripts/init-script.sql ```\n6. Access the API endpoints through a tool like Postman or via your browser.\n\n**(default port is set to 5000 so you can access swagger by going to: localhost:5000/swagger)**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzonel%2Fpricenegotiationapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzonel%2Fpricenegotiationapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzonel%2Fpricenegotiationapi/lists"}