{"id":37046791,"url":"https://github.com/maiconheck/krafted","last_synced_at":"2026-01-14T05:31:05.843Z","repository":{"id":40370243,"uuid":"171190689","full_name":"maiconheck/krafted","owner":"maiconheck","description":"A clean, decoupled and extensible, carefully crafted set of libraries for general purpose. Krafted provides a toolkit of useful and reusable pieces of code, in order to increase your productivity. 🚀","archived":false,"fork":false,"pushed_at":"2024-07-09T21:57:29.000Z","size":1002,"stargazers_count":20,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-04T10:13:31.950Z","etag":null,"topics":["csharp","data-annotations","dotnet","extension-methods","guard-clauses","toolkit","value-objects"],"latest_commit_sha":null,"homepage":"https://maiconheck.github.io/krafted","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/maiconheck.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}},"created_at":"2019-02-18T00:51:45.000Z","updated_at":"2025-09-28T13:26:30.000Z","dependencies_parsed_at":"2023-12-08T15:01:02.436Z","dependency_job_id":"41441232-0fb6-4cd3-bd7f-c84f9518085a","html_url":"https://github.com/maiconheck/krafted","commit_stats":{"total_commits":274,"total_committers":4,"mean_commits":68.5,"dds":"0.22627737226277367","last_synced_commit":"536dc16018d52a12871dc758d4d780b3cc1d7028"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/maiconheck/krafted","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maiconheck%2Fkrafted","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maiconheck%2Fkrafted/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maiconheck%2Fkrafted/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maiconheck%2Fkrafted/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maiconheck","download_url":"https://codeload.github.com/maiconheck/krafted/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maiconheck%2Fkrafted/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28410594,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"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":["csharp","data-annotations","dotnet","extension-methods","guard-clauses","toolkit","value-objects"],"created_at":"2026-01-14T05:31:05.220Z","updated_at":"2026-01-14T05:31:05.828Z","avatar_url":"https://github.com/maiconheck.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"![logo](docfx_project/images/main/logo.png)\n\n![CI / CD pipeline](https://github.com/maiconheck/krafted/workflows/CI%20/%20CD%20pipeline/badge.svg)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=maiconheck_krafted\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=maiconheck_krafted)\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=maiconheck_krafted\u0026metric=coverage)](https://sonarcloud.io/dashboard?id=maiconheck_krafted)\n\n[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=maiconheck_krafted\u0026metric=code_smells)](https://sonarcloud.io/dashboard?id=maiconheck_krafted)\n[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=maiconheck_krafted\u0026metric=duplicated_lines_density)](https://sonarcloud.io/dashboard?id=maiconheck_krafted)\n[![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=maiconheck_krafted\u0026metric=sqale_index)](https://sonarcloud.io/dashboard?id=maiconheck_krafted)\n\n[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=maiconheck_krafted\u0026metric=vulnerabilities)](https://sonarcloud.io/dashboard?id=maiconheck_krafted)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=maiconheck_krafted\u0026metric=sqale_rating)](https://sonarcloud.io/dashboard?id=maiconheck_krafted)\n[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=maiconheck_krafted\u0026metric=reliability_rating)](https://sonarcloud.io/dashboard?id=maiconheck_krafted)\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=maiconheck_krafted\u0026metric=security_rating)](https://sonarcloud.io/dashboard?id=maiconheck_krafted)\n\n# What is Krafted?\nA clean, decoupled and extensible, carefully crafted set of libraries for general purpose.\n\nKrafted provides a toolkit of useful and reusable pieces of code, in order to increase your productivity. 🚀\n\nIt’s reliable, 100% documented and highly test code coverage. ✅\n\n# Why another library?\nThere is a problem in toolkit development, especially for general purpose:\n\nAs toolkits get new features, naturally,\nthey get more dependencies on other 3rd packages, and when we install these toolkits, we end up relying on a number of nuget packages that we don't need, which causes unnecessary coupling, and in the worst case dependency conflict.\n\nWell, this problem doesn't just happen with toolkits. Remember `System.Web.dll`?\nThis assembly, over time, became a large monolith that contained several ASP.net (full framework) modules.\n\nIn fact, one of the problems that were solved by the .NET team through the new .NET Core / ASP.net Core, was precisely the granularization of the modules, thus solving problems such as the old `System.Web.dll` monolith.\n\nWhen looking at the architecture and fine-grained distribution strategy of the `.NET Core` and `ASP.net Core` packages, I came up with the idea of creating a toolkit with this fine-grained strategy, providing high decoupling, independent evolution, and long life to the modules.\n\nAnother way to solve this problem would not be to create several toolkits, each one with a specific purpose?\n\nIn fact, and if you look at every Krafted package, you'll see that it's just that. Each package is independent and has a very specific purpose.\nHowever, I wanted to keep all packages under the same umbrella of the Krafted project, because in addition to being high-decoupled, Krafted has other quality criteria, and all its packages are consistent with them:\n\n- 100% documented (docs, API e IntelliSense).\n- Highly test code coverage.\n- Almost all packages have zero nuget dependencies.\n- Code quality analyzed by [.NET Analyzers](https://docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/overview), [StyleCop Analyzers](https://github.com/DotNetAnalyzers/StyleCopAnalyzers) and [SonarCloud](https://sonarcloud.io/dashboard?id=maiconheck_krafted).\n\n# Getting started\nCheck out the [**docs**](https://maiconheck.github.io/krafted/articles/guards.html) to get some samples of how Krafted can help you.\n\nTo get more details, check out the [**API reference**](https://maiconheck.github.io/krafted/api/).\n\n# Features / where can I get?\nAs explained above, Krafted consists in a set of fine-grained modules, each one is delivered as a nuget package.\n\nSo get the packages according to the features you want:\n\n\u003e **`Krafted.Guards`**\n\u003e\n\u003e A set of Guard Clauses to validate method arguments, in order to enforce defensive programming practice.\n\u003e\n\u003e [![Nuget](https://img.shields.io/nuget/v/Krafted.Guards)](https://www.nuget.org/packages/Krafted.Guards/) [![Nuget](https://img.shields.io/nuget/dt/Krafted.Guards)](https://www.nuget.org/packages/Krafted.Guards/)\n\n\u003e **`Krafted.Extensions`**\n\u003e\n\u003e A set of extension methods for String, Collections, Guid and other types.\n\u003e\n\u003e [![Nuget](https://img.shields.io/nuget/v/Krafted.Extensions)](https://www.nuget.org/packages/Krafted.Extensions/) [![Nuget](https://img.shields.io/nuget/dt/Krafted.Extensions)](https://www.nuget.org/packages/Krafted.Extensions/)\n\n\u003e **`Krafted.ValueObjects`**\n\u003e\n\u003e A set of common Value Objects, with comparison and shallow copy operations.\n\u003e\n\u003e [![Nuget](https://img.shields.io/nuget/v/Krafted.ValueObjects)](https://www.nuget.org/packages/Krafted.ValueObjects/) [![Nuget](https://img.shields.io/nuget/dt/Krafted.ValueObjects)](https://www.nuget.org/packages/Krafted.ValueObjects/)\n\n\u003e **`Krafted.DataAnnotations`**\n\u003e\n\u003e A set of DataAnnotations attributes for validations.\n\u003e\n\u003e [![Nuget](https://img.shields.io/nuget/v/Krafted.DataAnnotations)](https://www.nuget.org/packages/Krafted.DataAnnotations/) [![Nuget](https://img.shields.io/nuget/dt/Krafted.DataAnnotations)](https://www.nuget.org/packages/Krafted.DataAnnotations/)\n\n\u003e **`Krafted.UnitTests`**\n\u003e\n\u003e Extension methods, DataAnnotations and Test Doubles to enhance the unit tests.\n\u003e\n\u003e [![Nuget](https://img.shields.io/nuget/v/Krafted.UnitTests)](https://www.nuget.org/packages/Krafted.UnitTests/) [![Nuget](https://img.shields.io/nuget/dt/Krafted.UnitTests)](https://www.nuget.org/packages/Krafted.UnitTests/)\n\n\u003e **`Krafted.Net`**\n\u003e\n\u003e A set of utility components for network operations.\n\u003e\n\u003e [![Nuget](https://img.shields.io/nuget/v/Krafted.Net)](https://www.nuget.org/packages/Krafted.Net/) [![Nuget](https://img.shields.io/nuget/dt/Krafted.Net)](https://www.nuget.org/packages/Krafted.Net/)\n\n\u003e **`Krafted.DesignPatterns`**\n\u003e\n\u003e A set of building blocks and participants to implement Design Patterns of GoF and others.\n\u003e\n\u003e [![Nuget](https://img.shields.io/nuget/v/Krafted.DesignPatterns)](https://www.nuget.org/packages/Krafted.DesignPatterns/) [![Nuget](https://img.shields.io/nuget/dt/Krafted.DesignPatterns)](https://www.nuget.org/packages/Krafted.DesignPatterns/)\n\n# How can I get help?\nIf you have a question, I suggest [Stack Overflow](https://stackoverflow.com/) as the fastest way to get help.\n\nFor bugs, issues or feature requests, please, create a [GitHub Issue](https://github.com/maiconheck/krafted/issues/new).\n\n# How can I contribute?\n\u003e Annoyed for copying and pasting your utility code between your projects? 😩\n\u003e\n\u003e How about being able to reuse your code through the Krafted? 😎\n\nKrafted was created to be a home of useful and reusable pieces of code for the .NET community.\nSo if you have any code snippet that is useful, clean, decoupled and tested,\nand want to contribute to this goal, please make a [pull request!](https://github.com/maiconheck/krafted/pulls) 💜\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaiconheck%2Fkrafted","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaiconheck%2Fkrafted","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaiconheck%2Fkrafted/lists"}