Skip to content

Repository files navigation

Revo is an open-source real-time collaboration platform.


Revo Banner

🚀 Revo

Connect. Collaborate. Create.

A modern real-time collaboration platform for teams. Chat instantly, share files, and work together seamlessly — all in one place.

Next.jsTypeScriptTailwind CSSPrismaLicense

Live Demo · Report Bug · Request Feature


📖 Table of Contents


🌟 Overview

Revo is a next-generation team collaboration platform designed for modern remote and hybrid teams. Built with cutting-edge technologies, it offers real-time messaging, threaded discussions, file sharing, and AI-powered features — all wrapped in a beautiful, responsive interface.

Why Revo?

  • Blazing Fast — Built on Next.js 16 with React 19 for optimal performance
  • 🔒 Secure — Enterprise-grade security with Arcjet protection and Kinde authentication
  • 🤖 AI-Powered — Integrated AI assistance powered by OpenRouter
  • 🌐 Real-time — WebSocket-powered instant messaging via PartyKit
  • 📱 Responsive — Beautiful UI that works seamlessly across all devices

✨ Features


Channel Management
Create organized spaces for teams, projects, or topics

Team Collaboration
Invite teammates and collaborate in real-time

Instant Messaging
Send messages, share ideas, and stay connected

Threaded Discussions
Keep detailed conversations organized with threads

Reactions & Engagement
React with emojis to quickly respond and engage

AI Assistant
Get help with writing, summarizing, and more

File Sharing
Upload and share files seamlessly with UploadThing

Rich Text Editor
Format messages with TipTap's powerful editor

Dark/Light Mode
Beautiful themes that adapt to your preference

🛠 Tech Stack

Core Framework

TechnologyPurposeVersion
Next.jsReact Framework16.0.10
ReactUI Library19.2.0
TypeScriptType Safety5.x

Styling & UI

TechnologyPurpose
Tailwind CSSUtility-first CSS
shadcn/uiComponent Library
Radix UIHeadless Components
Framer MotionAnimations
LucideIcons

Backend & Database

TechnologyPurpose
PrismaORM
PostgreSQLDatabase
NeonServerless Postgres
oRPCType-safe API Layer

Real-time & Infrastructure

TechnologyPurpose
PartyKitReal-time WebSockets
Cloudflare WorkersEdge Runtime
WranglerCF CLI

Authentication & Security

TechnologyPurpose
KindeAuthentication
ArcjetSecurity & Rate Limiting

AI & Content

TechnologyPurpose
AI SDKAI Integration
OpenRouterAI Model Gateway
TipTapRich Text Editor
UploadThingFile Uploads

Developer Experience

TechnologyPurpose
TanStack QueryData Fetching
ZodValidation
React Hook FormForm Management
SonnerToast Notifications

🏗 Architecture

┌─────────────────────────────────────────────────────────────────────────────┐
│ CLIENT │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Next.js 16 App Router │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌────────────┐ │ │
│ │ │ React 19 │ │ TanStack │ │ shadcn/ui │ │ Motion │ │ │
│ │ │ Components │ │ Query │ │ + Radix UI │ │ Animations │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ └────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
│
┌─────────────────┼─────────────────┐
▼ ▼ ▼
┌───────────────────┐ ┌───────────────┐ ┌───────────────────┐
│ oRPC Client │ │ PartySocket │ │ UploadThing │
│ (Type-safe) │ │ (Real-time) │ │ (File Upload) │
└─────────┬─────────┘ └───────┬───────┘ └─────────┬─────────┘
│ │ │
┌─────────────────┼───────────────────┼───────────────────┼─────────────────┐
│ │ │ │ EDGE │
│ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ Cloudflare Workers │ │
│ │ ┌─────────────────┐ ┌─────────────────┐ ┌──────────────────┐ │ │
│ │ │ PartyServer │ │ Wrangler │ │ Edge Runtime │ │ │ │ │ │ (WebSocket) │ │ (Deployment) │ │ (Low Latency) │ │ │
│ │ └─────────────────┘ └─────────────────┘ └──────────────────┘ │ │
│ └──────────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────────────-┘
│
┌─────────────────────────────────────┼────────────────────────────────────┐
│ │ SERVER │
│ ┌──────────────────────────────────┼───────────────────────────────┐ │
│ │ Next.js API Layer │ │
│ │ ┌─────────────────┐ ┌─────────────────┐ ┌──────────────────┐ │ │
│ │ │ oRPC Server │ │ Arcjet │ │ Kinde Auth │ │ │
│ │ │ (Procedures) │ │ (Security) │ │ (Authentication) │ │ │
│ │ └────────┬────────┘ └─────────────────┘ └──────────────────┘ │ │
│ └───────────┼──────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ Prisma ORM │ │
│ │ ┌─────────────────┐ ┌─────────────────┐ ┌──────────────────┐ │ │
│ │ │ Models │ │ Migrations │ │ Query Builder │ │ │
│ │ └────────┬────────┘ └─────────────────┘ └──────────────────┘ │ │
│ └───────────┼──────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ Neon PostgreSQL │ │
│ │ ┌─────────────────┐ ┌─────────────────┐ ┌──────────────────┐ │ │
│ │ │ Serverless │ │ Branching │ │ Auto-scaling │ │ │
│ │ └─────────────────┘ └─────────────────┘ └──────────────────┘ │ │
│ └──────────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────┼────────────────────────────────────┐
│ │ AI SERVICES │
│ ┌──────────────────────────────────┼───────────────────────────────┐ │
│ │ ┌─────────────────┐ ┌─────────────────┐ ┌──────────────────┐ │ │
│ │ │ AI SDK │ │ OpenRouter │ │ LLM Models │ │ │
│ │ │ (Vercel) │ │ (Gateway) │ │ (GPT, Claude...) │ │ │
│ │ └─────────────────┘ └─────────────────┘ └──────────────────┘ │ │
│ └──────────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────────────┘

Data Flow

User Action → React Component → TanStack Query → oRPC Client
│
▼
oRPC Server (API)
│
┌─────────────────────────────────┼─────────────────────────────────┐
│ │ │
▼ ▼ ▼
Arcjet (Security) Kinde (Auth) AI SDK (OpenRouter)
│ │ │
└─────────────────────────────────┼─────────────────────────────────┘
│
▼
Prisma ORM
│
▼
Neon PostgreSQL

🚀 Getting Started

Prerequisites

Ensure you have the following installed:

  • Node.js 20.x or higher
  • pnpm (recommended) or npm/yarn
  • Git

Installation

  1. Clone the repository
git clone https://github.com/Devsethi3/revo.git
cd revo
  1. Install dependencies
pnpm install
# or
npm install
  1. Set up environment variables
cp .env.example .env.local
  1. Set up the database
pnpm prisma generate
pnpm prisma db push
  1. Run the development server
pnpm dev
  1. Open your browser

Navigate to http://localhost:3000


📁 Project Structure

revo/
├── app/ # Next.js App Router
│ ├── (auth)/ # Authentication routes
│ ├── (main)/ # Main application routes
│ ├── api/ # API routes
│ │ ├── orpc/ # oRPC handlers
│ │ ├── uploadthing/ # File upload handlers
│ │ └── ai/ # AI endpoints
│ ├── layout.tsx # Root layout
│ └── page.tsx # Landing page
│
├── components/ # React components
│ ├── ui/ # shadcn/ui components
│ ├── auth/ # Authentication components
│ ├── chat/ # Chat components
│ ├── channels/ # Channel components
│ ├── editor/ # TipTap editor components
│ └── theme/ # Theme provider
│
├── lib/ # Utility functions
│ ├── orpc/ # oRPC configuration
│ │ ├── client.ts # Client setup
│ │ ├── server.ts # Server setup
│ │ └── router.ts # API router
│ ├── prisma.ts # Prisma client
│ ├── auth.ts # Kinde helpers
│ ├── ai.ts # AI SDK setup
│ └── utils.ts # Utility functions
│
├── server/ # Server-side code
│ ├── procedures/ # oRPC procedures
│ └── party/ # PartyKit server
│
├── prisma/ # Database
│ └── schema.prisma # Database schema
│
├── public/ # Static assets
│ ├── revo-showcase.png # OG image
│ └── favicon.ico # Favicon
│
├── types/ # TypeScript types
│
├── .env.example # Environment template
├── next.config.ts # Next.js config
├── tailwind.config.ts # Tailwind config
├── tsconfig.json # TypeScript config
├── wrangler.toml # Cloudflare config
└── package.json # Dependencies

🔐 Environment Variables

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

# ===========================================# DATABASE# ===========================================DATABASE_URL="postgresql://user:password@host:5432/revo?sslmode=require"# ===========================================# KINDE AUTHENTICATION# ===========================================KINDE_CLIENT_ID="your_kinde_client_id"KINDE_CLIENT_SECRET="your_kinde_client_secret"KINDE_ISSUER_URL="https://your-domain.kinde.com"KINDE_SITE_URL="http://localhost:3000"KINDE_POST_LOGOUT_REDIRECT_URL="http://localhost:3000"KINDE_POST_LOGIN_REDIRECT_URL="http://localhost:3000/workspace"KINDE_DOMAIN=https://your-domain.kinde.comKINDE_MANAGEMENT_CLIENT_ID="your_kinde_management_id"KINDE_MANAGEMENT_CLIENT_SECRET="your_kinde_management_secret"# ===========================================# UPLOADTHING# ===========================================UPLOADTHING_TOKEN="your_uploadthing_token"# ===========================================# AI / OPENROUTER# ===========================================OPENROUTER_LLM_KEY="your_openrouter_api_key"# ===========================================# ARCJET (Security)# ===========================================ARCJET_KEY="your_arcjet_key"# ===========================================# APP# ===========================================NEXT_PUBLIC_APP_URL="http://localhost:3000"

🗄 Database Setup

Using Neon (Recommended)

  1. Create a free account at Neon
  2. Create a new project
  3. Copy the connection string
  4. Add it to your .env.local file

Run Migrations

# Generate Prisma client
pnpm prisma generate
# Push schema to database
pnpm prisma db push
# Open Prisma Studio (optional)
pnpm prisma studio

🚀 Deployment

Vercel (Recommended)

  1. Push your code to GitHub
  2. Import your repository on Vercel
  3. Add environment variables
  4. Deploy!
# Or use Vercel CLI
npm i -g vercel
vercel

Cloudflare Workers (PartyKit)

# Login to Cloudflare
pnpm dlx wrangler login
# Deploy wrangler server
pnpm dlx wrangler deploy

🧪 Scripts

CommandDescription
pnpm devStart development server
pnpm buildBuild for production
pnpm startStart production server
pnpm lintRun ESLint
pnpm prisma studioOpen Prisma Studio
pnpm prisma generateGenerate Prisma client
pnpm prisma db pushPush schema to database

🤝 Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch
    git checkout -b feature/amazing-feature
  3. Commit your changes
    git commit -m 'Add amazing feature'
  4. Push to the branch
    git push origin feature/amazing-feature
  5. Open a Pull Request

Code Style

  • Follow the existing code style
  • Use TypeScript strictly
  • Write meaningful commit messages
  • Add comments for complex logic

📄 License

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


👨‍💻 Author

Dev Prasad Sethi

GitHubTwitter


⭐ Star this repo if you find it useful!

Made with ❤️ and ☕

LICENSE (MIT)

MIT License
Copyright (c) 2024 Dev Prasad Sethi
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

About

An open-source real-time collaboration platform built for chat, shared workspaces, and live team updates.

Topics

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages