The full stack, with file storage. Auth, cache, persistence, and S3-compatible uploads โ pre-wired. Three access modes, per-bucket configuration, and one docker compose up starts everything.
Use code FIRSTXPEOPLE for โฌ15 off → โฌ50
Tech stack
BaseRepository with 19 overridable hooks across 5 groups (error, cache key, invalidation, validation, lifecycle, mapping), offset + cursor pagination, ErrorOr result pattern, RFC 7807 error handler, health checks, Swagger with XML docs, Docker Compose.
Token validation through Keycloak's OIDC discovery endpoint. Role-based policies (Authenticated, AdminOnly). 401 and 403 responses return ProblemDetails.
The Swagger UI Authorize button is wired to the Keycloak PKCE flow. Log in once, and all requests carry the token. Pre-built realm โ no manual Keycloak setup needed.
Redis cache-aside is transparent โ your service calls the repository and the cache layer is handled automatically. Tag-based invalidation at three levels keeps the cache consistent.
Public for CDN-served assets with a direct URL. PresignedUrl for time-limited signed links โ expiry configured per bucket. Proxy streams the file through the API; the bucket is never exposed. Each bucket gets its own access mode.
Each bucket is configured independently in appsettings.json โ its own access mode, allowed content types, max file size, and credentials. Add as many buckets as your app needs. Compatible with AWS S3, Garage or any S3-compatible backend.
admin-test and user-test are created in the realm on first boot. Open Swagger, click Authorize, log in, and test role-protected endpoints immediately.
Five checks: API liveness, MongoDB, Keycloak, Redis, and S3 storage. All exposed via /health/live and /health/ready.
Why this kit
This kit adds a complete S3 file storage layer on top of the full-stack kit. File uploads, access control per bucket, and three different serving strategies โ all integrated and ready to use from day one.
Copy .env.example to .env, run docker compose up --build. MongoDB, Keycloak, Redis, Garage, and the API all start together.
Works with AWS S3 out of the box โ same SDK, same config shape. Switch to Garage, MinIO, or Cloudflare R2 by changing only the endpoint and credentials. No code changes, no abstraction layers to maintain.
Set Cache:Enabled = false and NullCacheService takes over. The Redis health check is removed automatically.
Detailed docs covering the architecture, S3 configuration reference, access modes, and integration notes. Delivered with the ZIP alongside the public GitHub docs.
Pricing
Full source code, private docs, unlimited projects, entire team included.
or โฌ50 with code FIRSTXPEOPLE
Secure checkout via Lemon Squeezy ยท Instant delivery
Want the full stack without file storage? See the MongoDB + Keycloak + Redis kit →