Renta

.NET 9.0 Web API for premium rentals (cars, yachts) and event ticketing with QR tickets, Stripe payments, and multimedia management.

.NET 9 FastEndpoints EF Core PostgreSQL Stripe Cloudinary JWT Serilog

Overview

High-performance modular backend for luxury rentals and event management with multi-entity inventory for cars, yachts, and events, plus QR ticketing and integrated payment workflows.

Architecture

Renta.WebApi -> Renta.Application (CQRS) -> Renta.Domain -> Renta.Infrastructure. FastEndpoints routes, FluentValidation, dual DbContext for read/write, Stripe webhooks, and media via Cloudinary.

Renta.WebApi Renta.Application Renta.Domain Renta.Infrastructure PostgreSQL

Key Technical Decisions

CQRS pattern for separations of read and write operations

FastEndpoints for modern minimal APIs over MVC

Repository pattern for testable data access

Dual DbContext for CQRS-oriented read/write separation

FluentValidation for declarative request validation

Cloudinary for scalable multimedia CDN

Stripe webhooks for async, idempotent payment processing

JWT auth for stateless role-based security

Challenges

Dual DbContext increases migration complexity

Webhook testing requires CLI or staging infrastructure

Offline QR ticket validation vs real-time sync complexity

Cloudinary bindings introduce vendor lock-in

CQRS adds file/model overhead but scales query performance

Trade-offs

Monorepo API complexity vs modular services

CQRS complexity vs query performance optimization

Fluent validation schema vs more app code overhead

JWT stateless auth vs formal session management

Cloudinary lock-in vs managed media benefits

Resources