CodeRoom is a full-stack real-time collaborative coding platform designed for technical interviews and pair programming. It provides a seamless environment where developers can write code, compile it, and communicate via high-quality video and audio calls—all in real-time.
- Real-Time Collaboration: Live code synchronization allowing multiple users to edit simultaneously.
- Integrated Video & Audio: High-quality video calls powered by GetStream, enabling face-to-face communication while coding.
- Multi-Language Support: Write and execute code in JavaScript, Python, Java, and more.
- Instant Code Execution: Secure, sandboxed code compilation using the Piston API.
- Modern Authentication: Secure sign-up and login via Clerk (supports GitHub & Google).
- Session Management: Create, join, and manage active coding sessions with interview history.
- Beautiful UI: A responsive, dark-mode-optimized interface built with Tailwind CSS and DaisyUI.
- React.js (Vite): Fast, modern frontend framework.
- Tailwind CSS & DaisyUI: Rapid styling and pre-built components.
- TanStack Query: Efficient server state management and caching.
- Monaco Editor: The code editor engine that powers VS Code.
- Stream SDK: For handling real-time video and chat.
- Axios: For handling API requests.
- Node.js & Express.js: Robust server-side runtime.
- MongoDB & Mongoose: NoSQL database for storing user and session data.
- Inngest: Serverless background job processing and webhook handling.
- Clerk: User Authentication & Management.
- GetStream.io: Video, Audio, and Chat infrastructure.
- Piston: Open-source code execution engine.
- Render: Cloud hosting for deployment.
Follow these steps to run CodeRoom on your local machine.
- Node.js (v18+)
- MongoDB Atlas connection string
- Clerk API Keys
- Stream API Keys
git clone [https://github.com/akash1723tripathi/CodeRoom.git](https://github.com/akash1723tripathi/CodeRoom.git)
cd CodeRoomcd backend
npm installCreate a .env file in the backend folder:
PORT=5000
MONGODB_URI=your_mongodb_connection_string
CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
CLERK_SECRET_KEY=your_clerk_secret_key
STREAM_API_KEY=your_stream_api_key
STREAM_API_SECRET=your_stream_secret
INNGEST_SIGNING_KEY=your_inngest_signing_key
INNGEST_EVENT_KEY=your_inngest_event_key
CLIENT_URL=http://localhost:5173Start the server:
npm run devOpen a new terminal, navigate to the frontend directory, and install dependencies:
cd frontend
npm installCreate a .env file in the frontend folder:
# Point to your local backend
VITE_API_URL=http://localhost:5000/api
VITE_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
VITE_STREAM_API_KEY=your_stream_api_keyStart the frontend:
npm run dev🌐 Deployment This project is configured for deployment on Render. Backend: Deploy as a Web Service. Ensure you add all backend environment variables in the Render dashboard. Frontend: Deploy as a Static Site. Build Command: npm run build Publish Directory: dist Environment Variables: Add VITE_API_URL, VITE_CLERK_PUBLISHABLE_KEY, and VITE_STREAM_API_KEY.
Made with ❤️ by Akash Tripathi