u/Fenixkitdev

I added .NET 10 support to all my Minimal API starter kits — same price, you pick the version

A few days ago I launched FenixKit — a set of .NET Minimal API starter kits with MongoDB, Redis cache-aside, and Keycloak JWT auth already wired up.

Just shipped .NET 10 support across all four kits. Both .NET 8 LTS and .NET 10 are now available at the same price — at checkout you pick which version you want and get that ZIP.

What's in the kits:

  • BaseRepository with 7 overridable hooks — validation, mapping, slug generation
  • ErrorOr result pattern end-to-end, no exceptions for control flow
  • Offset + cursor pagination (O(log n) via MongoDB _id index)
  • RFC 7807 ProblemDetails on every error
  • Docker Compose — one docker compose up starts everything
  • Redis edition: tag-based cache invalidation, FailOpen by default
  • Keycloak edition: JWT Bearer via OIDC, role policies, OAuth2 PKCE in Swagger, pre-built realm

The idea was simple: every time I started a new API I was wiring up the same infrastructure from scratch. So I packaged the version I'd actually want to start from.

fenixkit.dev — launch code FIRSTXPEOPLE for €15 off

reddit.com
u/Fenixkitdev — 5 days ago

Added Redis cache-aside to my Keycloak + .NET 8 Minimal API starter kit

Hey again — a few weeks ago I shared FenixKit, a .NET 8 Minimal API starter kit with Keycloak JWT auth pre-configured (realm import, OIDC, OAuth2 PKCE in Swagger, the works).

Since then I've shipped the next version: MongoDB + Keycloak + Redis — same Keycloak setup, now with a full cache-aside layer on top.

What's new:

  • Tag-based Redis invalidation wired into BaseRepository — automatic on every write, no boilerplate
  • FailOpen by default — Redis down = cache miss, Keycloak validation and MongoDB writes keep working independently
  • Cache:Enabled = false → NullCacheService injected, Redis health check omitted, zero code changes
  • Redis 8 on Docker Compose. Valkey 7.2 also supported — docker-compose.valkey.yml included

The Keycloak side hasn't changed: realm import on first docker compose up, two test users, role-based policies, 401/403 as ProblemDetails.

There are now four kits total depending on what you need — MongoDB only, +Redis, +Keycloak, or the full stack. All at https://fenixkit.dev .

GitHub for this one: https://github.com/fenixkitdev/FenixKit-MongoDB-Keycloak-Redis

€55 — use code FIRSTXPEOPLE for €15 off (→ €40).

Happy to answer questions.

reddit.com
u/Fenixkitdev — 6 days ago
▲ 4 r/KeyCloak+1 crossposts

I made a Keycloak edition of my .NET 8 Minimal API Starter Kit [Second release]

A few weeks ago I posted about my .NET 8 Minimal API Starter Kit (MongoDB). Today I'm launching the second edition — MongoDB + Keycloak.

It has everything from the first kit plus a fully pre-configured Keycloak authentication layer:

  • JWT Bearer configured via OIDC
  • Role-based authorization policies out of the box (Authenticated and AdminOnly)
  • OAuth2 Authorization Code + PKCE flow wired into Swagger — there's an Authorize button that actually works with real Keycloak tokens
  • Pre-built realm (realm-export.json) imported automatically at container startup — two test users already created with different roles, zero manual Keycloak configuration needed
  • 401 and 403 return structured RFC 7807 ProblemDetails, not empty HTTP responses

docker compose up and the API, MongoDB, and Keycloak are all running.

Launch price is €45 — use code FIRSTXPEOPLE for €15 off.

Checkout more details at Github FenixKit

buy at fenixkit.dev

u/Fenixkitdev — 10 days ago

Net Starter Kit

Hello, I've been a .NET dev for a while and I kept starting every new API project by rebuilding the same foundation from scratch. Repository pattern, error handling, pagination, database and Docker setup.

So i made a new solution for my recurring problem with the basics, that solution is ".NET 8 Minimal API Starter Kit"

The core idea is a "BaseRepository" with 7 overridable hooks. You inherit it for each resource and only override what your domain actually needs — everything else (CRUD, pagination, validation flow) runs automatically. Adding a new resource takes minutes.

The full hook chain for "CreateAsync" runs in this order: validate → base mapping → "OnMapCreateAsync" (server-side enrichment) → DB insert → "OnMapDetailAsync". Every hook returns "ErrorOr<T>" so if anything fails the operation aborts before touching the database.

Happy to have feedback for things that might be missing for next versions and products.

fenixkit.dev

reddit.com
u/Fenixkitdev — 14 days ago