CodeRoyale is an online judge platform where users can login, access a list of problems, solve them, and receive verdicts on their solutions. The platform is built with Next.js, ensuring a modern and efficient user experience.
- Description
- Features
- How to Use
- Technologies Used
- Setup Locally
- Architecture Overview
- Database and ER Diagram
- How to Contribute
- Links
- Contributors
- License
CodeRoyale is a web application designed to provide a seamless experience for users to solve programming problems and receive automated verdicts. It leverages a microservice architecture for scalability and robustness.
- Online Judge: Users can login and solve programming problems, receiving automated verdicts.
- Microservice Architecture:
- User Management Server: Built with Node.js, handles CRUD operations on users.
- Code Execution Server: Built with Go, executes code in a sandbox environment and provides verdicts.
- Scalability: Capable of handling up to 1000 concurrent users.
- Upcoming Features: Contest feature will be available soon.
- Next.js: A React framework for building fast and user-friendly static and dynamic web applications.
- TypeScript: Ensures robust and error-free code.
- Tailwind CSS: Provides utility-first CSS for rapid UI development.
- Vercel: Deployment platform for modern web projects.
To start the development server, run:
npm run dev
Open http://localhost:3000 in your browser to see the application.
- Next.js
- Node.js
- Go
- TypeScript
- Tailwind CSS
- Vercel
- MongoDB
To set up the project locally, follow these steps:
- Clone the repository:
git clone https://github.com/Low4ey/CodeRoyale.git
- Navigate to the project directory:
cd CodeRoyale
- Install dependencies:
npm install
- Start the development server:
npm run dev
-
Frontend (Next.js)
- User Interface
- Problem Listings
- Submission Forms
- User Authentication
-
Backend
- User Management Service (Node.js)
- Handles CRUD operations for users
- Code Execution Service (Go)
- Executes user code in a sandbox environment
- Returns verdicts based on execution results
- Database (MongoDB)
- Stores user data, problems, submissions, test cases, etc.
- User Management Service (Node.js)
-
APIs
- RESTful APIs for communication between services
The database consists of several interconnected schemas:
- User Schema: Manages user information and authentication.
- Problem Schema: Stores problems with details like title, content, tags, and difficulty.
- Submission Schema: Tracks user submissions, including code and status.
- TestCase Schema: Contains test cases for each problem.
- ProblemSetter Schema: Manages problem setters' details and approvals.
- Editorial Schema: Stores editorial content for problems.
We welcome contributions! To contribute:
- Fork the Repository: Create a fork of this repository.
- Create a Branch: Create a new branch for your feature or bug fix.
- Make Changes: Implement your changes in the new branch.
- Create a Pull Request: Submit a pull request with a detailed description of your changes.
If you encounter any issues or have suggestions, please create an issue on the Issues page.
We encourage you to submit pull requests for any improvements or fixes. Make sure to follow the project's coding guidelines and provide detailed descriptions of your changes.
This project is open-source and available under the MIT License.