An open API service indexing awesome lists of open source software.

https://github.com/taberkkaya/repositorykit

Provider-agnostic, modular Repository & 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.
https://github.com/taberkkaya/repositorykit

clean-architecture csharp data-access dotnet dotnet9 entity-framework-core linq mongodb nuget open-source repository-pattern unit-testing

Last synced: about 2 months ago
JSON representation

Provider-agnostic, modular Repository & 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.

Awesome Lists containing this project

README

          


RepositoryKit logo

RepositoryKit



Provider-agnostic, production-ready Repository & UnitOfWork infrastructure for modern .NET.

Clean. Modular. Mockable.

GitHub β€’
NuGet


---

## 🌍 What is RepositoryKit?

RepositoryKit is a **modular, unified infrastructure** for .NET projects
that provides a clean and extensible Repository & UnitOfWork abstraction.

- **EF Core, MongoDB and more:** Swap your database backend with zero changes to your business logic.
- **Mockable & testable:** Designed from scratch for modern dependency injection and testing.
- **Plug & play:** Use only what you needβ€”each provider is its own NuGet package.

---

## πŸ“¦ Packages

| Package | Description |
| ---------------------------------------------------------------------- | ----------------------------------------- |
| [`RepositoryKit.Core`](./src/RepositoryKit.Core) | Provider-agnostic abstractions/interfaces |
| [`RepositoryKit.EntityFramework`](./src/RepositoryKit.EntityFramework) | Entity Framework Core implementation |
| [`RepositoryKit.MongoDb`](./src/RepositoryKit.MongoDb) | MongoDB implementation |
| [`RepositoryKit.Extensions`](./src/RepositoryKit.Extensions) | Useful LINQ/collection extensions |

---

## πŸš€ Quickstart

### 1. Add a provider package:

```sh
dotnet add package RepositoryKit.EntityFramework
# or
dotnet add package RepositoryKit.MongoDb
```

### **2. Register with DI (EF example):**

```csharp
builder.Services.AddDbContext(...);
builder.Services.AddScoped, EfUnitOfWork>();
builder.Services.AddSingleton();
```

### **3. Use in your app (Minimal API example):**

```csharp
app.MapGet("/products", async (IUnitOfWork uow) =>
{
var repo = uow.GetRepository();
var products = await repo.GetAllAsync();
return Results.Ok(products);
});
```

### **4. Extensions for any collection/repository:**

```csharp
var distinct = products.SafeDistinct(p => p.CategoryId).ToList();
var firstOrNone = products.AsQueryable().FirstOrNone();
```

## 🧩 Why RepositoryKit?

- **Provider-agnostic:** No more vendor lock-in
- **Test-friendly:** Mock everything, everywhere
- **Production patterns:** Real-world repository & UoW
- **Minimal boilerplate:** Focus on your business logic

## πŸ“š Full Documentation

See individual package READMEs for full details:

- [Core](https://github.com/taberkkaya/RepositoryKit/blob/master/src/RepositoryKit.Core/README.md)
- [EntityFramework](https://github.com/taberkkaya/RepositoryKit/blob/master/src/RepositoryKit.EntityFramework/README.md)
- [MongoDb](https://github.com/taberkkaya/RepositoryKit/blob/master/src/RepositoryKit.MongoDB/README.md)
- [Extensions](https://github.com/taberkkaya/RepositoryKit/tree/master/src/RepositoryKit.Extensions)

## 🀝 Contributing

PRs, issues, and suggestions are all welcome!

Feel free to fork, star, or use for your next side project.

## πŸ“œ License

MIT Β© [Ataberk Kaya](https://github.com/taberkkaya)