~CoFlow is a real-time team collaboration tool built for developers and hackathon squads, offering live task assignment, group chat and progress tracking. With intelligent scheduling, offline-friendly notifications, and Redis-powered background workers, it keeps teams in sync β even when theyβre not online.
- π Live Site: coflow.netlify.app
- π API Docs: coflow.onrender.com/api-docs
- β Create, Join, and Manage hackathon teams
- π Authentication with JWT and Google & GitHub OAuth
- π§βπ» Realtime Collaborative Task management and status tracking
- π¬ Real-time team chat using Socket.IO
- π² Push-Notifications for offline-users & an installable, offline-capable PWA web-app β ensuring team members stay connected with updates, even in Offline
- π Automatically scrape and store recent hackathon listings every 24-hours using node-cron & Playwright & GitHub Actions
GitHub-Actions workflow (Or node-cron) is triggered every day at 6:30 AM IST
β¬
Sends 3-quick-pings to Render-Server (/test) with 5s gap to wake it up (As it is deployed under *free-tier*)
β¬
Waits for 1-minute to ensure Server is fully live/up
β¬
Scrape request sent to `/api/hackathons` to scrape data from UnStop & Devpost with various filters
β¬
Scraped hackathons data is stored in MongoDB
β¬
If failure β fallback data is stored in JSON file temporarily
Leader creates and assigns a new task for a member
β¬
The member submits the task after completion
β¬
Leader approves / re-assigns the task with comments
A user types a message in a team
β¬
`User-X is typing` indicator is shown for all other members
β¬
User sends a message
β¬
That message is broadcasted to all members of that team
β¬
Received members will be marked as 'seen' in real-time
For messages or task updates β a payload with senderId is pushed into Redis-Queue
β¬
Background worker always listens to the Redis-Queue
β¬
Worker pops the notification details from the Queue
β¬
Sends a Push-Notification to that offline user
- Frontend: Next.js, React.js, Zustand, Tailwind CSS, Socket.IO Client, IndexedDB
- Backend: Node.js, Express.js, Socket.io, node-cron, Playwright(Webscraping)
- Database: MongoDB Atlas + Mongoose ODM
- API's: Devpost API
- API Docs: Swagger UI
- Auth: JWT + Google & GitHub OAuth
- Push Notifcations: Web-Push, Redis Queue
- Testing: Jest, SuperTest
- Deployment: Docker, Render, Netlify, GitHub-Actions(CI/CD)
coflow/
βββ .github/workflows/
β βββ trigger-scraper.yml
β βββ backend-deploy.yml
β βββ frontend-deploy.yml
βββ backend/
β βββ controllers/
β βββ models/
β βββ routes/
β βββ services/
β βββ socket/
β βββ utils/
β βββ workers/
β βββ scripts/
β βββ tests/
β βββ app.js
β βββ server.js
β βββ Dockerfile
β βββ config.env
β
βββ frontend/
β βββ app/
β βββ components/
β βββ public/
β βββ store/
β βββ styles/
β βββ utils/
β βββ Dockerfile
β βββ .env
βββ LICENSE
βββ docker-compose.yml
βββ .prettierrc
βββ eslint.config.mjs
βββ Readme.md
git clone https://github.com/srinivas-batthula/coflow
Setup 'config.env in the root dir 'backend/' based on 'config.env.example'
Setup '.env' in the root dir 'frontend/' based on '.env.example'
1. npm install
1. cd backend
2. npm install
3. npm start
1. cd frontend
2. npm install
3. npm run dev
- Install Docker & Docker Compose
1. docker-compose up --build
--->>> Follow the standards mentioned in coflow/test_instructions.txt file for successful CI/CD checks.
This project is licensed under the MIT License - see the LICENSE file for details.
- Srinivas Batthula @srinivas-batthula
- Akash Kyadari @akash-kyadari
