Skip to content
seyedalidaPublic

About

A highly concurrent, distributed event ticketing platform built with Go microservices, Redis distributed locking, RabbitMQ, and Next.js.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Ticketino — Distributed Event Ticketing & Reservation Platform

Developed as project for the Software Engineering II course at Amirkabir University of Technology (Tehran Polytechnic).

Go Next.js React Redis RabbitMQ PostgreSQL Docker

Ticketino is a highly concurrent, distributed event ticketing and seat reservation platform. Engineered using a decoupled microservices architecture, the system is designed to maintain zero downtime and absolute data integrity during massive flash-traffic drops when high-demand concert or event tickets go live.


✨ Key Features

  • ⚡ Anti-Double-Booking Reservation Engine: Utilizes Redis SETNX distributed locking with automatic 10-minute TTL expiration timers to guarantee atomic seat locks during concurrent traffic bursts.
  • 🗺️ Interactive Seat Mapping & Real-Time Lock Timers: Dynamic client-side venue layout rendering with instant seat status updates (Available, Temporarily Locked, Sold Out).
  • 🔄 Asynchronous Event-Driven Architecture: Decouples transactional billing workflows from notifications using RabbitMQ event queues for high resilience and zero user latency.
  • 📊 Organizer Real-Time Analytics Dashboard: Live sales progress metrics, revenue breakdowns, seat availability percentages, and custom venue layout generation tools.
  • 🌙 Modern UX & Dark Mode Support: Sleek, responsive user interface built with Next.js 16 (App Router), React 19, and TailwindCSS, featuring full RTL and Vazirmatn typography support.
  • 🛡️ JWT Role-Based Access Control: Secure authentication separating regular event buyers from event organizers and platform administrators.
  • 🧪 Mutation-Tested Reliability: Core reservation and lock acquisition modules validated using Mutation Testing (achieving a 95.2% mutant kill rate).

🖼️ Application Screenshots

Screenshot Screenshot Screenshot Screenshot


🏗️ Architecture & Technology Stack

Domain Technology Role
Backend Services Golang High-throughput decoupled microservices
Frontend Web App Next.js 16, React 19, TailwindCSS Interactive client app & organizer admin panel
In-Memory Store Redis 7 Distributed locking (SETNX), TTL timers & caching
Message Broker RabbitMQ 3 Asynchronous event publishing & Saga orchestration
Primary Database PostgreSQL 15 Relational storage for users, venues, events & billing
DevOps & IaC Docker Compose, Terraform Local orchestration & infrastructure provisioning

📁 Repository Structure

.
├── backend/                  # Go Microservices
│   ├── cmd/                  # Service entry points (reservation, catalog, billing, etc.)
│   ├── internal/             # Domain logic (reservation, identity, catalog, billing)
│   └── pkg/                  # Shared packages (auth/JWT, Redis locks, RabbitMQ client)
├── frontend/                 # Next.js Web Client & Admin Dashboard
│   ├── src/app/              # Next.js App Router (pages, event details, admin panel)
│   └── src/components/       # Reusable UI components & seat map renderer
├── docs/                     # Comprehensive Architecture & Design Artifacts
│   ├── architecture/         # UML diagrams (Use Case, Class, Sequence, Activity, Deployment)
│   ├── operations/           # Incident management framework & on-call rotations
│   ├── postmortems/          # Root-cause analysis reports for infrastructure outages
│   ├── qa/                   # Mutation testing reports and test strategies
│   └── scrum/                # Jira backlog export CSV & Sprint Burndown charts
├── infrastructure/           # IaC configurations (Terraform)
└── docker-compose.yml        # Infrastructure orchestration (Postgres, Redis, RabbitMQ)

🚀 Quick Start (Local Setup)

Prerequisites

  • Docker & Docker Compose
  • Node.js (v18+)
  • Go (v1.22+) (optional for running Go microservices directly)

1. Launch Infrastructure Services

Spin up PostgreSQL, Redis, and RabbitMQ containers:

docker compose up -d

2. Launch Frontend Web Application

Navigate to the frontend directory and start the Next.js dev server:

cd frontend
npm install
npm run dev

Open your browser and navigate to:

3. Run Backend Microservices (Optional)

To run the Go reservation service locally:

cd backend
go run cmd/reservation/main.go

🧪 Testing & Quality Assurance

  • Unit & Concurrency Tests: Run concurrent lock acquisition tests simulating 1,000+ simultaneous booking requests:
    cd backend/internal/reservation
    go test -v -run TestConcurrentSeatLocking
  • Mutation Testing: Validated via custom mutation operators to ensure 95.2% test suite effectiveness.

📜 Documentation & System Artifacts

The docs/ directory includes extensive software engineering deliverables:

  • Product Vision Document & Risk Analysis Report
  • UML Diagrams: Vector diagrams for Use Case, Class, Sequence, Activity, Component, and K8s Deployment Topology.
  • Postmortem Incident Reports: Detailed RCA write-ups for payment gateway outages, queue worker failures, and network partitions.
  • Scrum & Agile Management: Jira sprint exports and Burndown charts.

📝 License

Distributed under the MIT License. See LICENSE for more information.

About

A highly concurrent, distributed event ticketing platform built with Go microservices, Redis distributed locking, RabbitMQ, and Next.js.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages