
Scalable multi-tenant appointment management system for any industry.
Reservation is a scalable, multi-tenant appointment management platform designed for any industry — healthcare, beauty, education, fitness, legal services, and more. The backend is an ASP.NET Core Web API built on JWT-based authentication and PostgreSQL persistence. Four role-specific interfaces serve Receiver, Provider, Business, and Admin users. Providers can create time slots and bulk-add availability; Receivers book appointments through a calendar view. Redis serves as the caching layer for 2FA temporary tokens (TOTP) and session data. SignalR delivers real-time notifications (appointment created, confirmed, cancelled) instantly to relevant parties, with Redis backplane support for horizontal scaling. ReminderBackgroundService automatically sends SMS reminders for upcoming appointments. Twilio SMS and SendGrid email integrations cover all appointment events: creation, status changes, cancellations, and completions. FluentValidation handles DTO validation, Serilog provides structured request logging, and GlobalExceptionMiddleware manages centralized error handling. .NET 8's built-in rate limiting is configured at 60 requests/min for general API endpoints and 10 requests/min for authentication routes. The /health endpoint monitors PostgreSQL and Redis status, ready for Kubernetes probes and load balancers. Repository & Unit-of-Work pattern, xUnit & Moq unit and integration tests, and DataSeeder for automatic sample data loading are all included. Docker Compose brings up all services (PostgreSQL + Redis + API) with a single command. The Next.js 14 (App Router) web frontend manages JWT via HttpOnly cookies and provides role-based dashboards, a calendar view, and real-time notifications via the @microsoft/signalr package. Built on ASP.NET Core Web API (.NET 8), Entity Framework Core, PostgreSQL, and Redis.
<div class="project-info">
<p>
This project was developed using the best tools modern web technologies offer. Each technology was carefully selected to maximize performance, security, and user experience. During development, the focus was on component-based architecture, reusable code, and optimized rendering performance.
</p>
<p>
The user interface was designed to provide a clean yet impactful visual experience. The design system is built on principles of consistency, readability, and accessibility. Modern CSS frameworks and utility tools were used to provide a strong styling foundation.
</p>
<p>
On the frontend, powerful technologies like React and Next.js provided great advantages in terms of fast load times and SEO optimization. Additionally, Tailwind CSS accelerated the design process and made development more flexible.
</p>
<p>
As a result, this technology stack forms a modern and sustainable infrastructure that supports not only today’s needs but also future scalability goals.
</p>
<p>
The project also delivers a seamless experience across all devices thanks to responsive design and a mobile-first approach. Every aspect of the design was optimized for usability and accessibility, ensuring smooth user interactions.
</p>
<p>
Performance optimizations were implemented to minimize page load times, including efficient media and image handling. This approach improves user experience while providing a solid foundation for SEO and overall site performance._
</p>
</div>ASP.NET Core
Backend
PostgreSQL
Database
Redis
Database
Next.js
Frontend
React
Frontend
TypeScript
Language
Render
DevOps
Businesses across healthcare, beauty, education, and legal sectors needed appointment booking with real-time availability that stays consistent across four roles (Provider, Receiver, Business, Admin) without double-booking under concurrent access.
I built an ASP.NET Core Web API with SignalR (Redis backplane for horizontal scaling) for real-time availability sync, an IHostedService-driven SMS/email reminder job, built-in rate limiting (60 req/min general, 10 req/min auth), PostgreSQL + Redis health checks, and a repository/unit-of-work pattern tested with xUnit & Moq, deployed via GitHub Actions CI/CD.
Designing for horizontal scalability (Redis backplane) from the start, even before strictly needed, avoided a much more invasive rewrite later — SignalR's backplane requirement is much cheaper to satisfy on day one than to retrofit.
If you'd like to discuss the architecture decisions, the tech stack, or a similar technical problem, I'm happy to talk.
Get in Touch