Project Introduction
This project is a modern microservices-based application designed to showcase proficiency in advanced software architecture and DevOps practices. It leverages TypeScript and cutting-edge technologies such as Docker, Kubernetes, Redis Pub/Sub, RabbitMQ, and MinIO for building scalable and maintainable solutions.
Key Features
- Microservices Architecture: The application consists of modular services that are independently deployable and scalable.
- Message Queues: Asynchronous communication is enabled through RabbitMQ.
- Redis Pub/Sub: Facilitates real-time updates and inter-service communication.
- Kubernetes: Ensures orchestration of microservices for scalable deployment.
- MinIO: Provides S3-compatible file storage.
- Turborepo: Manages the monorepo, allowing shared configurations and code reuse.
Architecture
Directory Structure
├── apps
│ ├── auth-service # Handles authentication and authorization
│ ├── db-service # Database-related tasks and abstraction
│ ├── docs # Documentation for the project
│ ├── file-service # File upload and management
│ ├── notification-service # Notifications using custom WAPT-based system
│ ├── socket-service # Real-time communication using Socket.IO
│ └── web # Frontend application using RailJS
├── docker-compose-dependencies.yml # Docker dependencies for local setup
├── docs # Service-specific documentation
├── k8s # Kubernetes manifests for services
├── packages
│ ├── eslint-config # Shared ESLint configuration
│ ├── models # Shared models for microservices
│ └── typescript-config # Shared TypeScript configuration
├── setup.js # Setup script for local environment
├── turbo.json # Turborepo configuration