https://github.com/devlopersabbir/executeme
ExecuteMe allows users to write, execute, and test code in various programming languages directly in the browser. https://devlopersabbir.github.io/executeme
https://github.com/devlopersabbir/executeme
compiler executeme hight-performance next15 nginx-docker
Last synced: 3 months ago
JSON representation
ExecuteMe allows users to write, execute, and test code in various programming languages directly in the browser. https://devlopersabbir.github.io/executeme
- Host: GitHub
- URL: https://github.com/devlopersabbir/executeme
- Owner: devlopersabbir
- License: mit
- Created: 2025-06-14T20:01:57.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2025-09-14T13:25:16.000Z (4 months ago)
- Last Synced: 2025-09-14T14:35:02.452Z (4 months ago)
- Topics: compiler, executeme, hight-performance, next15, nginx-docker
- Language: TypeScript
- Homepage: https://executeme.vercel.app
- Size: 2.76 MB
- Stars: 10
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: changelog.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
๐ ExecuteMe โ Run Code Instantly and Securely
**[ExecuteMe](https://executeme.vercel.app)** is a powerful and minimalistic online code execution platform that allows developers to write, run, and test code in multiple programming languages instantly and securely โ all within the browser.
Whether you're experimenting with a new idea or teaching code, ExecuteMe gives you a real-time, sandboxed environment that works out of the box.
## โจ Features
- **โก Instant Code Execution** โ Run your code in real-time with just one click
- **๐ Secure Sandbox** โ Ensures your code runs in a safe, isolated environment
- **๐ง Multi-language Support** โ Supports a growing list of languages including:
- ๐ Python
- ๐จ JavaScript
- ๐ฆ TypeScript
- โ Java
- ๐ Kotlin
- **๐จ Full Syntax Highlighting** โ Modern and readable code editor with theme support
- **๐ฅ๏ธ Responsive UI** โ Works smoothly across all devices
- **๐ Live User Activity** โ Shows active coders in real-time
- **๐พ Open Source** โ Freely available to use, modify, and contribute
## ๐ ๏ธ Built With
- **โ๏ธ NextJs** โ For frontend and tailwindcss for designing user interface
- **๐งฐ Monaco Editor** โ Powerful web-based code editor (from VS Code)
- **๐ Node.js + Express** โ Backend service for execution management
- **๐ Docker** โ Containerized code execution
- **๐ก Socket.IO** โ Real-time connection to track active users
- **๐ NodeCache** โ In-memory cache for managing live sessions
- **๐ Custom Docker Images** โ Tailored environments per language
## ๐งฉ Architecture & Execution Challenges
Designing ExecuteMe required solving real-world challenges in scalability, isolation, and memory/resource management:
## โ๏ธ On-Demand Container Execution
- ๐ฆ Each execution triggers a **new Docker container**, isolated per language and user
- ๐งพ Code is saved temporarily in a unique `UUID` directory (e.g., `/temp/`)
- ๐งผ After execution, both the **container and the temporary code directory** are destroyed automatically
- โ
Ensures **complete statelessness** and no leftover data between runs
## ๐ง Memory & CPU Management
- ๐ง Containers are limited via flags:
--memory=512m and --cpus=0.5
- ๐ Ensures no user can overuse system resources
- ๐งน Automatic cleanup after every run helps maintain low disk and memory usage
## ๐ Concurrent Execution Handling
- โฑ๏ธ Uses `async/await` and `promisify(exec)` to avoid blocking the event loop
- โก Handles **multiple user requests at the same time**, spawning separate containers for each
- ๐ ๏ธ Every language is handled via its own custom-built Docker image (`executor-python`, `executor-java`, etc.)
## ๐ Security Isolation
- ๐ Code runs in **completely sandboxed containers** with:
- No access to host machine
- No persistent file system or shared memory
- ๐ซ Containers are removed after use with --rm to prevent abuse
- โ
Each language has its own minimal, locked-down Docker image
## ๐ฅ Real-Time User Tracking
- ๐ก `Socket.IO + NodeCache` manage user connections in real-time
- ๐ Displays current active users to the frontend
- โป๏ธ Cleans up cache on disconnect to prevent stale connections
## ๐ Prerequisites - For contribution
Before you get started, ensure you have the following installed on your system:
- [**Docker**](https://docs.docker.com/get-docker/): Docker Engine and Docker Compose (Docker Desktop includes both).
- [**Node.js**](https://nodejs.org/en/download/) (LTS version, e.g., 20.x or higher)
- [**npm**](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) (comes with Node.js)
## ๐งโ๐ป Contributing & Supporting
`executeme` is a fully open-source project, and contributions are highly encouraged! Whether it's adding new language support, improving performance, fixing bugs, or enhancing documentation, your input is valuable.
### How to Contribute:
1. Fork the [GitHub repository](https://github.com/devlopersabbir/executeme).
2. Clone your fork.
3. Create a new branch for your feature or bug fix.
4. Make your changes, write tests, and ensure code quality.
5. Open a Pull Request with a clear description of your work.
## ๐ License
This project is licensed under the MIT License - see the [LICENSE](/LICENSE) file for details.
### Support the Project:
If `executeme` helps you or your project, consider showing your support. Your contributions help maintain and improve this tool for the entire developer community!
- **Sponsor on GitHub:** [https://github.com/sponsors/devlopersabbir](https://github.com/sponsors/devlopersabbir)
- **Buy Me a Coffee:** [https://buymeacoffee.com/devlopersabbir](https://buymeacoffee.com/devlopersabbir)
Made with [contrib.rocks](https://contrib.rocks).