{"id":28363868,"url":"https://github.com/taberkkaya/repositorykit","last_synced_at":"2026-03-09T00:32:12.222Z","repository":{"id":296049668,"uuid":"985832176","full_name":"taberkkaya/RepositoryKit","owner":"taberkkaya","description":"Provider-agnostic, modular Repository \u0026 UnitOfWork infrastructure for .NET 9+. Easily swap between Entity Framework Core, MongoDB, or custom providers. Clean architecture, fully unit-testable, LINQ-powered, and ready for production.","archived":false,"fork":false,"pushed_at":"2025-06-09T06:38:14.000Z","size":89,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-29T01:06:11.386Z","etag":null,"topics":["clean-architecture","csharp","data-access","dotnet","dotnet9","entity-framework-core","linq","mongodb","nuget","open-source","repository-pattern","unit-testing"],"latest_commit_sha":null,"homepage":"https://www.nuget.org/packages/RepositoryKit/","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/taberkkaya.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"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-05-18T16:08:24.000Z","updated_at":"2025-06-09T06:38:17.000Z","dependencies_parsed_at":"2025-06-22T18:45:50.510Z","dependency_job_id":null,"html_url":"https://github.com/taberkkaya/RepositoryKit","commit_stats":null,"previous_names":["taberkkaya/repositorykit"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/taberkkaya/RepositoryKit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taberkkaya%2FRepositoryKit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taberkkaya%2FRepositoryKit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taberkkaya%2FRepositoryKit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taberkkaya%2FRepositoryKit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/taberkkaya","download_url":"https://codeload.github.com/taberkkaya/RepositoryKit/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taberkkaya%2FRepositoryKit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30278519,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-08T20:45:49.896Z","status":"ssl_error","status_checked_at":"2026-03-08T20:45:49.525Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["clean-architecture","csharp","data-access","dotnet","dotnet9","entity-framework-core","linq","mongodb","nuget","open-source","repository-pattern","unit-testing"],"created_at":"2025-05-28T19:39:48.205Z","updated_at":"2026-03-09T00:32:12.213Z","avatar_url":"https://github.com/taberkkaya.png","language":"C#","readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"assets/logo-64x64.png\" width=\"128\" alt=\"RepositoryKit logo\" /\u003e\n  \u003ch1\u003eRepositoryKit\u003c/h1\u003e\n  \u003cp\u003e\n    \u003cstrong\u003eProvider-agnostic, production-ready Repository \u0026 UnitOfWork infrastructure for modern .NET.\u003c/strong\u003e\u003cbr/\u003e\n    Clean. Modular. Mockable. \u003cbr/\u003e\n    \u003ca href=\"https://github.com/taberkkaya/RepositoryKit\"\u003eGitHub\u003c/a\u003e •\n    \u003ca href=\"https://www.nuget.org/packages/RepositoryKit.Core\"\u003eNuGet\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n---\n\n## 🌍 What is RepositoryKit?\n\nRepositoryKit is a **modular, unified infrastructure** for .NET projects  \nthat provides a clean and extensible Repository \u0026 UnitOfWork abstraction.\n\n- **EF Core, MongoDB and more:** Swap your database backend with zero changes to your business logic.\n- **Mockable \u0026 testable:** Designed from scratch for modern dependency injection and testing.\n- **Plug \u0026 play:** Use only what you need—each provider is its own NuGet package.\n\n---\n\n## 📦 Packages\n\n| Package                                                                | Description                               |\n| ---------------------------------------------------------------------- | ----------------------------------------- |\n| [`RepositoryKit.Core`](./src/RepositoryKit.Core)                       | Provider-agnostic abstractions/interfaces |\n| [`RepositoryKit.EntityFramework`](./src/RepositoryKit.EntityFramework) | Entity Framework Core implementation      |\n| [`RepositoryKit.MongoDb`](./src/RepositoryKit.MongoDb)                 | MongoDB implementation                    |\n| [`RepositoryKit.Extensions`](./src/RepositoryKit.Extensions)           | Useful LINQ/collection extensions         |\n\n---\n\n## 🚀 Quickstart\n\n### 1. Add a provider package:\n\n```sh\ndotnet add package RepositoryKit.EntityFramework\n# or\ndotnet add package RepositoryKit.MongoDb\n```\n\n### **2. Register with DI (EF example):**\n\n```csharp\nbuilder.Services.AddDbContext\u003cAppDbContext\u003e(...);\nbuilder.Services.AddScoped\u003cIUnitOfWork\u003cAppDbContext\u003e, EfUnitOfWork\u003cAppDbContext\u003e\u003e();\nbuilder.Services.AddSingleton\u003cIUnitOfWorkManager, EfUnitOfWorkManager\u003e();\n```\n\n### **3. Use in your app (Minimal API example):**\n\n```csharp\napp.MapGet(\"/products\", async (IUnitOfWork\u003cAppDbContext\u003e uow) =\u003e\n{\n    var repo = uow.GetRepository\u003cProduct\u003e();\n    var products = await repo.GetAllAsync();\n    return Results.Ok(products);\n});\n```\n\n### **4. Extensions for any collection/repository:**\n\n```csharp\nvar distinct = products.SafeDistinct(p =\u003e p.CategoryId).ToList();\nvar firstOrNone = products.AsQueryable().FirstOrNone();\n```\n\n## 🧩 Why RepositoryKit?\n\n- **Provider-agnostic:** No more vendor lock-in\n- **Test-friendly:** Mock everything, everywhere\n- **Production patterns:** Real-world repository \u0026 UoW\n- **Minimal boilerplate:** Focus on your business logic\n\n## 📚 Full Documentation\n\nSee individual package READMEs for full details:\n\n- [Core](https://github.com/taberkkaya/RepositoryKit/blob/master/src/RepositoryKit.Core/README.md)\n- [EntityFramework](https://github.com/taberkkaya/RepositoryKit/blob/master/src/RepositoryKit.EntityFramework/README.md)\n- [MongoDb](https://github.com/taberkkaya/RepositoryKit/blob/master/src/RepositoryKit.MongoDB/README.md)\n- [Extensions](https://github.com/taberkkaya/RepositoryKit/tree/master/src/RepositoryKit.Extensions)\n\n## 🤝 Contributing\n\nPRs, issues, and suggestions are all welcome! \u003cbr\u003e\nFeel free to fork, star, or use for your next side project.\n\n## 📜 License\n\nMIT © [Ataberk Kaya](https://github.com/taberkkaya)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaberkkaya%2Frepositorykit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftaberkkaya%2Frepositorykit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaberkkaya%2Frepositorykit/lists"}