An open API service indexing awesome lists of open source software.

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

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)

### Specially Thanks ๐Ÿ’•


Made with [contrib.rocks](https://contrib.rocks).