{"id":24639399,"url":"https://github.com/sia-digital/pibox","last_synced_at":"2025-05-09T03:23:44.882Z","repository":{"id":208465606,"uuid":"721145722","full_name":"sia-digital/pibox","owner":"sia-digital","description":"PiBox is a service hosting framework that allows .net devs to decorate their services with behaviours or functionality (think of plugins) while only using minimal configuration.","archived":false,"fork":false,"pushed_at":"2025-04-04T12:09:54.000Z","size":700,"stargazers_count":6,"open_issues_count":14,"forks_count":3,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-05-04T17:06:20.292Z","etag":null,"topics":["api","aspnetcore","dotnet","dotnet-core","dotnet-standard","dotnet8","framework","lib","library","logging","metrics","microservice","net80","performance","pibox","plugins","security","tests","tracing","web"],"latest_commit_sha":null,"homepage":"https://sia-digital.gitbook.io/pibox/","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/sia-digital.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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}},"created_at":"2023-11-20T12:58:36.000Z","updated_at":"2025-04-04T12:07:22.000Z","dependencies_parsed_at":"2025-01-24T11:19:14.990Z","dependency_job_id":"e5760f1f-c0b1-4ad0-a44e-df70a1a724e7","html_url":"https://github.com/sia-digital/pibox","commit_stats":null,"previous_names":["sia-digital/pibox"],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sia-digital%2Fpibox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sia-digital%2Fpibox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sia-digital%2Fpibox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sia-digital%2Fpibox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sia-digital","download_url":"https://codeload.github.com/sia-digital/pibox/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253181846,"owners_count":21867068,"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","aspnetcore","dotnet","dotnet-core","dotnet-standard","dotnet8","framework","lib","library","logging","metrics","microservice","net80","performance","pibox","plugins","security","tests","tracing","web"],"created_at":"2025-01-25T11:11:22.759Z","updated_at":"2025-05-09T03:23:44.875Z","avatar_url":"https://github.com/sia-digital.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PiBox\n\n\u003cfigure\u003e\u003cimg src=\".gitbook/assets/pibox-logo.png\" alt=\"\"\u003e\u003cfigcaption\u003e\u003c/figcaption\u003e\u003c/figure\u003e\n\n![Framework](https://img.shields.io/badge/framework-net8.0-blueviolet?style=flat-square)\n[![MIT License](https://img.shields.io/badge/license-MIT-%230b0?style=flat-square)](https://github.com/sia-digital/pibox/blob/main/LICENSE.txt)\n![Nuget](https://img.shields.io/nuget/v/PiBox.Hosting.Webhost?style=flat-square)\n![Nuget](https://img.shields.io/nuget/dt/PiBox.Hosting.Webhost?style=flat-square)\n\nPiBox is a `service hosting framework` that allows `.net devs` to `decorate their services with behaviours or functionality (think of plugins) while only using minimal configuration`.\n\n\u003e \"PiBox\" because we want to support unlimited plugins within the api out of the box!\n\n## Features\n\n* logs\n* metrics\n* traces\n* minimal api ready\n* auto discovered plugins\n* with performance in mind\n* less memory allocations\n* industry best practices applied security\n* standard dotnet core patterns \u0026 APIs\n* many plugins!\n\n## Prerequisites\n\nBefore you begin, ensure you have met the following requirements:\n\n* You have installed the latest version of `.net8 sdk`\n\n\n## Get started\n\nTo start using PiBox components/plugins, you have to:\n\n1. Install/add the PluginWebHost via nuget package `PiBox.Hosting.WebHost`\n2. Install/add the source generator plugin via nuget package `PiBox.Hosting.Generator`\n3. Rewrite the Entrypoint `Program.cs` to have following code:\n\n```c#\nusing PiBox.Hosting.WebHost;\nPluginWebHostBuilder.RunDefault(PiBox.Generated.PiBoxPluginTypes.All);\n```\n\n4. Install/add your plugins via nuget packages prefixed with `PiBox`\n\n## Documentation\n\nYou can find a comprehensive documentation [here](https://sia-digital.gitbook.io/pibox/)\n\nOr check the individual README files in each plugins directory\n\n\n## Building PiBox\n\nTo build PiBox, follow these steps:\n\n```sh\ndotnet build ./PiBox.sln\n```\n\nTo format and style check the solution run:\n\n```sh\ndotnet format ./PiBox.sln\n```\n\n## Testing PiBox\n\nWe are using these frameworks for unit testing\n\n* AutoBogus\n* Bogus\n* Microsoft.NET.Test.Sdk\n* NaughtyStrings.Bogus\n* NSubstitute\n* NUnit\n* RichardSzalay.MockHttp\n* WireMock.Net\n\nTo run unit tests for PiBox, follow these steps:\n\n```\ndotnet test ./PiBox.sln\n```\n\n## Contributing to PiBox\n\nTo contribute to PiBox, 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 PiBox/\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","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsia-digital%2Fpibox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsia-digital%2Fpibox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsia-digital%2Fpibox/lists"}