A modern, lightweight web-based IDE built with Rust and React.
- Monaco Editor - VS Code editing experience in the browser
- Multi-file Editing - Tabs, split views, markdown preview
- Integrated Terminal - Full PTY terminal with multiple sessions
- Git Integration - Status, commit, push, pull, branch management
- File Management - Tree view, create, rename, delete, search
- Workspace Support - Multiple isolated project workspaces
- Theme Support - Light/Dark/System theme modes
- Fast & Lightweight - Rust backend with minimal resource usage
Coming soon
# Clone the repository
git clone https://github.com/your-org/web-ide.git
cd web-ide
# Start with Docker Compose
docker compose up
# Open in browser
open http://localhost:8080# Terminal 1: Start Backend
cd backend
cp .env.example .env
cargo run
# Terminal 2: Start Frontend (with hot reload)
cd frontend
npm install
npm run dev
# Open http://localhost:5173βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Browser β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β React 19 + TypeScript + Vite β β
β β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β β
β β β Monaco β β xterm.jsβ β File β β Git β β β
β β β Editor β β Terminalβ β Tree β β Panel β β β
β β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β β
β β βββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β Zustand State β shadcn/ui β Tailwind CSS β β β
β β βββββββββββββββββββββββββββββββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β HTTP/WS/Socket.IO β
ββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ
β Rust Backend β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Axum HTTP Server β β
β β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β β
β β β File β β Git β βTerminal β β WS β β β
β β β API β β API β β PTY β β Events β β β
β β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β β
β β βββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β SQLite β git2 β portable-pty β tokio β β β
β β βββββββββββββββββββββββββββββββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
ββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ
β
ββββββββ΄βββββββ
β Workspace β
β Directory β
βββββββββββββββ
web-ide/
βββ backend/ # Rust backend (Axum)
β βββ src/
β β βββ api/ # HTTP API handlers
β β βββ db/ # SQLite database
β β βββ git/ # Git operations (git2)
β β βββ terminal/ # PTY terminal (portable-pty)
β β βββ ws/ # WebSocket handlers
β β βββ main.rs
β βββ migrations/ # SQLx migrations
β βββ Cargo.toml
βββ frontend/ # React frontend (Vite)
β βββ src/
β β βββ api/ # API client layer
β β βββ components/ # React components
β β βββ hooks/ # Custom hooks
β β βββ stores/ # Zustand stores
β β βββ main.tsx
β βββ package.json
β βββ vite.config.ts
βββ docs/ # Documentation
β βββ README.md # Documentation index
β βββ backend/ # Backend architecture docs
β βββ frontend/ # Frontend architecture docs
βββ docker-compose.yml
βββ Dockerfile
βββ CHANGELOG.md
βββ README.md
| Variable | Default | Description |
|---|---|---|
PORT |
8080 | HTTP server port |
WORKSPACE_DIR |
/workspace | Base workspace directory |
DATABASE_URL |
sqlite:webide.db | SQLite database path |
RUST_LOG |
info | Log level |
| Variable | Default | Description |
|---|---|---|
VITE_API_URL |
http://localhost:8080 | Backend API URL |
VITE_FILE_WATCHER_ENABLED |
false | Enable file watcher WebSocket |
| Endpoint | Description |
|---|---|
GET /api/workspaces |
List all workspaces |
GET /api/workspaces/:key/files |
List files in workspace |
PUT /api/workspaces/:key/files/content |
Save file |
GET /api/workspaces/:key/git/status |
Git status |
POST /api/workspaces/:key/git/commit |
Git commit |
| Protocol | Endpoint | Purpose |
|---|---|---|
| WebSocket | /ws/:key |
File watcher events |
| Socket.IO | /socket.io |
Terminal I/O |
Full API documentation: issues/ISSUES.md
# Full stack (backend + frontend)
docker compose up webide
# Access at http://localhost:8080# Backend only + Frontend dev server with hot reload
docker compose --profile dev up
# Backend at :8080, Frontend at :5173# Backend tests
cd backend
cargo test
# Frontend tests
cd frontend
npm test- Issue Tracker - Current issues and backlog
- Changelog - Development history
- Fork the repository
- Create a feature branch (
git checkout -b feature/new-feature) - Commit your changes (
git commit -m 'Add new feature') - Push to the branch (
git push origin feature/new-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Monaco Editor - Code editor
- xterm.js - Terminal emulator
- shadcn/ui - UI components
- Axum - Web framework
- git2 - Git library for Rust