Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ticketing App

🎫 A Microservices-Based Ticketing Platform

This is a microservices-based application where users can create and sell tickets, leveraging modern cloud-native technologies.

✨ Key Features

  • User Authentication – Secure sign-up and login functionality
  • Ticket Management – Create, view, and manage tickets
  • Order Processing – Place orders for available tickets
  • Payment Integration – Secure payment processing
  • Real-Time Updates – Event-driven architecture using NATS streaming
  • Order Expiration – Automatic expiration handling for pending orders

🏗️ Architecture

The application is built using a microservices architecture with the following services:

Service Description
Auth Handles user authentication and authorization
Tickets Manages ticket creation, retrieval, and updates
Orders Processes ticket orders and manages order lifecycle
Payments Handles secure payment transactions
Expiration Manages order expiration using delayed job processing
Client React-based frontend application

🛠️ Technology Stack

  • Backend: Node.js, TypeScript, Express.js
  • Frontend: React.js, TypeScript
  • Database: MongoDB
  • Message Queue: NATS Streaming Server
  • Containerization: Docker
  • Orchestration: Kubernetes (using Skaffold for development)
  • Language Distribution:
    • TypeScript: 54.3%
    • JavaScript: 45.3%
    • Dockerfile: 0.4%

🚀 Getting Started

Prerequisites

  • Node.js (v16 or later)
  • Docker and Kubernetes (local setup using Minikube or Docker Desktop)
  • Skaffold
  • Ingress-Nginx Controller

Installation

  1. Clone the repository

    git clone https://github.com/simply-code-it/Ticketing-App.git
    cd Ticketing-App
  2. Install dependencies for each service

    # For each service directory (auth, tickets, orders, etc.)
    cd <service-name>
    npm install
  3. Set up Kubernetes with Skaffold

    # Start the development environment
    skaffold dev
  4. Update your hosts file to point to the Ingress controller

    127.0.0.1 ticketing-app.dev
    
  5. Access the application

    • Open your browser and navigate to ticketing-app.dev

🧪 Running Tests

# In each service directory
npm test

📁 Project Structure

Ticketing-App/
├── auth/               # Authentication service
├── client/             # React frontend
├── common/             # Shared code and types
├── expiration/         # Order expiration service
├── infra/              # Kubernetes manifests
├── nats-test/          # NATS testing utilities
├── orders/             # Order management service
├── payments/           # Payment processing service
├── tickets/            # Ticket management service
├── skaffold.yaml       # Skaffold configuration
└── README.md

🤝 Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📝 Environment Variables

Each service requires specific environment variables. Check the respective service directories for .env.example files or consult the service documentation.

🐳 Docker Support

All services are containerized using Docker. Build images locally:

# In each service directory
docker build -t <service-name> .

📄 License

This project is open source and available under the MIT License.

👤 Author

Pradeep Yadavsimply-code-it


⭐ If you find this project useful, consider giving it a star on GitHub!

About

This is a microservices based application of ticketing where you can create and sell the tickets.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages