Skip to content

mudit06mah/CloudIde

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CloudIDE

cloudIDE 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.

System Architecture

image

How it works

  1. Orchestration: When you initialize a project (e.g., Python or React), the backend uses the Kubernetes client-go library to dynamically provision a Pod, Service, and Ingress specifically for that workspace.
  2. 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.
  3. 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.

Features

  • 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.js terminal 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).

Tech Stack

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages