CloudTicket

Full-stack ticketing app with atomic transactions to prevent overselling — ASP.NET Core 8 API, React 19 frontend, PostgreSQL on Supabase, JWT auth.

A scalable, high-accuracy ticketing web application built to solve a real engineering challenge: inventory integrity under high-demand conditions. The core focus is preventing overselling through atomic database transactions that guarantee absolute data consistency.

Tech Stack

Layer Technology
Backend ASP.NET Core 8.0
Frontend React 19 + Vite
Database PostgreSQL (Supabase)
Auth JWT Bearer Tokens (24hr expiry)
Password Hashing BCrypt

Architecture

CloudTicket/
├── CloudTicket.API/     # ASP.NET Core Web API
│   ├── Controllers/     # API endpoints
│   ├── Models/          # Entity models
│   ├── Services/        # Business logic
│   ├── DTOs/            # Request/response models
│   └── Migrations/      # EF Core migrations
└── cloudticket-ui/      # React frontend (Vite)

API Endpoints

Method Endpoint Auth Description
POST /api/auth/register No Register a new user
POST /api/auth/login No Login, receive JWT
GET /api/events No List all events
POST /api/events Yes Create a new event
POST /api/purchases Yes Buy tickets (atomic)
GET /api/purchases/my-tickets Yes View your tickets

Key Engineering Decision

Ticket purchases are wrapped in atomic transactions — concurrent requests cannot oversell an event. On first run in development, sample data (4 events + 2 test users) is automatically seeded via EF Core migrations.

Tools

ASP.NET Core 8 React 19 Vite PostgreSQL Supabase JWT BCrypt EF Core