Skip to content

ExecuteMe allows users to write, execute, and test code in various programming languages directly in the browser. https://devlopersabbir.github.io/executeme

License

Notifications You must be signed in to change notification settings

devlopersabbir/executeme

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

81 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

πŸš€ ExecuteMe – Run Code Instantly and Securely

ExecuteMe 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/<uuid>)
  • 🧼 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: Docker Engine and Docker Compose (Docker Desktop includes both).

  • Node.js (LTS version, e.g., 20.x or higher)

  • 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.
  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 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!

Specially Thanks πŸ’•

Made with contrib.rocks.

About

ExecuteMe allows users to write, execute, and test code in various programming languages directly in the browser. https://devlopersabbir.github.io/executeme

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors