Where teams think together.
A real-time collaborative workspace featuring an infinite whiteboard, code editor, live chat, and voice communication.
VOXA is a production-grade, real-time collaboration platform designed for engineers, designers, and remote teams who need to think, design, and build together. It seamlessly integrates visual brainstorming, coding, and communication into a single, cohesive environment.
Forget jumping between multiple appsβVOXA brings your entire workflow into one room.
- π¨ Infinite Whiteboard: High-performance, zoomable, and pannable canvas powered by Fabric.js. Draw, add shapes, text, and sticky notes with live cursor tracking. Includes undo/redo and custom themes.
- π» Real-time Code Editor: A Monaco-based IDE directly in your browser. Supports syntax highlighting, multi-cursor collaborative editing, and live execution.
- π¬ Integrated Chat: Low-latency text chat synchronized per room, ensuring context is never lost.
- ποΈ P2P Voice Channels: Built-in WebRTC voice communication. No need for third-party meeting links; talk naturally while you work.
- β‘ Sub-50ms Sync: Instantaneous state synchronization across all connected clients via optimized WebSockets (Socket.IO).
- π Secure Authentication: Seamless Google OAuth and JWT-based email/password authentication via Passport.js.
- πΎ Persistent Workspaces: All whiteboard objects, code, and chat history are saved in real-time to MongoDB, ready whenever you return.
VOXA is built on a modern MERN stack, heavily optimized for real-time performance.
- Framework: React 19 + Vite (Ultra-fast HMR and optimized builds)
- Styling: Custom CSS + Tailwind CSS (Utility-first) + Framer Motion (Fluid animations)
- Canvas Engine: Fabric.js (Object model wrapper for HTML5 canvas)
- Code Editor:
@monaco-editor/react(VS Code's core editor) - Visualizations: React Three Fiber / Drei (3D elements), Mermaid.js (Diagrams)
- Server: Node.js + Express 5
- Real-time Engine: Socket.IO v4 (WebSockets with polling fallback)
- Voice/Video:
simple-peer(WebRTC P2P mesh network) - Authentication: Passport.js (Google OAuth20) + JWT
- Database: MongoDB Atlas (Mongoose ODM)
- Client Layer: React application served statically. Manages local UI state and captures high-frequency user inputs (mouse moves, keystrokes, canvas events).
- Socket Layer: A dedicated Socket.IO handler manages 'Rooms'. It broadcasts
draw-data,code-change,cursor-move, andchat-messageevents to all peers in the room. High-frequency volatile events (like live cursors) are optimized to prevent server choke. - Signaling Server (WebRTC): The Node server acts as a signaling bridge, passing SDP offers/answers and ICE candidates between clients to establish direct P2P mesh connections for voice chat.
- Persistence Layer: Background workers (or asynchronous event handlers) periodically batch-save the room's current state (whiteboard object array, code string, chat history) to MongoDB to ensure data durability without blocking the main event loop.
- Node.js (v18+)
- MongoDB Instance (Local or Atlas)
- Google Cloud Console Project (for OAuth)
git clone https://github.com/KaranParmar19/Voxa.git
cd Voxacd server
npm installCreate a .env file in the /server directory:
PORT=5001
MONGO_URI=mongodb+srv://<user>:<password>@cluster.mongodb.net/voxa
JWT_SECRET=your_super_secret_jwt_key
CLIENT_URL=http://localhost:5173
SERVER_URL=http://localhost:5001
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
GEMINI_API_KEY=your_gemini_api_key
NODE_ENV=developmentStart the development server:
npm run dev# Open a new terminal
cd client
npm installCreate a .env file in the /client directory:
VITE_SERVER_URL=http://localhost:5001Start the Vite development server:
npm run devThe app will be available at http://localhost:5173.
Voxa/
βββ client/ # React Frontend
β βββ public/ # Static assets & _redirects (SPA routing)
β βββ src/
β β βββ assets/ # Images, icons, SVGs
β β βββ components/ # Reusable UI (Chat, CodeEditor, Whiteboard)
β β βββ context/ # React Context API (Auth, Theme)
β β βββ hooks/ # Custom React hooks
β β βββ pages/ # Route components (Home, Dashboard, Room, Auth)
β β βββ services/ # Axios API client setups
β β βββ utils/ # Helper functions (snapping, math)
β βββ package.json
β βββ vite.config.js
βββ server/ # Node.js Backend
β βββ src/
β β βββ config/ # DB connection, Passport Auth config
β β βββ controllers/ # Route logic (Auth, Rooms)
β β βββ middleware/ # JWT verification guards
β β βββ models/ # Mongoose Schemas (User, Room)
β β βββ routes/ # Express API endpoints
β β βββ socket/ # Socket.IO event handlers
β β βββ index.js # Entry point
β βββ package.json
βββ render.yaml # Render deployment configuration
βββ README.md
- Render Throttling: Live cursors and high-frequency whiteboard drawing events use
socket.volatile.emitto drop frames on slow connections rather than building up lag. - State Management: React components are carefully decoupled. The whiteboard state lives outside standard React state via Fabric.js instances to prevent unnecessary React re-renders during active drawing.
- SPA Fallback: Implemented robust
_redirectsandrender.yamlrewrite rules to handle Client-Side Routing correctly on static hosting providers.
VOXA is configured for seamless deployment on Render.
- Connect your GitHub repository to Render.
- Render will automatically detect the
render.yamlBlueprint file. - It will create two services:
voxa-server(Web Service, Node)voxa-client(Static Site, Vite)
- Navigate to the Environment tab of
voxa-serveron the Render dashboard and securely input your.envvariables (MongoDB URI, Google OAuth keys, etc.). - Render handles the CI/CD pipeline and will deploy both services automatically on push.
- Custom Authentication Providers: Add GitHub and Microsoft login options.
- Code Execution Sandboxing: Secure, isolated containers (e.g., Docker/Piston) for executing user code server-side safely.
- Export Capabilities: Export whiteboard canvases as high-res PNG/SVG or PDF.
- Room Access Controls: Add password protection and waiting rooms for collaborative sessions.
- Video Support: Upgrade WebRTC implementation to support webcam video streams alongside voice.
Contributions are welcome! If you'd like to improve VOXA, please follow these steps:
- Fork the repository.
- Create a feature branch:
git checkout -b feature/AmazingFeature - Commit your changes:
git commit -m 'Add some AmazingFeature' - Push to the branch:
git push origin feature/AmazingFeature - Open a Pull Request.
Distributed under the MIT License. See LICENSE for more information.
Built with β€οΈ for teams that build.




