Venue Booking System Specification
A robust, real-time reservation platform for ~200 users and ~200 venues, eliminating manual conflicts through centralized logic.
Users
~200
Student Reps & Admins
Venues
199
Classrooms, LTs, OATs, Audis
Stack
Next.js + .NET 8
Backed by SQL Server
System Architecture
The system follows a tiered architecture separating concerns between the interactive frontend, the logical API gateway, and the data persistence layer.
Frontend (Client)
Next.js + Tailwind
- Server-Side Rendering (SSR)
- Hosted on Vercel
- Interactive Dashboard
API Gateway
ASP.NET Core 8 Web API
- Business Logic & Auth
- Overlap Algorithms
- Hosted on Azure App Service
Data Layer
SQL Server
- Relational Integrity
- Complex Queries
- Azure SQL Database
Database Schema & Venue Distribution
The robust SQL schema ensures data integrity, while the extensive venue list covers all campus facilities.
Schema Explorer
Click a table to view definition
Venue Capacity Breakdown
Distribution of the 199 assignable spaces across campus blocks.
Core Logic: The Overlap Guard
The backend enforces a strict overlap policy to prevent double bookings. Test the C# algorithm logic interactively below.
C# Algorithm
Before any insert/update, the system checks:
(NewEnd > ExistingStart) AND
Status != Rejected
If this evaluates to TRUE, the request is rejected immediately as a 409 Conflict.
Try it yourself
User Interaction Flows
Distinct journeys for Student Representatives (Booking) and Administrators (Approval & Oversight).
Login
System detects Role.
Redirect -> Dashboard
Dashboard
Booking Modal
Input: Purpose, Time, FIC.
Validation: Start < End.
Deployment & Robustness
Mandatory requirements for production readiness and deployment strategy.
Mandatory Must-Haves
-
✓
Atomic Transactions Overlap check + Insert must be a single serializable transaction to prevent race conditions.
-
✓
UTC Standardization Database stores UTC. Backend sends UTC (ISO 8601). Frontend converts to Local Time.
-
✓
Immutable Audit Logs Append-only table. No DELETE API endpoint exists for logs.
-
✓
Zero Trust Security All Admin endpoints decorated with
[Authorize(Roles="Admin")].
Deployment Pipeline
Database (Azure SQL)
Run Migration Scripts. Seed 199 Venues via Console App.
Backend (Azure App Service)
Deploy .NET API. Config ConnectionStrings & JWT Secrets.
Frontend (Vercel)
Deploy Next.js. Set NEXT_PUBLIC_API_URL to Azure endpoint.