{"id":25923929,"url":"https://github.com/dosaic/dosaic","last_synced_at":"2026-04-21T13:05:22.352Z","repository":{"id":280067250,"uuid":"919995902","full_name":"dosaic/dosaic","owner":"dosaic","description":" A plugin-first dotnet framework for rapidly building anything hosted in the web.","archived":false,"fork":false,"pushed_at":"2025-07-18T09:39:16.000Z","size":2218,"stargazers_count":5,"open_issues_count":5,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-01T00:31:17.477Z","etag":null,"topics":["auto-discovery","csharp","dependency-injection","dotnet","dotnet-core","dotnet9","logging","metrics","microservices","minimal-api","modular","observability","performance","plugin-framework","plugin-system","security","source-generator","tracting","web-framework","webhost"],"latest_commit_sha":null,"homepage":"https://dosaic.gitbook.io/dosaic","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/dosaic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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,"zenodo":null}},"created_at":"2025-01-21T11:36:36.000Z","updated_at":"2025-07-24T22:47:58.000Z","dependencies_parsed_at":null,"dependency_job_id":"438188ba-eddc-4f09-aad1-47c1e6c1bb7c","html_url":"https://github.com/dosaic/dosaic","commit_stats":null,"previous_names":["dosaic/dosaic"],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/dosaic/dosaic","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dosaic%2Fdosaic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dosaic%2Fdosaic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dosaic%2Fdosaic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dosaic%2Fdosaic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dosaic","download_url":"https://codeload.github.com/dosaic/dosaic/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dosaic%2Fdosaic/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269457772,"owners_count":24420289,"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-08-08T02:00:09.200Z","response_time":72,"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":["auto-discovery","csharp","dependency-injection","dotnet","dotnet-core","dotnet9","logging","metrics","microservices","minimal-api","modular","observability","performance","plugin-framework","plugin-system","security","source-generator","tracting","web-framework","webhost"],"created_at":"2025-03-03T17:19:07.365Z","updated_at":"2026-02-17T12:05:06.412Z","avatar_url":"https://github.com/dosaic.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv style=\"display: flex; justify-content: center; align-items: center;margin-top:10px\"\u003e\n  \u003ca href=\"https://dosaic.gitbook.io/dosaic/\" target=\"_blank\" style=\"display: flex; align-items: center;\"\u003e\n    \u003cpicture\u003e\n      \u003csource srcset=\"https://raw.githubusercontent.com/dosaic/dosaic/HEAD/.gitbook/assets/logo.svg .gitbook/assets/logo.svg, \"\u003e\n      \u003c!-- \u003csource srcset=\".gitbook/assets/logo.svg\"\u003e --\u003e\n      \u003cimg alt=\"Dosaic\" src=\".gitbook/assets/logo.svg\" height=\"64\" width=\"64\"\u003e\n    \u003c/picture\u003e\n    \u003cspan style=\"margin-left: 10px; font-size: 2em; color: white;\"\u003eDosaic\u003c/span\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n\u003cdiv style=\"display: flex; justify-content: center; align-items: center;margin-top:10px\"\u003e\n  A plugin-first dotnet framework for rapidly building anything hosted in the web.\n\u003c/div\u003e\n\n\u003cdiv style=\"display: flex; justify-content: center; align-items: center;margin-top:10px\"\u003e\n\n![Framework](https://img.shields.io/badge/framework-net10.0-blueviolet?style=flat-square)\n[![MIT License](https://img.shields.io/badge/license-MIT-%230b0?style=flat-square)](https://github.com/dosaic/dosaic/blob/main/LICENSE.txt)\n![Nuget](https://img.shields.io/nuget/v/Dosaic.Hosting.Webhost?style=flat-square)\n![Nuget](https://img.shields.io/nuget/dt/Dosaic.Hosting.Webhost?style=flat-square)\n\n\u003c/div\u003e\n\n## Documentation\n\nFor full documentation, visit https://dosaic.gitbook.io/dosaic/.\n\n**Offline?**\nCheck the individual README files in each plugins directory.\n\n## Features\n\n* Supports structured logging with Serilog\n* Exposes Prometheus compatible metrics endpoint\n* Configurable trace sampling rates with OpenTelemetry\n* Compatible with ASP.NET Core Minimal APIs \u0026 ASP.NET Core Mvc\n* Uses source-generators to load plugins at runtime\n* Optimized for high performance\n* Utilizes Span\u003cT\u003e and Memory\u003cT\u003e for reduced allocations\n* Implements OWASP security guidelines\n* Follows .NET Core dependency injection and middleware patterns\n\n## Prerequisites\n\nBefore you begin, ensure you have met the following requirements:\n\n* You have installed the latest version of `.net10 sdk`\n\n## Get started\n\nTo start using Dosaic components/plugins, you have to:\n\n1. Install/add the PluginWebHost via nuget package `Dosaic.Hosting.WebHost`\n2. Install/add the source generator plugin via nuget package `Dosaic.Hosting.Generator`\n3. Rewrite the Entrypoint `Program.cs` to have the following code:\n\n```c#\nusing Dosaic.Hosting.WebHost;\nPluginWebHostBuilder.RunDefault(Dosaic.Generated.DosaicPluginTypes.All);\n```\n\n4. Install/add your plugins via nuget packages prefixed with `Dosaic`\n\n\n## Building Dosaic\n\nTo build Dosaic, follow these steps:\n\n```sh\ndotnet build ./Dosaic.sln\n```\n\nTo format and style check the solution run:\n\n```sh\ndotnet format ./Dosaic.sln\n```\n\n## Testing Dosaic\n\nWe are using these frameworks for unit testing\n\n* AutoBogus\n* Bogus\n* AwesomeAssertions\n* Microsoft.NET.Test.Sdk\n* NaughtyStrings.Bogus\n* NSubstitute\n* NUnit\n* RichardSzalay.MockHttp\n* WireMockDotNet\n\nTo run unit tests for Dosaic, follow these steps:\n\n```\ndotnet test ./Dosaic.sln\n```\n\n## Contributing to Dosaic\n\nTo contribute to Dosaic, follow these steps:\n\n1. Check the issues if your idea or problem already exists\n2. Open a new issue if necessary to explain your idea or problem with as much details as possible\n\nTo contribute code along your issue please follow the these steps:\n2. Clone this repository.\n3. Create a branch: `git checkout -b \u003cbranch_name\u003e`.\n4. Check our used tools and frameworks to ensure you are using the same tools which are already in place.\n5. Check if your changes are in line with our style settings from .editorconfig and run `dotnet format`.\n6. Make your changes and commit them: `git commit -m '\u003ccommit_message\u003e'`\n7. Push to the original branch: `git push origin Dosaic/\u003cbranch_name\u003e`\n8. Create the pull request.\n\n## Development decisions\n\n* Follow the code style which is configured via `.editorconfig`\n\n### Disabled Compiler Errors\n\n| Code | Reason                                      | Link                                                                                               |\n| ---- | ------------------------------------------- | -------------------------------------------------------------------------------------------------- |\n| 1701 | Assembly Referencing                        | [1701](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-messages/cs1701) |\n| 1702 | Assembly Referencing                        | [1702](https://docs.microsoft.com/en-us/dotnet/csharp/misc/cs1702)                                 |\n| 1591 | Disable XML Comments                        | [1591](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-messages/cs1591) |\n\n### Implicit package overrides\n\n#### System.Net.Http 4.3.0 -\u003e 4.3.4\n\n4.3.0 has some major security issues\n\n* [Advisory: github.com (Severity: High)](https://github.com/advisories/GHSA-7jgj-8wvc-jh57)\n* [Advisory by Mend.io: GHSA-7jgj-8wvc-jh57 (Severity: High)](https://osv.dev/vulnerability/GHSA-7jgj-8wvc-jh57)\n\nBecause of this, we decided to explicitly install a newer version,\nwhich does not have the security issues.\n\nAffected projects:\n* Plugins.Persistence.Abstractions (through QDataQueryHelper.Core)\n* Plugins.Persistence.MongoDb (through MongoDbMigrations)\n* Extensions.RestEase.Tests (through WireMock.Net)\n\n#### System.Text.RegularExpressions 4.3.0 -\u003e 4.3.1\n\n4.3.0 has some major security issues\n\n* [Advisory: github.com (Severity: High)](https://github.com/advisories/GHSA-cmhx-cq75-c4mj)\n* [Advisory by Mend.io: GHSA-cmhx-cq75-c4mj (Severity: High)](https://osv.dev/vulnerability/GHSA-cmhx-cq75-c4mj)\n\nBecause of this, we decided to explicitly install a newer version,\nwhich does not have the security issues.\n\nAffected projects:\n* Plugins.Persistence.Abstractions (through QDataQueryHelper.Core)\n* Plugins.Persistence.MongoDb (through MongoDbMigrations)\n* Extensions.RestEase.Tests (through WireMock.Net)\n\n#### Newtonsoft.Json 9.0.1 -\u003e 13.0.3\n\n9.0.1 has some major security issues\n\n* [Advisory: github.com (Severity: High)](https://github.com/advisories/GHSA-5crp-9r3c-p9vr)\n* [Advisory by Mend.io: GHSA-5crp-9r3c-p9vr (Severity: High)](https://osv.dev/vulnerability/GHSA-5crp-9r3c-p9vr)\n\nBecause of this, we decided to explicitly install a newer version,\nwhich does not have the security issues.\n\nAffected projects:\n* Plugins.Persistence.MongoDb (through MongoDbMigrations)\n\n#### SSH.NET 2020.0.1 -\u003e 2024.2.0\n\n2020.0.1 has some major security issues\n\n* [Advisory: github.com (Severity: Moderate)](https://github.com/advisories/GHSA-72p8-v4hg-v45p)\n* [Advisory by Mend.io: GHSA-72p8-v4hg-v45p (Severity: Moderate)](https://osv.dev/vulnerability/GHSA-72p8-v4hg-v45p)\n\nBecause of this, we decided to explicitly install a newer version,\nwhich does not have the security issues.\n\nAffected projects:\n* Plugins.Persistence.MongoDb (through MongoDbMigrations)\n\n\n## About us\n\nThis framework was based on https://github.com/sia-digital/pibox.\n\n### Where did the name come from?\n\nD - Dotnet\n\nO - Orchestration\n\nS - Services\n\nA - Abstraction\n\nI - Integration\n\nC - Configuration\n\nJust kidding, we were looking around and found **mosaic**, which is already kind of taken.\nThen we just switched the first letter and everything made sense :D\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdosaic%2Fdosaic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdosaic%2Fdosaic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdosaic%2Fdosaic/lists"}