This is a microservices-based application where users can create and sell tickets, leveraging modern cloud-native technologies.
- 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
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 |
- 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%
- Node.js (v16 or later)
- Docker and Kubernetes (local setup using Minikube or Docker Desktop)
- Skaffold
- Ingress-Nginx Controller
-
Clone the repository
git clone https://github.com/simply-code-it/Ticketing-App.git cd Ticketing-App -
Install dependencies for each service
# For each service directory (auth, tickets, orders, etc.) cd <service-name> npm install
-
Set up Kubernetes with Skaffold
# Start the development environment skaffold dev -
Update your hosts file to point to the Ingress controller
127.0.0.1 ticketing-app.dev -
Access the application
- Open your browser and navigate to
ticketing-app.dev
- Open your browser and navigate to
# In each service directory
npm testTicketing-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
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Each service requires specific environment variables. Check the respective service directories for .env.example files or consult the service documentation.
All services are containerized using Docker. Build images locally:
# In each service directory
docker build -t <service-name> .This project is open source and available under the MIT License.
Pradeep Yadav – simply-code-it
⭐ If you find this project useful, consider giving it a star on GitHub!