CodeXLive is a state-of-the-art, feature-complete collaborative IDE and social ecosystem built for modern developers. Combining professional-grade coding tools with a high-performance audio/video calling infrastructure and a developer social network, CodeXLive enables frictionless real-time pair programming, seamless workspace governance, project scheduling, and personal network building.
- β¨ Key Features
- ποΈ System Architecture
- π οΈ Technology Stack
- π Comprehensive Project Structure
- π§© Components & Code Architecture
- πΊοΈ Complete API Endpoint Reference
- π Socket.io Events Protocol
- π¨ Premium Design System
- π Quick Start & Environment Configuration
- π‘οΈ Security & Performance Standards
- π€ Contributing
- π License
- Operational-Sync Editor: Built on CodeMirror 6, delivering latency-free character synchronization across all participants with real-time room cursors and highlighting.
- Recursive File Tree: A robust virtual filesystem in the browser allowing files/folders creation, renaming, deleting, and hierarchical nesting with instant database persistence.
- Multilingual Compiler: Compile and execute code in 20+ programming languages in real time powered by a backend JDoodle API integration.
- Git-like Version Snapping: Commit points and snapshots saved directly to the database, allowing users to browse full version histories and restore past codebases in one click.
- Prettier Formatting: Native code formatting built-in using standard Prettier engines to keep cooperative projects clean and uniform.
- ZIP Archiving: Export and download entire projects recursively as a zip archive instantly.
- Full Mesh Topology: Complete peer-to-peer audio and video streaming powered by simple-peer, eliminating the need for expensive SFUs or media servers.
- Floating Draggable Panel: A custom pointer-event-driven overlay panel featuring a live duration timer, participant grids, window minimization, and responsive layouts.
- Late Join Support: Late room entrants can seamlessly connect with active peers and join ongoing video calls automatically.
- In-Call Toolbar: Real-time microphone mute, camera toggle, and immediate call hangup.
- Graceful Fallbacks: Automatically falls back to high-fidelity audio streams if webcam access is blocked or camera hardware is missing.
- Secure Waiting Room: Project owners are notified via Socket.io when a user requests entry, allowing them to approve or decline access dynamically.
- Role-Based Access Control: Assign
EditororViewerroles to users in real time. Viewers get immediate read-only access with locked CodeMirror textareas. - Moderation Panel: Allows project owners to kick, temporarily suspend, or permanently ban participants from collaborative rooms.
- Shareable Invitation Tokens: Generate secure, single-click access URLs or project tokens.
- Schedule Team Standups: Schedule and coordinate developer meetings directly inside the editor sidebar.
- RSVPs & Attendance: View meeting invitees, RSVPs, and track attendance states.
- Interactive Notifications: Get in-app alerts and Socket-based overlays when collaborative meetings are scheduled or edited.
- General Room Chat: Persistent group discussion pane for current project participants.
- Structured Direct Messaging (DM): Features a robust secure request-approval mechanism. A user must approve a DM request before messaging begins.
- Persistent Histories: Message lists and DM threads are fully backed by MongoDB.
- GitHub Repository Bridge: Import public repositories directly into a CodeXLive collaborative workspace via rapid HTTP/API ingestion.
- 365-Day Activity Heatmap: Interactive GitHub-style visual contributions panel showing historical collaborator changes and project commits.
- Follower/Following Graph: Dynamic developer networking graphs supporting instant follow activities and live alerts.
- Developer Directory: Global user search interface filtering by unique IDs, emails, or usernames.
- AI Code Reviewer: Highlights security issues, code smells, and performance bottlenecks.
- AI Explainer: Select a block of complex code and receive a conversational walk-through.
- AI Bug Fixer: Detects compile errors or logical bugs and generates drop-in replacements.
- Test Suite Generator: Instantly drafts comprehensive Jest/Mocha test structures.
- Free-Form Chat: Direct playground console using Google's Gemini models.
graph TD
Client[React 19 Frontend] <-->|Socket.io 4 Protocol| Server[Node.js/Express Backend]
Client <-->|REST API JSON| Server
Client <-->|WebRTC P2P mesh| Client2[Other Callers]
Server <-->|Mongoose ODM| DB[(MongoDB Atlas)]
Server <-->|OAuth Admin SDK| Firebase[Firebase Auth]
Server <-->|Compile Sandbox| JDoodle[JDoodle Compiler]
Server <-->|AI Prompts| Gemini[Google Gemini AI]
Server <-->|SMTP Relays| Brevo[Brevo Mailer]
Server <-->|Binary Storage| Cloudinary[Cloudinary CDN]
Client -.->|STUN Handshakes| GoogleSTUN[Google STUN Services]
| Component | Technologies Used |
|---|---|
| Frontend | React 19, Vite 7, CodeMirror 6, Axios, Socket.io-client, simple-peer, Lucide Icons, Vanilla CSS (Premium Dark Mode) |
| Backend | Node.js, Express, Socket.io 4, Mongoose 8, Bcrypt.js, Archiver, Cloudinary Admin SDK |
| Databases | MongoDB Atlas (Persistent store), In-Memory JS Maps (Ephemeral cursors, signaling nodes) |
| Auth | Firebase Admin SDK (OAuth integration), JWT (Stateless token exchange) |
| Integrations | Google Gemini AI SDK, JDoodle Web compiler, Brevo (SMTP Transactional Mailer) |
| DevOps | Docker, Docker Compose, Nginx, Vercel, Render |
Below is an exhaustive breakdown of CodeXLive's dual-tier structure:
CodeXLive/
βββ client/ # React + Vite Frontend App
β βββ public/ # Static browser assets (avatars, icons)
β βββ src/
β β βββ components/ # Reusable UI Blocks & Orchestration Panels
β β β βββ Dashboard/ # Dashboard Layout Components
β β β β βββ NewProjectForm.jsx # Project creator modal/card form
β β β β βββ ProjectCard.jsx # Individual workspace card with settings
β β β βββ Editor/ # Sidebar panels, status meters, modulators
β β β β βββ Breadcrumbs.jsx # Active path indicator inside the editor
β β β β βββ CommandPalette.jsx # Quick keyboard shortcut drawer
β β β β βββ CompilerOutput.jsx # Standard output terminal window
β β β β βββ EditorModals.jsx # Handles creation, delete validation dialogs
β β β β βββ EditorSidebar.jsx # Left navigation tabs (Files, Chat, AI, Meeting)
β β β β βββ EditorToolbar.jsx # Top toolbar controlling runs, video call initiation
β β β β βββ InviteParticipantsModal.jsx # Invites developers inside workspaces
β β β β βββ MeetingDetailsModal.jsx # Viewing specific calendar items
β β β β βββ MeetingModal.jsx # Meeting scheduler orchestrator
β β β β βββ MeetingPanel.jsx # Meeting items sidebar drawer
β β β β βββ MembersList.jsx # List active online room participants
β β β β βββ ParticipantPicker.jsx # User search selector for invitations
β β β β βββ PendingRequests.jsx # Access waitlist manager for room host
β β β β βββ ProblemsPanel.jsx # Lints and highlights code syntax issues
β β β β βββ StatusBar.jsx # Bottom bar tracking connection and file changes
β β β βββ Landing/ # Landing Page Visual Sections
β β β β βββ ActionCards.jsx # Features visual widgets
β β β β βββ FeatureGrid.jsx # Dynamic showcase grid
β β β β βββ HeroSection.jsx # Glassmorphic marketing headline area
β β β β βββ HowItWorks.jsx # Illustrated procedural usage guides
β β β βββ layout/ # Main layout frames
β β β β βββ AuthLayout.jsx # Wraps login/register pages
β β β β βββ DirectMessaging.jsx # DM tray with user lists and DM boxes
β β β β βββ Footer.jsx # Global sticky footer block
β β β β βββ Navbar.jsx # Nav system with dropdowns, alerts and search
β β β β βββ NotificationDropdown.jsx # Real-time notification menu drawer
β β β βββ profile/ # Profile and contribution metrics
β β β β βββ ActivityDashboard.jsx# Social feed overview
β β β β βββ ActivityHeatmap.jsx # 365-day SVG matrix mapping contributions
β β β β βββ ProfileStats.jsx # Followers count, projects count, rating indexes
β β β β βββ RecentActivity.jsx # Linear timeline of user actions
β β β β βββ SuggestedActions.jsx # Contextual profile recommendations
β β β β βββ UserListModal.jsx # Lists followers and followings
β β β βββ ui/ # Styled basic components
β β β β βββ Badge.jsx # Premium status badges
β β β β βββ Button.jsx # Reusable hover-animated button
β β β β βββ Input.jsx # Focus-glow standard inputs
β β β β βββ Logo.jsx # SVG vector logo emblem
β β β β βββ Modal.jsx # Portal-driven backdrop-closing modal
β β β β βββ Select.jsx # Styled custom dropdown selection list
β β β β βββ Textarea.jsx # Auto-growing text input field
β β β βββ video/ # Full-mesh call panels
β β β β βββ CallPanel.jsx # Draggable audio/video overlay panel
β β β β βββ IncomingCallModal.jsx# Ringing overlay with accept/decline buttons
β β β β βββ ParticipantTile.jsx # Individual user streams & indicators
β β β βββ AIPanel.jsx # Controls for the Gemini developer prompts
β β β βββ ChatPanel.jsx # Unified real-time room chat component
β β β βββ Client.jsx # Mini participant status widget
β β β βββ Editor.jsx # CodeMirror 6 editor engine core
β β β βββ EditorPage.jsx # Top workspace state orchestrator page
β β β βββ FileExplorer.jsx # Visual directory drawer with CRUD options
β β β βββ ShareModal.jsx # Link manager, share token regenerator
β β β βββ VersionHistory.jsx # Snapshots inspector sidebar drawer
β β βββ hooks/ # Custom functional hooks
β β β βββ editor/ # Dedicated editor routines
β β β β βββ useFileTree.js # Directory structures mapper and manipulator
β β β β βββ useRoomSocket.js # Manages specific socket bindings per room
β β β βββ useAuth.jsx # Global authentication contextual provider
β β β βββ useDM.jsx # Direct message sync hooks
β β β βββ useGlobalSocket.jsx # App-wide notification-based socket connection
β β β βββ useTheme.jsx # Color-palette dynamic switcher
β β β βββ useWebRTC.js # High-level full mesh peer connections builder
β β βββ pages/ # Screen routes of the application
β β β βββ Dashboard.jsx # User workspace hub
β β β βββ ForgotPassword.jsx # Password request form
β β β βββ LandingPage.jsx # Public showcase site
β β β βββ Login.jsx # Log-in portal (Credentials / Firebase OAuth)
β β β βββ PublicProfile.jsx # Public social profile hub
β β β βββ Register.jsx # Member signup page
β β β βββ ResetPassword.jsx # New password entry route
β β βββ services/ # Axios clients & API request definitions
β β βββ styles/ # Specific raw CSS modules
β β βββ utils/ # Frontend helpers
β β β βββ Actions.js # Shared Socket action structures
β β βββ App.jsx # App root router
β β βββ index.css # Design system variables, Tailwind layers
β βββ vite.config.js # Development proxy config, server setups
β
βββ server/ # Node.js + Express Backend App
βββ config/ # DB, Firebase, Cloudinary Initializations
βββ controllers/ # Ingestion models and API routing logic
β βββ activityController.js # Records activity, serves developer timeline
β βββ aiController.js # Forwards specialized tasks to Gemini AI API
β βββ authController.js # Registration, logins, password reset routines
β βββ compileController.js # Direct proxies to JDoodle compilation API
β βββ downloadController.js # Packages workspace folders into downloadable ZIPs
β βββ fileController.js # CRUD and Version restoration operations
β βββ formatController.js # Invokes server-side formatting
β βββ githubController.js # Ingests and formats code repositories
β βββ meetingController.js # Schedules, updates, invites workspace meetings
β βββ messageController.js # Direct messaging state & request database hooks
β βββ notificationController.js # Dispatches live alerts database-wide
β βββ projectController.js # Project-specific metadata CRUD operations
β βββ sharingController.js # Shared links and collaboration invitation links
β βββ userController.js # Profiles, followers list, avatars
βββ middleware/ # HTTP request filters
β βββ auth.js # Authenticates stateless JWT Headers
β βββ rateLimiter.js # Protects APIs from aggressive request rates
βββ models/ # Mongoose Database Models
β βββ ActivityLog.js # Tracks collaborator commits/modifications
β βββ File.js # Stores file paths, text contents and languages
β βββ Follow.js # Maps follower-following connections
β βββ Invitation.js # Pending join requests per project
β βββ Meeting.js # Date, schedules, RSVPs of developer meetings
β βββ Message.js # Persistent direct and room discussions
β βββ Notification.js # Read/unread notices for developers
β βββ Project.js # Project scopes, workspace security, share tokens
β βββ Session.js # Active user token tracking
β βββ User.js # Profiles, security keys, linked auth providers
β βββ Version.js # Direct database snapshots of individual files
βββ routes/ # Express REST API endpoints
βββ sockets/ # Real-time state layers
β βββ handlers/ # Modular event processors
β β βββ chatHandlers.js # Forwards messages (room, DMs, global chats)
β β βββ codeHandlers.js # Manages workspace edits, file synching, cursors
β β βββ disconnectHandlers.js # Cleans up maps, triggers leader switches
β β βββ permissionHandlers.js # Syncs read/write rights dynamically
β β βββ roomHandlers.js # Join validations, waiting queues, lock control
β β βββ videoHandlers.js # WebRTC mesh signaling broker
β βββ roomState.js # Memory maps storing live room attributes
β βββ socketHandler.js # General entry socket initializer & JWT validator
βββ utils/ # Backend SMTP, AI templates, compilers helpers
βββ Actions.js # Backend shared Socket event identifiers
βββ index.js # Application bootstrapper
βββ package.json # Backend node manifest
EditorPage.jsx behaves as the primary orchestrator, maintaining a centralized file selection context, participant trackers, compilation state, calls overlay states, and permissions statuses.
- WebRTC Integration: Instantiates
useWebRTC.jstargeting the assigned Room ID, binding local media streams and creating meshes directly. - Socket Hub: Sets up the CodeMirror syncing triggers, passing operations to the socket loop inside
useRoomSocket.js. - State Hooks: Connects with
useFileTree.jsto render the workspace file hierarchy under a custom stateful memory tree.
Utilizes simple-peer to build a dynamic Full Mesh. Unlike standard client calling implementations, this hook handles late joining gracefully:
- On call entry, it requests the current caller list via
JOIN_CALL. - For each active client returned, the hook creates a
Peerinstance acting as an Initiator, forwarding local media tracks. - For new entrants joining later, it listens for
PARTICIPANT_JOINED_CALLand instantiates a non-initiatingPeerwaiting for an incoming offer. - Provides customizable bandwidth configurations and toggle state syncing.
All endpoints (except basic Auth routes) require a stateless JWT bearer header: Authorization: Bearer <your_token>.
POST /register: Registers a new local account.- Payload:
{ username, email, password, fullName }
- Payload:
POST /login: Validates local credentials, returning a JWT token.- Payload:
{ email, password }
- Payload:
POST /firebase: Signs in/registers a user authenticating via Google/GitHub Firebase OAuth.- Payload:
{ idToken, username, email, fullName, avatar }
- Payload:
POST /forgot-password: Emails a secure password reset token using Brevo SMTP.- Payload:
{ email }
- Payload:
POST /reset-password/:token: Restores credentials using a valid token.- Payload:
{ password }
- Payload:
GET /profile: Returns detailed profiles of the authenticated requester.
POST /: Creates a blank project workspace.- Payload:
{ name, language, isPublic }
- Payload:
GET /: Fetches projects owned or collaborated on by the requester.GET /:id: Retrieves detailed project configuration, collaborator roles, and file listings.PUT /:id: Modifies workspace properties (name, privacy, default language).DELETE /:id: Destroys the workspace and all children database files/versions.GET /:id/download: Compiles project directories recursively, piping a binary ZIP file output to the requester.
POST /:projectId: Creates a file database entry.- Payload:
{ name, path, language, content }
- Payload:
GET /:id: Fetches content, language, and paths of a specific file.PUT /:id: Saves immediate updates to a file's body text.- Payload:
{ content }
- Payload:
POST /autosave: Performs high-frequency debounced autosaves without updating versions.- Payload:
{ fileId, content }
- Payload:
GET /:id/versions: Lists historical snapshots/commits created for the target file.POST /versions/:versionId/restore: Reverts a file's active body text to a specific snapshot's content.DELETE /:id: Removes a file from the repository structure.
GET /invitations/my: Fetches outstanding workspace requests sent to the user.POST /invitations/:invitationId/accept: Joins a workspace as an approved collaborator.POST /invitations/:invitationId/decline: Declines and deletes an entry request.POST /:projectId/invite: Sends a collaboration invitation to another registered developer.- Payload:
{ inviteeId, role }(role:"editor"|"viewer")
- Payload:
DELETE /:projectId/collaborator/:userId: Removes access privileges from a workspace.POST /:projectId/share-link: Dynamically generates a secure token-based join URL.POST /join/:token: Allows dynamic entrance into public or invitation-based private projects.GET /:projectId/collaborators: Lists all users having access to the project and their permissions.GET /:projectId/invitations: Lists all pending outgoing invitations for the project.
POST /: Schedules a developer meeting event.- Payload:
{ title, description, projectId, scheduledTime, duration, invitees }
- Payload:
GET /project/:projectId: Lists all meetings scheduled for a project.GET /:id: Retrieves granular meeting structures and RSVP states.PUT /:id: Updates meeting schedules and attributes.PATCH /:id/invite: Appends new participants to an existing meeting calendar.- Payload:
{ invitees }
- Payload:
PATCH /:id/status: Updates individual attendee RSVPs (accepted, declined, tentative).- Payload:
{ status }
- Payload:
DELETE /:id: Cancels the meeting and alerts invitees.
GET /:username/profile: Fetches detailed public developer profiles, networking metrics, and follow states.POST /:id/follow: Follows a user profile. Triggers system-wide notifications.POST /:id/unfollow: Removes a user from follow lists.GET /search: Performs global queries matching username/email fragments.GET /:username/followers: Lists followers of a user.GET /:username/following: Lists accounts followed by a user.PATCH /me/profile: Edits bios, fullNames, and linked social profiles.POST /me/avatar: Uploads and formats profile pictures using the Cloudinary CDN.
GET /conversations: Lists active direct messaging dialog channels, divided by requests and active threads.GET /:userId: Pulls complete 1-on-1 messaging history.POST /approve/:userId: Approves an incoming DM request, unlocking full dialog access.POST /decline/:userId: Declines a DM request, hiding/deleting outstanding dialogs.
GET /:id/activity: Gathers audit logs for a project (creates, updates, syncs).GET /:username/activity-dashboard: Resolves 365-day metric matrices for contribution heatmaps.
POST /review: Directs Gemini to perform full syntax linting, security audits, and complexity reviews.- Payload:
{ code, filename }
- Payload:
POST /explain: Gathers educational walkthroughs for selected blocks.- Payload:
{ code }
- Payload:
POST /fix: Repairs syntax or runtime issues.- Payload:
{ code, error }
- Payload:
POST /tests: Drafts standardized mock unit test collections.- Payload:
{ code, framework }
- Payload:
POST /chat: General AI conversation playground.- Payload:
{ prompt, context }
- Payload:
POST /autocomplete: Light-touch line completion models.- Payload:
{ codeBefore, codeAfter }
- Payload:
POST /api/compile: Submits code payloads to JDoodle compilers, returning stdout/stderr.- Payload:
{ code, language, input }
- Payload:
POST /api/format: Processes server-side code formatting with Prettier formatting guidelines.- Payload:
{ code, language }
- Payload:
ACTIONS.CREATE_ROOM(Client -> Server): Request creation of a live room context.- Payload:
{ projectId }
- Payload:
ACTIONS.JOIN(Client -> Server): Request connection to an active workspace.- Payload:
{ roomId, username }
- Payload:
ACTIONS.JOINED(Server -> Client): Fired to all members when a user joins, sharing updated participant listings.- Payload:
{ clients, username, socketId }
- Payload:
ACTIONS.DISCONNECTED(Server -> Client): Broadcasts that a participant has disconnected, showing remaining user metrics.ACTIONS.KICK_USER(Client -> Server): Fired by moderators to forcibly disconnect a target socket.ACTIONS.KICKED(Server -> Client): Fired directly to targeted users, forcing client-side disconnection.ACTIONS.ROOM_BANNED(Server -> Client): Issued to banned users trying to reconnect.ACTIONS.WAIT_FOR_APPROVAL(Server -> Client): Informs entry requests they are queued in the lobby.
ACTIONS.CODE_CHANGE(Client -> Server -> Client): Synchronizes cursor keystrokes, character changes, or operations.- Payload:
{ roomId, fileId, changeRanges, value }
- Payload:
ACTIONS.SYNC_CODE(Client -> Server -> Client): Pulls complete file content states to synchronize late room joiners.- Payload:
{ socketId, code }
- Payload:
ACTIONS.FILE_CREATED/ACTIONS.FILE_DELETED/ACTIONS.FILE_RENAMED(Client -> Server -> Client): Automatically triggers file-tree state syncs for all active clients in the room.
ACTIONS.CALL_INITIATE(Client -> Server): Initiates a group video or audio call in the workspace.- Payload:
{ roomId, callType }
- Payload:
ACTIONS.INCOMING_CALL(Server -> Client): Rings active room participants with dynamic overlay dialog panels.- Payload:
{ from, username, callType }
- Payload:
ACTIONS.CALL_ANSWER(Client -> Server -> Client): Relays whether a ringing invitation was accepted or declined.ACTIONS.JOIN_CALL(Client -> Server): Dispatched by late callers requesting immediate access to active WebRTC grids.ACTIONS.WEBRTC_OFFER/ACTIONS.WEBRTC_ANSWER/ACTIONS.WEBRTC_ICE_CANDIDATE(Client -> Server -> Client): Standard WebRTC signaling broker routing SDP templates between peers.ACTIONS.TOGGLE_MEDIA(Client -> Server -> Client): Informs peers when a user disables/enables webcams or mutes microphones.
CodeXLive uses a highly polished Dark Theme design tailored for a modern developer's aesthetic.
- Primary Background:
#0F1115(Deep charcoal dark theme) - Secondary Background:
#1A1D24(Muted surface panels) - Surface Cards & Modals:
#22262F(High contrast containers) - Border Dividers:
#2E3440(Sleek, low opacity outline borders) - Primary Accent:
#00D084(Vibrant tech green) - Primary Accent Hover:
#00B574(Deeper emerald green) - Accent Soft BG:
rgba(0, 208, 132, 0.1)(Subtle selection glowing tints) - Primary Text:
#E6EAF0(Bright white-gray high readability text) - Secondary Text:
#A0A8B5(Muted text elements) - Status Colors:
- Success:
#22C55E - Error:
#EF4444 - Warning:
#F59E0B - Info:
#3B82F6
- Success:
- Typography: Inter and Poppins font families. Line height:
1.4β1.6for optimal readability. - Spacing Grid: Standard
8pxspacing grid rules (4pxmicro-paddings,8pxtight-spaces,16pxdefaults,24pxlayout gaps). - Depth & Shadows: Subtle borders (
1px solid #2E3440) combined with extremely soft blur shadows replace harsh flat elements to deliver depth.
- Node.js: v18.0.0 or higher
- Database: MongoDB Atlas account or a locally running instance
- Firebase: Firebase account (Firebase Admin SDK Credentials for Social Sign-In)
- CDN Storage: Cloudinary account for file upload processes
- Optional Keys: Gemini API Key, Brevo SMTP credentials, JDoodle API Credentials
# Clone the repository
git clone https://github.com/Riteshmaurya07/Code_X_Live.git
cd Code_X_Live
# Install Server Dependencies
cd server
npm install
# Install Client Dependencies
cd ../client
npm installCreate a .env file in the root of both /server and /client using these templates:
PORT=5000
MONGODB_URI=mongodb+srv://<username>:<password>@cluster.mongodb.net/codexlive
JWT_SECRET=your_super_secret_jwt_key_here
# Firebase Admin configuration (JSON payload or individual credentials)
FIREBASE_PROJECT_ID=your-firebase-project-id
FIREBASE_CLIENT_EMAIL=your-firebase-admin-email
FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n..."
# Compiler Integration - JDoodle API (https://www.jdoodle.com/compiler-api/)
JDOODLE_CLIENT_ID=your_jdoodle_client_id
JDOODLE_CLIENT_SECRET=your_jdoodle_client_secret
# AI Copilot Integration - Google Gemini API
GEMINI_API_KEY=your_gemini_api_key_here
# SMTP Integration - Brevo Credentials (https://www.brevo.com/)
SMTP_API_KEY=your_brevo_smtp_api_key_here
SMTP_FROM_EMAIL=noreply@codexlive.com
# CDN Integration - Cloudinary
CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret
# CORS Configuration
CLIENT_URL=http://localhost:5173VITE_BACKEND_URL=http://localhost:5000
# Firebase Client SDK Configuration (Social Login)
VITE_FIREBASE_API_KEY=your_firebase_client_api_key
VITE_FIREBASE_AUTH_DOMAIN=your-app.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=your-project-id
VITE_FIREBASE_STORAGE_BUCKET=your-app.appspot.com
VITE_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
VITE_FIREBASE_APP_ID=your_app_idFrom the /server directory:
npm run devFrom the /client directory:
npm run devThe client app will launch at http://localhost:5173.
Run the entire stack instantly using Docker:
# Launch both containers
docker-compose up --buildThis launches a backend server mapped to http://localhost:5000 and a Vite web frontend bound to http://localhost:5173, with an Nginx reverse proxy routing requests seamlessly.
- Endpoint Shielding: Secure Helmet.js middleware implements Content Security Policies (CSP), prevents DNS prefetching, and shields against clickjacking.
- EPID Rate Limiter: Heavy endpoints (AI analysis, compilation sandboxes) are rate-limited per IP using Express rate limit algorithms.
- JWT Handshake Validation: Live WebSockets enforce JWT verification during handshakes. Connected sockets that fail auth are rejected before gaining access.
- Media Privacy: Audio and video mesh systems stream purely peer-to-peer. Media data never passes through or gets stored on the server.
- Optimized Payload Processing: Gzip compression is enabled globally, reducing REST payload sizes by up to 70%.
Contributions are what make the open-source community an incredible place to learn, inspire, and create. Any contributions are warmly appreciated.
- Fork the project.
- Create your 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 detailing your modifications.
Distributed under the MIT License. See LICENSE for details.