Algo Arena is a comprehensive platform for competitive programming and algorithm development. It provides a user-friendly interface for users to solve problems based on Data Structures and Algorithms (DSA). The platform includes a frontend for problem listings, problem details, code submission, and result display, as well as an online judge system that evaluates submitted code against test cases and provides instant feedback on correctness.
-
Frontend:
- HTML: For structuring the web pages.
- CSS: For styling the web pages.
- JavaScript: For adding interactivity to the web pages.
- Tailwind CSS: For utility-first CSS framework to style the application.
- Vite: For fast and optimized development build.
-
Backend:
- Python: The primary programming language used for the backend.
- Django: A high-level Python web framework used to build the online judge system.
- SQLite: A lightweight database used for storing user submissions and problem data.
- Bootstrap: A CSS framework used for styling the web pages.
- Monaco Editor: A code editor that provides a rich coding experience for users.
- Code Submission and Execution: Users can submit their code through a web interface and execute it on the platform.
- Test Case Evaluation: The platform evaluates the submitted code against predefined test cases, providing instant feedback on its correctness.
- Custom Input Support: Users can input custom test cases to further test their solutions.
- Execution Time Tracking: Utilizes Django's template language to display execution time alongside the output.
- Memory Usage Monitoring: Tracks memory usage using the
tracemalloc
module to help users optimize their code. - Error Suggestions: Provides suggestions for fixing errors in the code by highlighting the particular section where the mistake is located.
- User Experience Enhancement: Utilizes Bootstrap CSS and jQuery to improve the appearance and functionality of the platform's HTML template.
- Result Display: Upon execution, users are presented with a screen indicating whether their code passed all test cases or not.
- Monaco Editor: Implemented the Monaco editor for better Python language readability and an enhanced code editing experience.
- Dark Mode: Added a dark mode facility for reducing eye strain and improving usability in low-light environments.
- Responsive UI: Enhanced the UI to be more responsive, providing a better experience on various devices.
To set up and run the entire project locally, follow these steps:
-
Clone the repository:
git clone https://github.com/Pulkit1822/Algo-Arena.git cd Algo-Arena
-
Frontend Setup:
cd Frontend npm install npm start
-
Backend Setup:
cd ../Online\ Judge/OnlineCompiler pip install -r requirements.txt python manage.py migrate python manage.py runserver
-
Open the application in your browser:
http://localhost:3000 (Frontend) http://localhost:8000 (Backend)
We welcome contributions to the Algo Arena project. To contribute, follow these steps:
-
Fork the repository: Click on the "Fork" button at the top right corner of the repository page.
-
Clone your forked repository:
git clone https://github.com/your-username/Algo-Arena.git cd Algo-Arena
-
Create a new branch:
git checkout -b feature-branch
-
Make your changes: Implement your changes and commit them with a meaningful commit message.
-
Push your changes:
git push origin feature-branch
-
Create a pull request: Go to the original repository and create a pull request from your forked repository.
Thank you for contributing to Algo Arena!
To support this project, explore sponsorship options available for this repository, as every contribution counts and your support will greatly benefit its development 😊
Here are the updated sections with the new changes and features added:
For a more in-depth overview of the project, check out the presentation created specifically for demonstrating this project at my college.
Click here to view the presentation
Please note that the major change #2 has been implemented in October 2024, so it has not been included in the presentation.
If you have a better solution or want to suggest improvements, feel free to open an issue or submit a pull request. Contributions are always welcome!
- Anant Krishna
- Pulkit Kumar Mathur
- Sandip
- Tanya Barsainya
If you have any feedback, suggestions, or encounter any issues while using the platform, please don't hesitate to open an issue on GitHub. Your input is invaluable and helps us improve the platform for everyone.
Happy learning and coding!
If you find this repository useful, don't forget to star it! ⭐️