This project is a collaborative coding platform designed to facilitate real-time pair programming, problem-solving, and communication. Built as part of the CS3219 module, it leverages a microservice-based architecture deployed on a Google Kubernetes Engine (GKE) cluster. The platform provides features such as real-time code collaboration, user matching based on skill and topic preferences, integrated communication, and enhanced code execution functionalities.
-
User Management:
- User registration and login with email/password.
- Integration with Google and GitHub for OAuth-based authentication.
- Profile management, including preferred programming languages and profile pictures.
- Differentiation between admin and user roles.
-
Matching Service:
- Real-time matching based on difficulty level and topics.
- Advanced algorithms to ensure unique and efficient matches.
- Notifications and options for users to confirm or cancel matches.
-
Question Repository:
- A comprehensive database of coding problems categorized by difficulty and topic.
- Filtering, sorting, and viewing detailed problem statements.
- Admins can add, edit, and delete questions.
-
Collaboration Tools:
- Real-time code editor with synchronized changes and conflict resolution.
- Cursor tracking to visualize user activity.
- Integrated video and chat functionality for seamless communication.
-
Code Execution:
- Secure and sandboxed environment for code compilation and execution.
- Support for multiple programming languages.
-
AI Integration:
- AI-assisted hints to guide problem-solving.
- Session history and replay features for review and learning.
- Node.js:
- Frameworks: Express.js, Socket.IO.
- Purpose: API development and real-time communication.
- Python:
- Framework: FastAPI.
- Purpose: Backend microservices for specific functionalities.
- Database:
- MongoDB (primary database for persistence).
- SQLite (lightweight in-memory database for certain services).
- Messaging:
- RabbitMQ (message broker for inter-service communication).
- Authentication:
- JSON Web Tokens (JWT) for secure and stateless authentication.
- React:
- Framework for building the Single Page Application (SPA).
- Code Editor:
- CodeMirror (integrated editor for coding functionalities).
- UI/UX:
- MaterialUI for responsive components.
- Sass for styling.
- Containerization:
- Docker for packaging applications into containers.
- Orchestration:
- Kubernetes for managing containerized applications.
- Cloud Provider:
- Google Cloud Platform (GKE) for scalable and reliable deployment.
- Service Discovery:
- Kubernetes-native mechanisms for discovering and linking services.
The platform employs a microservices architecture:
- Frontend Service: Built with React for user interaction.
- User Service: Handles authentication and user management.
- Matching Service: Manages real-time matching based on criteria.
- Question Service: Manages the coding problems repository.
- Collaboration Service: Enables real-time document sharing and conflict resolution.
- Code Execution Service: Executes user code securely.
- Communication Service: Video and chat integration.
- Docker and Kubernetes installed locally.
- Access to Google Cloud Platform for Kubernetes deployment.
- MongoDB and RabbitMQ running.
-
Clone the repository:
git clone <repository-url> cd <repository-folder>
-
Build Docker images:
docker-compose build
-
Start services locally:
docker-compose up
- Kumar Prabhat: Backend services, Dockerization, and collaboration refinements.
- Luo Jiale: Frontend integration, matching service components, and session management.
- Sun Yitong: UI development, AI hints service, and test cases.
- Sun Xinyu: Backend deployment, matching service optimizations.
- Nguyen Khoi Nguyen: Collaboration backend, user service, and execution environment.
- Enhanced analytics and reporting for collaborative sessions.
- Expansion of the AI assistant capabilities for real-time debugging.
- Integration of more advanced matching algorithms.
- Support for additional languages in the execution environment.
This project is licensed under the MIT License. See the LICENSE
file for details.
For any queries or feedback, contact the team at [email protected].