A comprehensive microservices-based coding contest platform with AI-powered features for learning, practice, and interview preparation.
This project follows a microservices architecture with the following services:
- API Gateway: Request routing, authentication, and rate limiting
- User Service: User management, authentication, and profiles
- Problem Service: Coding problems, test cases, and editorial content
- Code Execution Service: Secure code execution in isolated containers
- AI Analysis Service: Code analysis, hints, and learning recommendations
- Contest Service: Contest management and real-time rankings
- Real-time Service: WebSocket connections and live updates
- Notification Service: Email and in-app notifications
- Node.js 18+
- Docker and Docker Compose
- npm 9+
-
Clone the repository
-
Install dependencies:
npm install
-
Start development environment:
npm run dev
This will start all required services using Docker Compose and run the development servers.
When running in development mode, services will be available on the following ports:
- Frontend: http://localhost:3000
- API Gateway: http://localhost:8080
- User Service: http://localhost:3006
- Problem Service: http://localhost:3002
- Code Execution Service: http://localhost:8000
- AI Analysis Service: http://localhost:8001
- Contest Service: http://localhost:3003
npm run dev
- Start development environmentnpm run build
- Build all servicesnpm run test
- Run tests for all servicesnpm run lint
- Lint all codenpm run format
- Format code with Prettiernpm run docker:up
- Start Docker services onlynpm run docker:down
- Stop Docker services
├── services/ # Microservices
│ ├── api-gateway/ # API Gateway service
│ ├── user-service/ # User management service
│ └── ...
├── packages/ # Shared packages
│ ├── common/ # Common utilities and types
│ └── ...
├── apps/ # Frontend applications
│ └── web/ # React web application
├── docker-compose.yml # Development environment
└── package.json # Workspace configuration
- Follow the established code style (ESLint + Prettier)
- Write tests for new features
- Update documentation as needed
- Use conventional commit messages