Skip to content

SillyCatto/vbase

 
 

Repository files navigation

VBase Logo

Real-Time Collaborative Virtual Workspace

Next.js React Convex Clerk Liveblocks LiveKit TypeScript TailwindCSS

A powerful real-time collaborative workspace where teams can edit documents, write code, analyze data, manage tasks, brainstorm on whiteboards, chat, and meet live in one unified platform.

🌟 Project Overview

VBase is an all-in-one collaborative virtual workspace that brings together document editing, code collaboration, spreadsheet work, kanban task tracking, whiteboard brainstorming, chat, and video conferencing into a seamless, real-time experience. Think of it as your team's virtual office where everyone can work together regardless of location.

🎯 The Problem We Solve

Modern teams face fragmented collaboration:

  • Document editing → Google Docs
  • Code collaboration → VS Code Live Share
  • Spreadsheets → Google Sheets / Excel
  • Task tracking → Trello / Jira
  • Whiteboarding → Miro/Figma
  • Video calls → Zoom/Google Meet
  • Team chat → Slack/Discord

The Result: Constantly switching between apps, losing context, and paying for multiple subscriptions.

💡 Our Solution

VBase unifies all collaboration tools in one workspace:

Feature Description
📝 Documents Rich text collaboration with formatting, exports, and AI writing tools
💻 Code Rooms Multi-file code collaboration with execution, terminal output, and AI coding help
📊 Spreadsheets Collaborative spreadsheets with formulas, formatting, and live selection stats
Kanban Boards Task boards with board/list views, drag-and-drop cards, and custom columns
🎨 Whiteboards Infinite canvas brainstorming with real-time sync and AI diagram generation
📹 Meetings Live audio/video meetings with lobby, chat, raised hands, and screen sharing
💬 Team Chat Workspace-wide and direct messaging with unread tracking and reactions
👥 User Activity Active-user presence indicators so teams can see who is currently working in a workspace

Our sister project complimenting VBase

⚙️ vbase-rce: Our own experimental RCE engine built with FastAPI and Docker for code execution in Code Room


📌 Live Deployment

VBase is deployed on Vercel.


📚 User Guide

For end-user documentation and feature walkthroughs, start with the user-guide hub:


✨ Key Features

📝 Collaborative Document Editor

  • Rich Text Editing: Full formatting with Tiptap-powered editor (bold, italic, headings, lists, images, links)
  • Real-Time Sync: See teammates' cursors and edits instantly via Liveblocks Yjs
  • A4 Page Layout: Professional document view with rulers, margins, and page breaks
  • AI Writing Tools: Summarize, elaborate, fix grammar, change tone, and generate content
  • Export Options: Export documents as JSON, HTML, PDF, or text
  • Connection Status: Visual indicators for sync status

💻 Real-Time Code Editor

  • Multi-Language Support: JavaScript, Python, Java, C, C++
  • Live Collaboration: Real-time cursor presence with colored user indicators
  • Dual Code Execution Engines:
    • Piston API - Public code execution service
    • VBase RCE - Custom Azure-hosted execution engine
  • File Explorer: Create files and folders with hierarchical organization
  • VS Code Themes: Light and dark mode with VS Code-style syntax highlighting
  • Integrated Terminal: View execution output directly in the editor
  • AI Assistant: Ask for explanations or use agent-style generation directly in the editor

📊 Collaborative Spreadsheet Rooms

  • Spreadsheet Room Type: Create spreadsheet rooms directly from a workspace
  • Live Grid Editing: Edit cells collaboratively with shared state via Liveblocks storage
  • Formula Bar: Enter values and formulas with cell-reference awareness
  • Formatting Tools: Bold, italic, underline, alignment, fill, text color, and number formats
  • Structure Controls: Insert and delete rows or columns relative to the active cell
  • Selection Stats: Instantly view count, min, max, average, and sum for selected ranges

✅ Kanban Task Boards

  • Kanban Room Type: Create boards for task planning and delivery workflows
  • Board And List Views: Switch between drag-and-drop board view and table-style list view
  • Default Workflow Columns: Start with To do, In progress, and Done
  • Task Editing: Add task titles, descriptions, and update card details later
  • Custom Columns: Add, rename, and delete columns to match the team's workflow
  • Drag And Drop: Move cards within or across columns to reflect progress

🎨 Whiteboard Canvas

  • Infinite Canvas: Powered by Excalidraw for free-form drawing
  • Real-Time Sync: See teammates drawing in real-time
  • Rich Toolset: Shapes, arrows, text, freehand drawing, and more
  • Persistent Storage: Whiteboards save to database automatically
  • AI Diagram Generation: Turn prompts like flows or system descriptions into live canvas diagrams

📹 Video Conferencing

  • HD Video & Audio: Crystal clear communication via LiveKit
  • Meeting Lobby: Preview camera/mic before joining
  • Multiple Meetings: Up to 3 concurrent meetings per conference room
  • In-Call Collaboration: Open people and chat side panels while staying in the call
  • Live Controls: Toggle mic, camera, screen sharing, and raised hand state during meetings
  • Participant Management: See who's in the call with host identification
  • Meeting Cleanup: Automatic resource cleanup on leave/disconnect

💬 Integrated Chat System

  • Workspace Chat: #general channel for team-wide communication
  • Direct Messages: Private 1:1 conversations between team members
  • Message Reactions: Quick reactions for like and haha in the current workspace chat UI
  • Unread Tracking: Badge notifications for unread messages
  • Floating UI: Non-intrusive chat bubble accessible from anywhere

🏢 Workspace Management

  • Organization-Based: Workspaces tied to Clerk Organizations
  • Member Management: Invite team members via email
  • Room Types: Create Document, Code, Whiteboard, Spreadsheet, Meeting, or Kanban rooms
  • User Activity Indicators: See active user avatars and presence while collaborating inside workspaces
  • Access Control: Room-level permissions for team members

👥 User Activity And Presence

  • Active User Avatars: Workspace surfaces show who is currently active
  • Presence Awareness: Teammates can quickly see whether others are already inside a workspace or collaboration surface
  • Collaboration Confidence: Presence indicators help teams know when it makes sense to start editing, chatting, or meeting live
  • Join Users: When joining a workspace, users can see who is already active and choose to join them in their current activity or start something new.

✅ Current Room Types

VBase currently supports these room types in workspaces:

  • Document: Rich-text collaboration, exports, and AI writing tools
  • Code: File-based coding, execution engines, terminal output, and AI assistance
  • Whiteboard: Excalidraw-based collaboration with AI diagram generation
  • Spreadsheet: Grid editing, formulas, formatting, and live collaboration
  • Meeting: Live audio/video sessions with chat, raised hands, and screen sharing
  • Kanban: Task boards with drag-and-drop workflow management

🛠️ Tech Stack

Frontend

Technology Purpose
Next.js 16 React framework with App Router
React 18 UI component library
TypeScript Type-safe development
Tailwind CSS 4 Utility-first styling
Framer Motion Smooth animations
Lucide React Beautiful icons

Backend & Database

Technology Purpose
Convex Real-time database & backend functions
Clerk Authentication & organization management

Real-Time Collaboration

Technology Purpose
Liveblocks Cursor presence, Yjs sync, real-time events
Yjs CRDT-based document collaboration
LiveKit WebRTC video/audio streaming

Editors & Tools

Technology Purpose
vbase-rce Our own experimental RCE engine
Tiptap Rich text document editing
CodeMirror Code editing with syntax highlighting
Excalidraw Whiteboard drawing canvas
Dnd Kit Kanban drag-and-drop interactions
Piston API An advanced & secured public RCE engine API

🏗️ Architecture Overview

┌─────────────────────────────────────────────────────────────────┐
│                        CLIENT (Next.js)                         │
├─────────────────────────────────────────────────────────────────┤
│  ClerkProvider → ConvexProvider → LiveblocksProvider            │
│                                                                 │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐           │
│  │  Documents   │  │  Code Editor │  │  Whiteboard  │           │
│  │  (Tiptap)    │  │ (CodeMirror) │  │ (Excalidraw) │           │
│  └──────────────┘  └──────────────┘  └──────────────┘           │
│                                                                 │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐           │
│  │ Spreadsheets │  │    Kanban    │  │   Meetings   │           │
│  │ (Liveblocks) │  │  (Dnd Kit)   │  │  (LiveKit)   │           │
│  └──────────────┘  └──────────────┘  └──────────────┘           │
│                                                                 │
│                  ┌──────────────┐                               │
│                  │  Chat System │                               │
│                  │   (Convex)   │                               │
│                  └──────────────┘                               │
└─────────────────────────────────────────────────────────────────┘
                              │
          ┌───────────────────┼───────────────────┐
          ▼                   ▼                   ▼
   ┌─────────────┐    ┌─────────────┐    ┌─────────────┐
   │   Convex    │    │  Liveblocks │    │   LiveKit   │
   │  (Database) │    │   (Sync)    │    │   (Video)   │
   └─────────────┘    └─────────────┘    └─────────────┘

Data Flow

  • Persistent Data → Convex: Users, workspaces, rooms, chat messages, documents, code-file metadata, whiteboards, spreadsheets, kanban boards, and meetings
  • Ephemeral Data → Liveblocks: Cursor positions, editor state with Yjs, live presence, and spreadsheet collaboration state
  • Video/Audio → LiveKit: Real-time media streaming for meeting rooms

📁 Project Structure

vbase/
├── app/                          # Next.js App Router
│   ├── api/                      # API routes
│   │   ├── generate-code/        # Code AI generation
│   │   ├── generate-diagram/     # Whiteboard AI diagram generation
│   │   ├── generate-doc-ai/      # Document AI actions
│   │   ├── liveblocks-auth/      # Liveblocks authentication
│   │   ├── livekit/              # LiveKit token generation
│   │   └── leave-meeting/        # Meeting cleanup endpoint
│   ├── dashboard/                # Dashboard pages
│   │   ├── page.tsx              # Workspace list
│   │   └── invitations/          # Pending invitations
│   └── workspace/[workspaceId]/  # Workspace pages
│       └── room/[roomId]/        # Room type routes
│           ├── document/         # Document editor
│           ├── code/             # Code editor
│           ├── spreadsheet/      # Spreadsheet editor
│           ├── kanban/           # Kanban board
│           ├── whiteboard/       # Whiteboard canvas
│           └── meeting/          # Video conferencing
├── components/                   # React components
│   ├── chat/                     # Chat system components
│   ├── code/                     # Code editor components
│   ├── document/                 # Document editor components
│   ├── spreadsheet/              # Spreadsheet room components
│   ├── kanban/                   # Kanban board components
│   ├── meeting/                  # Video meeting components
│   ├── rooms/                    # Room management
│   ├── whiteboard/               # Whiteboard components
│   └── ui/                       # Shared UI primitives
├── convex/                       # Convex backend
│   ├── schema.ts                 # Database schema
│   ├── users.ts                  # User operations
│   ├── workspaces.ts             # Workspace operations
│   ├── rooms.ts                  # Room operations
│   ├── documents.ts              # Document operations
│   ├── codeFiles.ts              # Code file operations
│   ├── whiteboards.ts            # Whiteboard operations
│   ├── spreadsheets.ts           # Spreadsheet operations
│   ├── kanban.ts                 # Kanban operations
│   ├── meetings.ts               # Meeting operations
│   ├── channels.ts               # Chat channels
│   └── messages.ts               # Chat messages
├── lib/                          # Utility functions
│   ├── piston.ts                 # Piston RCE integration
│   └── vbase-rce.ts              # Custom RCE integration
├── providers/                    # Context providers
│   ├── convex-client-provider.tsx
│   ├── liveblocks-provider.tsx
│   └── livekit-provider.tsx
└── liveblocks.config.ts          # Liveblocks type definitions

🚀 Getting Started

Prerequisites

1. Clone the Repository

git clone https://github.com/your-username/vbase.git
cd vbase

2. Install Dependencies

npm install

3. Configure Environment Variables

Create a .env.local file in the root directory:

# Convex
CONVEX_DEPLOYMENT=your_convex_deployment
NEXT_PUBLIC_CONVEX_URL=https://your-deployment.convex.cloud

# Clerk
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_xxxxx
CLERK_SECRET_KEY=sk_test_xxxxx

# Clerk Redirect URLs
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up
NEXT_PUBLIC_CLERK_SIGN_IN_FALLBACK_REDIRECT_URL=/dashboard
NEXT_PUBLIC_CLERK_SIGN_UP_FALLBACK_REDIRECT_URL=/dashboard
NEXT_PUBLIC_CLERK_SIGN_IN_FORCE_REDIRECT_URL=/dashboard
NEXT_PUBLIC_CLERK_SIGN_UP_FORCE_REDIRECT_URL=/dashboard

# Liveblocks
NEXT_PUBLIC_LIVEBLOCKS_PUBLIC_KEY=pk_xxxxx
LIVEBLOCKS_SECRET_KEY=sk_xxxxx

# LiveKit
NEXT_PUBLIC_LIVEKIT_URL=wss://your-project.livekit.cloud
LIVEKIT_API_KEY=APIxxxxx
LIVEKIT_API_SECRET=xxxxx

# Custom RCE (Optional)
NEXT_PUBLIC_VBASE_RCE_BASE_URL=https://your-rce-server.com
NEXT_PUBLIC_VBASE_RCE_API_SECRET=your_secret

4. Set Up Convex

# Initialize Convex (first time only)
npx convex dev --once

# This will create the database schema and functions

5. Configure Clerk Webhooks

In your Clerk Dashboard:

  1. Go to WebhooksAdd Endpoint
  2. Set the endpoint URL to: https://your-convex-url.convex.site/clerk
  3. Subscribe to events: user.created, user.updated, organization.created

6. Run the Development Servers

Terminal 1 - Convex Backend:

npx convex dev

Terminal 2 - Next.js Frontend:

npm run dev

⚠️ Both servers must run simultaneously for the app to work properly.

7. Open the Application

Navigate to http://localhost:3000


📊 Workspace Limits

Resource Limit
Workspaces per User 5 max
Rooms per Workspace 10 max
Meeting Rooms per Workspace 1 max
Concurrent Meetings per Meeting Room 3 max
Members per Workspace 10 max

🧪 Available Scripts

# Development
npm run dev          # Start Next.js dev server
npx convex dev       # Start Convex dev server

# Production
npm run build        # Build for production
npm run start        # Start production server

# Code Quality
npm run lint         # Run ESLint

🔮 Roadmap

  • Context-Aware Chat - File-specific chat sidebars
  • 2D Spatial Dashboard - Gather.town-inspired navigation
  • Meeting Enhancements - Polls, richer moderation tools, and deeper in-call controls
  • Spreadsheet Enhancements - More advanced formulas and polish beyond the MVP grid editor
  • Role-Based Access Control - Granular room permissions

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


🙏 Acknowledgments

All thanks to these amazing projects and services:

  • Convex for the incredible real-time database
  • Clerk for seamless authentication & organization management
  • Liveblocks for collaboration infrastructure
  • LiveKit for WebRTC video streaming
  • Excalidraw for the whiteboard canvas
  • Tiptap for the rich text editor
  • CodeMirror for the code editor
  • Piston for robust & secure RCE engine

👥 Contributors

Raiyan Muhtasim

Raiyan Muhtasim

GitHub LinkedIn

Abdullah Al Musaddiq Rafi

Abdullah Al Musaddiq Rafi

GitHub LinkedIn

Md. Mahbub Ur Rahman

Md. Mahbub Ur Rahman

GitHub LinkedIn


Built with ❤️ for teams who believe collaboration should be seamless

"The best ideas emerge when teams can truly work together."

Made with Love University Project

About

Collaborative virtual workspace for your team

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 98.3%
  • CSS 1.2%
  • JavaScript 0.5%