A real-time collaborative code platform for technical interviews, pair programming, and remote developer teams.
Before running Vylop locally, make sure the following software is installed:
| Requirement | Version |
|---|---|
| Java Development Kit (JDK) | 17 or higher |
| Node.js | 18 or higher |
| npm | 9 or higher |
| PostgreSQL | 14 or higher |
| Apache Maven | 3.9 or higher |
| Git | Latest recommended version |
| Docker & Docker Compose | Optional |
You will also need:
- A running PostgreSQL instance.
- A PostgreSQL database for Vylop.
- The required application configuration values.
- Authentication configuration if using Google OAuth2.
Important
Never commit database passwords, JWT secrets, OAuth credentials, API keys, or other sensitive configuration values to the repository.
Follow the steps below to run Vylop locally.
Clone the repository and move into the project directory:
git clone https://github.com/your-username/vylop.git
cd vylopCreate a PostgreSQL database for Vylop:
CREATE DATABASE vylop_db;Make sure PostgreSQL is running before starting the server.
Navigate to the server:
cd serverConfigure the database connection and application secrets through your Spring Boot configuration.
For example:
spring.datasource.url=jdbc:postgresql://localhost:5432/vylop_db
spring.datasource.username=your_postgres_user
spring.datasource.password=your_postgres_password
jwt.secret=your_jwt_secret_key_hereEnvironment variables can also be used where supported by the application configuration.
Warning
The values above are examples only. Replace them with your local configuration and keep secrets outside version control.
Build the Spring Boot application:
mvn clean package -DskipTestsRun the application:
mvn spring-boot:runThe server will start at:
http://localhost:8080
Open a new terminal and navigate to the web:
cd webInstall the required dependencies:
npm installStart the Vite development server:
npm run devThe web will be available at:
http://localhost:5173
Once both services are running:
- Open
http://localhost:5173in your browser. - Verify that the server is running on port
8080. - Create or join a collaborative session.
- Test real-time code editing.
- Test workspace and session functionality.
Tip
Run the web and server in separate terminal sessions so you can easily monitor logs from both services during development.
Vylop provides a synchronized coding environment where multiple participants can work on the same codebase simultaneously.
- CRDT-based synchronization using Yjs
- Conflict-free concurrent editing
- Live remote cursor tracking
- Persistent WebSocket communication
- Monaco Editor integration
- Real-time state synchronization
Vylop supports complete project workspaces rather than limiting sessions to a single source file.
- Hierarchical file and folder structure
- Empty file creation
- Bulk local file uploads
- Automatic file-extension validation
- Synchronized file deletion
- Persistent workspace state
Run code directly from the collaborative workspace.
Supported languages include:
- Java
- Python
- C++
- JavaScript
- TypeScript
- Go
- Rust
Download the complete multi-file workspace as a .zip archive.
This makes it possible to:
- Preserve a coding session locally
- Share the project with other developers
- Continue development outside Vylop
Vylop includes a Markdown editing experience with a real-time rendered preview.
This allows users to write documentation alongside their code without leaving the collaborative workspace.
Communicate with other participants directly inside a coding session.
Features include:
- Session-based messaging
- User presence
- Typing indicators
- Real-time message delivery
Workspaces can be persisted and restored across sessions.
Vylop also includes background cleanup routines for orphaned workspace data to reduce unnecessary database growth.
Vylop provides authenticated access using:
- JWT-based authentication
- Google OAuth2
- Spring Security
- Protected application resources
Developers who prefer Vim-style editing can enable Vim keybindings directly inside the Monaco Editor.
| Layer | Technology | Purpose |
|---|---|---|
| Web | React 18 | User interface |
| Build Tool | Vite | Web development and bundling |
| Editor | Monaco Editor | Code editing |
| Collaboration | Yjs | CRDT-based synchronization |
| Editor Binding | y-monaco | Yjs ↔ Monaco integration |
| Styling | Tailwind CSS | UI styling |
| Real-Time Communication | WebSockets / STOMP | Real-time messaging |
| WebSocket Client | SockJS / STOMP.js | Client-side connection management |
| Server | Java 17 | Server runtime |
| Framework | Spring Boot 3 | REST and application services |
| Security | Spring Security | Authentication and authorization |
| Authentication | JWT / Google OAuth2 | User authentication |
| Database | PostgreSQL | Persistent data storage |
| Build System | Maven | Server dependency management |
| Containerization | Docker | Application containerization |
| Deployment | Render | Cloud deployment |
vylop/
│
├── server/
│ ├── src/
│ │ ├── main/
│ │ └── test/
│ └── pom.xml
│
├── web/
│ ├── public/
│ ├── src/
│ ├── package.json
│ └── vite.config.*
│
├── render.yaml
└── README.md
The server directory contains the Spring Boot application responsible for:
- REST APIs
- Authentication and authorization
- WebSocket communication
- Workspace persistence
- User management
- Database interaction
- Session-related server logic
The web directory contains the React application responsible for:
- User interface
- Monaco Editor integration
- Collaborative editing
- Workspace management
- Real-time session features
- Chat and presence
- Client-side application state
This project is currently maintained as an open-source project.
See the repository for the applicable license and project policies.