I've been building CollabFlow, an open-source full-stack collaboration platform that combines project management, team communication, real-time collaboration, and AI-powered document search in one application.
π₯ Watch the full walkthrough:
https://youtu.be/hdHMNbWybhE
π Try the live demo:
https://collabflow-web.vercel.app/landing
What is CollabFlow?
CollabFlow is designed to give teams a shared workspace where they can manage projects and tasks, communicate in real time, and search their documents using AI.
The goal wasn't just to build another CRUD application.
I wanted to explore how real-time systems, background processing, AI/RAG, authentication, and a multi-tenant architecture could work together in a single full-stack application.
Tech Stack
- Frontend: Next.js, TypeScript
- Backend: Express.js, Node.js
- Database: MongoDB
- Real-time: Socket.IO, Redis Pub/Sub
- AI: LangChain, LangGraph, OpenAI Embeddings
- Vector Database: Qdrant
- Background Jobs: BullMQ, Redis
- Authentication: JWT
- Deployment: Vercel
β‘ Real-Time Collaboration
One of the main engineering challenges was building the real-time communication layer.
CollabFlow supports:
- π¬ Real-time messaging
- β¨οΈ Typing indicators
- β Read receipts
- π’ User presence
- π Reconnect-aware connections
I used Socket.IO for real-time communication and Redis Pub/Sub to distribute events across the backend.
The system was designed to support 50+ concurrent collaborators per workspace.
π€ AI-Powered Document Search
I didn't want AI to simply be a chatbot sitting beside the application.
Instead, I integrated AI directly into the document workflow.
The pipeline uses:
LangChain β LangGraph β OpenAI Embeddings β Qdrant
Users can upload documents and later search them using natural language.
The system converts the documents into embeddings and stores them in Qdrant, allowing semantic search across workspace documents.
π Asynchronous Document Processing
Document processing shouldn't block the main API request.
So I moved the processing pipeline into background jobs using BullMQ + Redis.
The workflow looks like this:
text
Upload Document
β
Create Background Job
β
BullMQ Queue
β
Process Document
β
Generate Embeddings
β
Store Vectors in Qdrant
β
Available for AI Search
Top comments (0)