A browser-based Integrated Development Environment that spins up isolated coding environments on Kubernetes.
I built this project to dive deep into Kubernetes internals, WebSockets, and System Design.
- Orchestration: When you initialize a project (e.g., Python or React), the backend uses the Kubernetes
client-golibrary to dynamically provision a Pod, Service, and Ingress specifically for that workspace. - State Management: The file tree is generated by walking the local directory structure on the backend. This avoided the "impedance mismatch" of trying to store a hierarchical file tree in a key-value store.
- Terminal Streaming: Fully interactive terminal, connects via WebSocket to the backend, which proxies the stream directly into the K8s pod's shell using SPDY/remotecommand execution.
- Multi-Language Support: Environment setup for Node.js, Python, Go, C++, and React(Vite).
- Real-time File Explorer: Create, delete, and update files and folders instantly.
- Integrated Terminal: A fully functional
xterm.jsterminal connected to the container's shell. - Live Preview: For React projects, an Ingress is automatically configured to expose the running application on a subdomain (e.g.,
workspace-id.127.0.0.1.nip.io).
Frontend
- React + TypeScript: For a robust and type-safe UI.
- Xterm.js: For rendering the terminal output in the browser.
- Tailwind CSS: For styling.
Backend
- Go (Golang): Chosen for its concurrency primitives and excellent Kubernetes support.
- Gorilla WebSockets: Handles the persistent connections for file updates and terminal streaming.
- Kubernetes Client-Go: Used for programmatic control of the cluster.
S3
- AWS: For downloading boilerplate template code files.
CI/CD
- Github Actions: Automatically pushes latest image to github container registry.