This idea started when my friend and I tried to purchase a subscription for a coding practice platform. We realized that many useful features were locked behind paid plans, even though the core problems themselves were often available freely. This made me think about building a platform that could provide a structured and accessible coding practice experience for students like us.
The system is a web-based coding platform built using Flask for the backend and PostgreSQL for data management. The frontend is implemented using HTML, CSS, and JavaScript to keep it simple and accessible.
One of the main challenges I faced was how to safely execute user-submitted code. Since users can run arbitrary programs, it is important to protect the server from misuse such as infinite loops, excessive memory usage, or unauthorized operations. While studying how large platforms work, I learned that they rely on container-based systems like Docker and Kubernetes for scalable and secure execution.
In this project, I chose to use NsJail to provide lightweight and efficient sandboxing with fine-grained control over CPU, memory, and system access. This approach is well-suited for controlled academic environments while still ensuring strong security. The architecture is also designed to be extensible, allowing integration with container-based solutions in the future as the system scales.
To handle multiple user requests, I implemented a queue-based execution system in Python that manages parallel submissions efficiently. The system can process multiple executions concurrently while maintaining stability and preventing overload.
The execution pipeline is designed in multiple layers: the main application handles user interaction, the queue system manages execution flow, and the sandboxed execution engine securely runs the code in an isolated environment using temporary directories. Each submission is executed against predefined test cases, and the output is automatically evaluated for correctness, runtime errors, and performance constraints.This layered approach helps maintain both performance and security.
Currently, the platform supports multiple programming languages including Python, Java, JavaScript, and C++. It is actively used by my college peers, and I continue to improve it based on their feedback.
This project has been a valuable learning experience for me in understanding system design, security, and real-world challenges in building developer platforms.
During development, I used Large Language Models as a support tool for learning, debugging, and improving implementation.