A full-stack e-commerce application built with a modern microservices architecture. The application allows users to list, purchase, and sell tickets for various events.
Architecture
TicketingApp is designed with a microservices approach, utilizing containerization and orchestration technologies:
- Frontend: React with Next.js, handling server-side rendering for improved performance and SEO
- Backend Services: Multiple Node.js/Express microservices
- Event Bus: NATS Streaming for reliable inter-service communication
- Database: MongoDB instances for each service
- Deployment: Docker containers orchestrated with Kubernetes
Key Microservices
The application consists of several specialized microservices:
- Auth Service: Handles user registration, authentication, and authorization
- Tickets Service: Manages ticket creation, updating, and availability
- Orders Service: Processes customer orders and maintains order status
- Payments Service: Securely handles payment processing
- Expiration Service: Manages time-sensitive operations like holding tickets
Technical Highlights
- TypeScript implementation for type safety across the entire application
- Event-driven architecture using NATS Streaming for resilient service communication
- Kubernetes deployment with custom ingress configurations
- Shared NPM libraries for common functionality across services
- JWT-based authentication with cookie management for secure user sessions
- Optimistic concurrency control to handle race conditions in distributed transactions
- Comprehensive test suites for each microservice
Development Environment
The application uses Docker and Kubernetes for consistent development and production environments:
- Docker containers for each service
- Kubernetes for orchestration
- Skaffold for automated development workflow
- GitHub Actions for CI/CD
This project demonstrates modern approaches to building scalable, maintainable e-commerce applications using microservices architecture and cloud-native technologies.