You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
CodeSync is a full-stack, real-time collaborative IDE that enables multiple developers to write, edit, and manage code simultaneously within shared workspaces. It features a professional-grade Monaco Editor, role-based access control (RBAC), live cursor tracking, version history, activity feeds, and instant file synchronization β all wrapped in a premium dark-theme UI inspired by Linear, Vercel, and Render.
β Feature Status β What's Implemented vs. Planned
β Implemented Features
Category
Feature
Status
Authentication
User Registration (signup)
β Done
Authentication
User Login (JWT-based)
β Done
Authentication
Protected Routes (frontend guard)
β Done
Authentication
Token verification middleware
β Done
Workspace
Create workspace with language template
β Done
Workspace
List user's workspaces (with roles)
β Done
Workspace
View workspace details (files, members)
β Done
Workspace
Delete workspace (owner only, cascading)
β Done
Workspace
Update workspace settings (name, language)
β Done
Collaboration
Real-time code sync via Socket.IO
β Done
Collaboration
Live cursor position tracking
β Done
Collaboration
User presence indicators (join/leave)
β Done
Collaboration
Debounced auto-save to MongoDB
β Done
File Management
Create files & folders
β Done
File Management
Rename files & folders (with child path update)
β Done
File Management
Delete files & folders (recursive)
β Done
File Management
Case-insensitive duplicate name prevention
β Done
File Management
File name normalization (sanitize specials)
β Done
File Management
Multi-level nested folder structure
β Done
Version History
Save file version snapshots
β Done
Version History
View version history per file
β Done
Version History
Restore to a previous version
β Done
Members
Invite member by email
β Done
Members
Join workspace via Room ID
β Done
Members
Change member roles (owner action)
β Done
Members
Remove member from workspace
β Done
Members
Transfer workspace ownership
β Done
Members
Members panel with live online status
β Done
RBAC
Owner / Editor / Viewer role enforcement
β Done
RBAC
Socket-level viewer write blocking
β Done
RBAC
Route-level role middleware
β Done
Activity
Activity logging (joins, edits, role changes)
β Done
Activity
Real-time activity feed sidebar
β Done
Session
Leave workspace session (manual)
β Done
Session
Auto-cleanup on socket disconnect
β Done
UI/UX
Premium dark theme (Linear/Vercel inspired)
β Done
UI/UX
Split-screen auth pages
β Done
UI/UX
Shimmer skeleton loaders
β Done
UI/UX
Route-based lazy loading
β Done
UI/UX
Hover prefetch navigation
β Done
Performance
HTTP gzip compression
β Done
Performance
.lean() Mongoose queries
β Done
Performance
Compound indexes on MongoDB
β Done
Multi-Language
JS, TS, Python, C++, Java, Go, Rust templates
β Done
Services
User cascade delete (files, members, logs)
β Done
π Planned / Not Yet Implemented
Category
Feature
Status
Auth
OAuth2 (GitHub/Google SSO)
π Planned
Auth
Password reset / forgot password
π Planned
Auth
Email verification on signup
π Planned
Collaboration
Integrated terminal (run code in-browser)
π Planned
Collaboration
In-editor chat / comments
π Planned
Collaboration
Conflict resolution (OT / CRDT)
π Planned
File Management
Drag-and-drop file/folder reorder
π Planned
File Management
File upload / download
π Planned
File Management
File search across workspace
π Planned
Workspace
Workspace templates / cloning
π Planned
Workspace
Workspace privacy (public/private toggle)
π Planned
Notifications
In-app notification system
π Planned
Notifications
Email notifications for invites
π Planned
DevOps
Docker containerization
π Planned
DevOps
CI/CD pipeline
π Planned
Testing
Unit & integration test suite
π Planned
UI
Light theme / theme toggle
π Planned
UI
Mobile responsive layout
π Planned
π Key Features Deep Dive
π§ Monaco Editor Integration
The in-browser IDE is powered by Monaco Editor (the same engine behind VS Code), providing:
Syntax highlighting for 7+ languages
IntelliSense / autocomplete
Minimap preview
Multi-cursor editing
Bracket pairing and indentation
β‘ Real-Time Synchronization
Code changes are broadcast via Socket.IO with debounced auto-save (5-second delay) to reduce DB writes.
Cursor positions are throttled and broadcast to all participants viewing the same file.
File operations (create, rename, delete) are instantly pushed to all connected clients.
User presence is tracked β join/leave events are emitted in real time.
π Hierarchical File System
Full support for nested directory structures:
/ root-level files
/src/, /src/components/, etc.
Folders can be created, renamed, and deleted recursively (all child files/folders are cleaned up).
Names are normalized and sanitized (trimmed, special characters stripped, case-insensitive uniqueness enforced via compound indexes).
π Version History
Any editor can snapshot the current state of a file. The full history of snapshots is viewable, and any past version can be restored β effectively a manual "git" within the IDE.
π€ Multi-Method Workspace Sharing
Invite by Email β Owner enters a registered user's email and assigns a role.
Join by Room ID β Any registered user can paste a workspace ID and join (defaults to editor role).
π Ownership Transfer
Workspace owners can transfer ownership to any existing member. The previous owner is demoted to editor, and the new owner gets full admin privileges.
User clicks "Create Workspace" on Dashboard
β
βΌ
βββββββββββββββββββββββββββ
β CreateWorkspaceModal β
β - Enter workspace name β
β - Select language β
βββββββββββββ¬βββββββββββββββ
β POST /api/workspaces
βΌ
βββββββββββββββββββββββββββββββ
β Server creates: β
β 1. Workspace document β
β 2. WorkspaceMember (owner) β
β 3. Starter file (template) β
βββββββββββββ¬βββββββββββββββββββ
β
βΌ
Redirect to /workspace/:id
(Monaco Editor opens with starter file)
2. Inviting a Collaborator
Owner clicks "Share" β ShareWorkspaceModal
β
ββββ Option A: Invite by Email
β β POST /api/workspaces/:id/invite
β β { email, role: 'editor' | 'viewer' }
β βΌ
β Server adds WorkspaceMember + emits member_joined
β
ββββ Option B: Share Room ID
β Invitee uses JoinWorkspaceModal
β POST /api/workspaces/:id/join
βΌ
Server adds WorkspaceMember (editor) + emits member_joined
3. Real-Time Editing Session
1. Navigate to /workspace/:id
2. Socket connects β join_workspace event
3. Server broadcasts user_joined to all
4. User clicks a file β join_file event
5. User types β code_change events
6. Server broadcasts code_update to others viewing same file
7. Server debounces (5s) and saves to MongoDB
8. Cursor movements broadcast via cursor_position β cursor_update
9. On disconnect β user_left broadcast + active user cleanup
4. Version History
Editor clicks "Save Version" icon
β POST /api/files/:fileId/version
βΌ
FileVersion snapshot created (content + editedBy + timestamp)
β
βΌ
VersionHistory panel shows all snapshots for this file
β
βΌ
User clicks "Restore" on a past version
β POST /api/files/restore/:versionId
βΌ
File.content overwritten with snapshot content
(Socket will pick up and sync to all clients)
5. Ownership Transfer
Owner opens MembersPanel β clicks "Transfer Ownership"
β POST /api/workspaces/:id/transfer
β { targetUserId }
βΌ
βββββββββββββββββββββββββββββββββββββββββ
β 1. Current owner β demoted to editor β
β 2. Target user β promoted to owner β
β 3. Workspace.owner ref updated β
β 4. Activity logged β
βββββββββββββββββββββββββββββββββββββββββ