{"id":20859154,"url":"https://github.com/fullstackhero/dotnet-microservices-boilerplate","last_synced_at":"2025-04-05T02:11:47.145Z","repository":{"id":65219809,"uuid":"580914606","full_name":"fullstackhero/dotnet-microservices-boilerplate","owner":"fullstackhero","description":"The Ultimate Microservices Starter Kit for .NET Developers!","archived":false,"fork":false,"pushed_at":"2023-06-11T20:37:18.000Z","size":783,"stargazers_count":476,"open_issues_count":3,"forks_count":114,"subscribers_count":29,"default_branch":"main","last_synced_at":"2024-04-14T02:56:56.488Z","etag":null,"topics":["api-gateway","aspnetcore","docker","docker-compose","dotnet","dotnet7","fluentpos","microservices","openid","vertical-slice-architecture","yarp"],"latest_commit_sha":null,"homepage":"https://fullstackhero.net/dotnet-microservices-boilerplate/","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/fullstackhero.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}},"created_at":"2022-12-21T19:26:28.000Z","updated_at":"2024-04-08T21:12:25.000Z","dependencies_parsed_at":"2023-10-12T06:03:33.504Z","dependency_job_id":null,"html_url":"https://github.com/fullstackhero/dotnet-microservices-boilerplate","commit_stats":{"total_commits":296,"total_committers":4,"mean_commits":74.0,"dds":"0.17567567567567566","last_synced_commit":"3f506d7ebf023aee63c73fd34bd198ad5972e31e"},"previous_names":[],"tags_count":10,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullstackhero%2Fdotnet-microservices-boilerplate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullstackhero%2Fdotnet-microservices-boilerplate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullstackhero%2Fdotnet-microservices-boilerplate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullstackhero%2Fdotnet-microservices-boilerplate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fullstackhero","download_url":"https://codeload.github.com/fullstackhero/dotnet-microservices-boilerplate/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247276189,"owners_count":20912288,"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":["api-gateway","aspnetcore","docker","docker-compose","dotnet","dotnet7","fluentpos","microservices","openid","vertical-slice-architecture","yarp"],"created_at":"2024-11-18T04:48:48.888Z","updated_at":"2025-04-05T02:11:47.127Z","avatar_url":"https://github.com/fullstackhero.png","language":"C#","readme":"# .NET Microservices Boilerplate\n\n[![fluentpos](https://github.com/fullstackhero/dotnet-microservices-boilerplate/actions/workflows/fluentpos-cicd.yaml/badge.svg?branch=main)](https://github.com/fullstackhero/dotnet-microservices-boilerplate/actions/workflows/fluentpos-cicd.yaml)\n\nThe goal is to build a framework that can make building microservices in .NET easy for developers. This project follows Vertical Slice Architecture along with other latest best practices and tools like CQRS, NoSQL, SQL, MediatR, Serilog, FluentValidations and more.🚀\n\n# Table of Contents\n\n- [.NET Microservices Boilerplate](#net-microservices-boilerplate)\n- [Table of Contents](#table-of-contents)\n  - [Goals](#goals)\n  - [FluentPos](#fluentpos)\n  - [How to Run ?](#how-to-run-)\n    - [Tye](#tye)\n    - [Docker \\\u0026 Docker-Compose](#docker--docker-compose)\n  - [Technologies \\\u0026 Libraries](#technologies--libraries)\n  - [Documentation](#documentation)\n  - [Changelogs](#changelogs)\n  - [Community](#community)\n  - [License](#license)\n  - [Support ⭐](#support-)\n  - [Code Contributors](#code-contributors)\n  - [Financial Contributors](#financial-contributors)\n\n\n## Goals\n\n- :sparkle: Using `Vertical Slice Architecture` for architecture level.\n- :sparkle: Using `Domain Driven Design (DDD)` to implement all business processes in microservices.\n- :sparkle: Using `Rabbitmq` on top of `MassTranit` for `Event Driven Architecture` between our microservices.\n- :sparkle: Using `CQRS` implementation with `MediatR` library.\n- :sparkle: Using `Entity Framework Core` for some microservices.\n- :sparkle: Using `MongoDB` for some microservices.\n- :sparkle: Using `Fluent Validation` and a `Validation Pipeline Behaviour` on top of `MediatR`.\n- :sparkle: Using `Minimal API` for all endpoints.\n- :sparkle: Using `Health Check` for reporting the health of app infrastructure components.\n- :sparkle: Using `Tye` for local development and debugging.\n- :sparkle: Using `Built-In Containerization` for `Docker` images.\n- :sparkle: Using `Zipkin` for distributed tracing.\n- :sparkle: Using `OpenIddict` for authentication and authorization base on `OpenID-Connect` and `OAuth2`.\n- :sparkle: Using `Yarp` as a microservices gateway.\n\n## FluentPos\n\nFluentPos is a sample project that consumes the microservice framework. You will learn a lot by exploring this project, which is located under the `./fluentpos` folder.\n\n\n| Services          | Status         |\n| ----------------- | -------------- |\n| Gateway           | Completed ✔️   |\n| Identity          | Completed ✔️   |\n| Catalog           | Completed ✔️   |\n| Cart              | WIP       🚧   |\n| People            | WIP       🚧   |\n| Ordering          | WIP       🚧   |\n| Payment           | WIP       🚧   |\n\n## How to Run ?\n\n### Tye\nTye is a super-awesome way to run your applications quickly. The `fluentpos` project already has this support. Simply run the following at the `./fluentpos` directory :\n\n```\nmake tye\n```\n\nThat's it! \n\nThis will spin up all the services required. \n- Gateway will be available on `https://localhost:7002`.\n- Identity Service will be available on `https://localhost:7001`.\n- Catalog Service will be available on `https://localhost:7003`.\n\nTo Test these APIs, you can use open up Visual Code from the `./fluentpos` directory, install the `Thunder Client` extension. I have already included the required Test collections at `./fluentpos/thunder-tests`.\n\n\u003e You can find the specification of services under the ./fluentpos/tye.yaml file.\n### Docker \u0026 Docker-Compose\nThe `fluentpos` project comes included with the required docker-compose.yaml and makefile file for your reference.\n\nThere are some prerequisites for using these included docker-compose.yml files:\n\n1) Make sure you have docker installed (on windows install docker desktop)\n\n2) Create and install an https certificate:\n\n    ```\n    dotnet dev-certs https -ep $env:USERPROFILE\\.aspnet\\https\\cert.pfx -p password!\n    ```\n\n    Note that the certificate name and password should match the ones that are mentioned in the docker-compose.yaml file.\n\n3) It's possible that the above step gives you an `A valid HTTPS certificate is already present` error.\n   In that case you will have to run the following command, and then  `Re-Run Step #2`.\n\n    ```\n     dotnet dev-certs https --clean\n    ```\n\n4) Trust the certificate\n\n    ```\n     dotnet dev-certs https --trust\n    ```\nOnce your certificate is trusted, simply navigate into the `./fluentpos` folder of the project and run the following command.\n\n```\nmake docker-up\n```\n\nThis will spin up all the containers required. Your Gateway URL will be available on `https://localhost:7002`.\n\nTo bring down all the `fluentpos` container, simply run the following.\n\n```\nmake docker-down\n```\n\n*Note that the default Docker Images that will be pulled are from my public Image Repository (for eg, `iammukeshm/fluentpos.identity:latest`). You can switch it your variants if required.*\n\n## Technologies \u0026 Libraries\n\n- **[`.NET 7`](https://dotnet.microsoft.com/download)** - .NET Framework and .NET Core, including ASP.NET and ASP.NET Core\n- **[`MVC Versioning API`](https://github.com/microsoft/aspnet-api-versioning)** - Set of libraries which add service API versioning to ASP.NET Web API, OData with ASP.NET Web API, and ASP.NET Core\n- **[`EF Core`](https://github.com/dotnet/efcore)** - Modern object-database mapper for .NET. It supports LINQ queries, change tracking, updates, and schema migrations\n- **[`MediatR`](https://github.com/jbogard/MediatR)** - Simple, unambitious mediator implementation in .NET.\n- **[`FluentValidation`](https://github.com/FluentValidation/FluentValidation)** - Popular .NET validation library for building strongly-typed validation rules\n- **[`Swagger \u0026 Swagger UI`]()** - Swagger tools for documenting API's built on ASP.NET Core\n- **[`Serilog`](https://github.com/serilog/serilog)** - Simple .NET logging with fully-structured events\n- **[`OpenIddict`](https://github.com/openiddict/openiddict-core)** - OpenIddict aims at providing a versatile solution to implement OpenID Connect client, server and token validation support.\n- **[`Mapster`](https://github.com/MapsterMapper/Mapster)** - Convention-based object-object mapper in .NET.\n- **[`Yarp`](https://github.com/microsoft/reverse-proxy)** - Reverse proxy toolkit for building fast proxy servers in .NET\n- **[`Tye`](https://github.com/dotnet/tye)** - Developer tool that makes developing, testing, and deploying microservices and distributed applications easier.\n- **[`MongoDB.Driver`](https://github.com/mongodb/mongo-csharp-driver)** - .NET Driver for MongoDB.\n\n## Documentation\n\nRead Documentation related to this Boilerplate here - https://fullstackhero.net/dotnet-microservices-boilerplate/\n\u003e Feel free to contribute to the Documentation Repository - https://github.com/fullstackhero/docs\n\u003e Docs are not yet updated.\n\n## Changelogs\n\n[View Complete Changelogs.](https://github.com/fullstackhero/dotnet-microservices-boilerplate/blob/main/CHANGELOGS.md)\n\n## Community\n\n- Discord [@fullstackhero](https://discord.gg/gdgHRt4mMw)\n- Facebook Page [@codewithmukesh](https://facebook.com/codewithmukesh)\n- Youtube Channel [@codewithmukesh](https://youtube.com/c/codewithmukesh)\n\n## License\n\nThis project is licensed with the [MIT license](LICENSE).\n\n\n## Support ⭐\n\nHas this Project helped you learn something New? or Helped you at work?\nHere are a few ways by which you can support.\n\n-   Leave a star! ⭐\n-   Recommend this awesome project to your colleagues. 🥇\n-   Do consider endorsing me on LinkedIn for ASP.NET Core - [Connect via LinkedIn](https://codewithmukesh.com/linkedin) 🦸\n-   Sponsor the project - [opencollective/fullstackhero](https://opencollective.com/fullstackhero) ❤️\n-   Or, [consider buying me a coffee](https://www.buymeacoffee.com/codewithmukesh)! ☕\n\n\n## Code Contributors\n\nThis project exists thanks to all the people who contribute. [Submit your PR and join the elite list!](CONTRIBUTING.md)\n\n[![fsh dotnet microservices contributors](https://contrib.rocks/image?repo=fullstackhero/dotnet-microservices-boilerplate \"fsh dotnet microservices contributors\")](https://github.com/fullstackhero/dotnet-microservices-boilerplate/graphs/contributors)\n\n\n## Financial Contributors\n\nBecome a financial contributor and help me sustain the project. [Support the Project!](https://opencollective.com/fullstackhero/contribute)\n\n\u003ca href=\"https://opencollective.com/fullstackhero\"\u003e\u003cimg src=\"https://opencollective.com/fullstackhero/individuals.svg?width=890\"\u003e\u003c/a\u003e\n","funding_links":["https://opencollective.com/fullstackhero","https://www.buymeacoffee.com/codewithmukesh)!","https://opencollective.com/fullstackhero/contribute"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffullstackhero%2Fdotnet-microservices-boilerplate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffullstackhero%2Fdotnet-microservices-boilerplate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffullstackhero%2Fdotnet-microservices-boilerplate/lists"}