{"id":15093006,"url":"https://github.com/thangchung/practical-dapr","last_synced_at":"2025-04-07T06:07:48.728Z","repository":{"id":44203965,"uuid":"243936979","full_name":"thangchung/practical-dapr","owner":"thangchung","description":"A full-stack .NET microservices build on Dapr and Tye","archived":false,"fork":false,"pushed_at":"2023-07-05T20:28:54.000Z","size":3317,"stargazers_count":301,"open_issues_count":4,"forks_count":64,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-03-31T04:07:30.378Z","etag":null,"topics":["blazor","clean-architecture","dapr","ddd-patterns","docker","docker-compose","domain-driven-design","dotnet-core","graphql","grpc-dotnet","hotchocolate","kubernetes","mediatr","microservices","minimalist","protobuf","tye"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thangchung.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-02-29T09:06:32.000Z","updated_at":"2024-12-27T15:30:37.000Z","dependencies_parsed_at":"2024-01-05T21:03:30.459Z","dependency_job_id":null,"html_url":"https://github.com/thangchung/practical-dapr","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thangchung%2Fpractical-dapr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thangchung%2Fpractical-dapr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thangchung%2Fpractical-dapr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thangchung%2Fpractical-dapr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thangchung","download_url":"https://codeload.github.com/thangchung/practical-dapr/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247601448,"owners_count":20964864,"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":["blazor","clean-architecture","dapr","ddd-patterns","docker","docker-compose","domain-driven-design","dotnet-core","graphql","grpc-dotnet","hotchocolate","kubernetes","mediatr","microservices","minimalist","protobuf","tye"],"created_at":"2024-09-25T11:02:52.349Z","updated_at":"2025-04-07T06:07:48.697Z","avatar_url":"https://github.com/thangchung.png","language":"C#","funding_links":[],"categories":["kubernetes","Sample Projects","Architectural Patterns","docker"],"sub_categories":["Workflow","Microservices"],"readme":"# practical-dapr project\n\nA lightweight low ceremony .NET microservices are lifted and shifted to Kubernetes platform and run on Dapr runtime (with and without Tye options).\n\n[![Price](https://img.shields.io/badge/price-FREE-0098f7.svg)](https://github.com/thangchung/practical-dapr/blob/master/LICENSE)\n![webhost-ui](https://github.com/thangchung/practical-dapr/workflows/webhost-ui-ci/badge.svg?branch=master)\n![graphql-api](https://github.com/thangchung/practical-dapr/workflows/graphql-ci/badge.svg?branch=master)\n![identity-api](https://github.com/thangchung/practical-dapr/workflows/identity-ci/badge.svg?branch=master)\n![product-catalog-api](https://github.com/thangchung/practical-dapr/workflows/product-catalog-ci/badge.svg?branch=master)\n![inventory-api](https://github.com/thangchung/practical-dapr/workflows/inventory-ci/badge.svg?branch=master)\n\n\u003e This repository based on some of the old libraries. So be careful if you use it in your production environment!!!\n\u003e\n\u003e We're working on [`clean-architecture-dotnet`](https://github.com/thangchung/clean-architecture-dotnet) for the new and lightweight version of the minimal Clean Architecture, Domain-driven Design lite, CQRS lite, and just enough Cloud-native patterns, then package into Docker, and finally deploy it using Tye on Kubernetes and Dapr in a practical way 👍\n\n# High level architecture\n\n![](docs/assets/high_level_architecture.png)\n\n# CoolStore demo application\n\n![](docs/assets/webui-products.png)\n\n\u003e Want to develop this application? Reference at [Developer Guidance](/docs/developer_guide.md)\n\n\u003e Want to deployment this application? Reference at [Deployment Guidance](/docs/deployment_guide.md)\n\n# Dapr building blocks\n\n## Service to service\n\n- Dapr client to calling to another service (`product-catalog-api` to `inventory-api`)\n- HTTP/gRPC invocation\n\n## State store\n\n- Using state management to store the shopping cart data and its items\n- Redis for state management\n\n## Pub/sub message\n\n- Create, update and delete a project at `product-catalog-api`, and subsequently publish an event to `inventory-api` to create `price`, `rop`, and `eoq`\n- Redis for pub/sub\n\n## Input/output binding\n\nTODO\n\n## Observability\n\n- Run `tye` command as following\n\n```bash\n$ tye run --dtrace zipkin=http://localhost:9411 --logs seq=http://localhost:5340\n```\n\n- Log management with Seq dashboard\n\n![](docs/assets/seq_dashboard.png)\n\n- Distributed Tracing with Zipkin dashboard (OpenTelemetry)\n\n![](docs/assets/zipkin_dashboard.png)\n\n\u003e Technical stack is at [technical_stack](/docs/technical_stack.md)\n\n## Show your support\n\nIf you liked `practical-dapr` project or if it helped you, please give a star :star: for this repository. That will not only help strengthen our .NET community but also improve cloud-native apps development skills for .NET developers in around the world. Thank you very much :+1:\n\n## Contributing\n\n1. Fork it!\n2. Create your feature branch: `git checkout -b my-new-feature`\n3. Commit your changes: `git commit -am 'Add some feature'`\n4. Push to the branch: `git push origin my-new-feature`\n5. Submit a pull request :p\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthangchung%2Fpractical-dapr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthangchung%2Fpractical-dapr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthangchung%2Fpractical-dapr/lists"}