A scalable, containerized cloud IDE and code execution platform similar to Replit, built with modern web technologies. This platform allows users to create, manage, and execute code in isolated Docker containers with real-time collaboration features.
Container Management |
Main Dashboard |
Code Editor |
Template Selection |
- Features
- Tech Stack
- Prerequisites
- Project Structure
- Quick Start
- Usage
- Configuration
- Development
- Contributing
- License
- Multi-Language Support: Create workspaces for React, Node.js, HTML/CSS/JS, and more
- Containerized Execution: Isolated Docker containers for each user workspace
- Real-time Code Editing: Live code editor with syntax highlighting
- Template-based Setup: Quick start with pre-configured development environments
- User Management: Session-based user workspaces with persistent storage
- Container Management: Automatic container lifecycle management with idle cleanup
- Web-based Dashboard: Intuitive React frontend for managing environments
- React 18+ - bootstrap UI library
- Vite - Fast build tool and dev server
- vs code-server Editor - VS Code-like code editor
- Node.js 20+ - JavaScript runtime
- Express.js - Web application framework
- Docker SDK - Container management
- WebSocket - Real-time communication
- cors - Cross-origin resource sharing
- Docker - Containerization platform
- Docker Compose - Multi-container orchestration
- Nginx - Reverse proxy (optional)
Before setting up the project, ensure you have the following installed:
- Node.js (v18.0.0 or higher)
- npm or yarn package manager
- Docker (v20.0.0 or higher)
- Docker Compose (v2.0.0 or higher)
- Git for version control
- RAM: Minimum 4GB (8GB recommended)
- Storage: At least 10GB free space
- OS: Linux, macOS, or Windows with WSL2
βββ repl-editor/
βββ backend/ # Node.js backend (API, container management, logic)
β βββ src/
β β βββ command/ # custom vs code extension
β β βββ config/ # Starter template configuration port mapping & command etc
β β βββ constant/ # Constant for application level
β β βββ event/ # EvenEmiiter configuration and accessbility
β β βββ init/ # initializtion of docker instance node at once singleton
β β βββ docker.js # docker service manager for creating,termination
β β βββ index.js # Express app configuration
β β βββ terminal.js # Loging and attach to external editor docker logs/shell
β βββ package.json
β
βββ dockerfiles/ # Dockerfiles for each starter template/environment
β βββ node-starter.Dockerfile
β βββ react-starter.Dockerfile
β βββ html-starter.Dockerfile
β
βββ frontend/ # React-based dashboard and UI for managing containers
β βββ src/
β β βββ components/ # Reusable React components
β β βββ api.js # Managing api axios services
β β βββ config.js # Managing config/env exporter
β β βββ App.jsx # Main App component
β βββ public/
β βββ package.json
β βββ vite.config.js
β
βββ starter_templates/ # Prebuilt starter templates
β βββ react-starter/ # React + Vite setup
β βββ node-starter/ # Node.js API/app
β βββ html-starter/ # Plain HTML/CSS/JS
β
βββ user_workspaces/ # Per-user workspace directories (mounted into containers)
β βββ user-user-001/
β βββ user-user-002/
β βββ ...
β
βββ / # Utility scripts
β βββ build_docker_starter.sh # Build all Docker starter images
β βββ run_app.sh # Run the complete application
β
βββ .gitignore # Git ignore rules
βββ docker-compose.yml # Multi-container setup
βββ package.json # Root package.json
βββ README.md # Project documentation
Contains the API server, user/session management, and logic for:
- Spinning up and managing Docker containers
- Container lifecycle management
- Idle container cleanup and termination
- WebSocket connections for real-time updates
- File system operations within user workspaces
Stores individual Dockerfiles for different development environments:
node-starter.Dockerfile- Node.js development environmentreact-starter.Dockerfile- React + Vite development setuphtml-starter.Dockerfile- Static HTML/CSS/JS environment
React-based dashboard that users interact with to:
- Create new development environments
- Manage existing containers
- Access code editors
- Monitor container status
- Configure environment settings
Contains boilerplate source code for new environments:
- Ready-to-use project templates
- Pre-configured development setups
- Best practices and folder structures
- Sample code and documentation
Per-user directories where each user's code lives:
- Persistent storage for user projects
- Mounted as volumes into Docker containers
- Maintains file permissions and ownership
- Automatic backup and cleanup policies
git clone https://github.com/md-786910/repl-editor.git
cd repl-editorchmod +x build_docker_starter.sh
chmod +x run_app.sh./build_docker_starter.sh# Install root dependencies
npm install
# Install backend dependencies
cd backend && npm install && cd ..
# Install frontend dependencies
cd frontend && npm install && cd .../run_app.sh- Frontend Dashboard: http://localhost:3016
- Backend API: http://localhost:4000
- Access Dashboard: Navigate to the frontend dashboard
- Select Template: Choose from available starter templates
- Configure Environment: Set up your development environment
- Start Coding: Access the integrated code editor
- View Active Containers: Monitor running environments
- Start/Stop Containers: Control container lifecycle
- Resource Monitoring: Check CPU and memory usage
- Cleanup: Remove idle or unused containers
- vs code-server Editor: VS Code-like editing experience
- Syntax Highlighting: Support for multiple languages
- Auto-completion: Intelligent code suggestions
- File Explorer: Navigate your project structure
# Start backend in development mode
cd backend
npm run dev
# Start frontend in development mode (in another terminal)
cd frontend
npm run dev# Build frontend
cd frontend
npm run build
# Build and start backend
cd backend
npm run build
npm start-
Added new Template to existing Directory:
mkdir starter_templates/new-template
-
Add Dockerfile:
touch dockerfiles/new-template.Dockerfile
-
Update Build Script: Edit
scripts/build_docker_starter.shto include the new template -
Test Template:
./scripts/build_docker_starter.sh
- Fork the Repository
- Commit Changes:
git commit -m 'Add amazing feature' - Push to Branch:
git push origin feature/amazing-feature - Open Pull Request
- Follow ESLint and Prettier configurations
- Write tests for new features
- Update documentation as needed
- Use conventional commit messages
This project is licensed under the MIT License - see the LICENSE file for details.
- Documentation: Check the Wiki
- Issues: Report bugs on GitHub Issues
- Discussions: Join our GitHub Discussions
Happy Coding! π



