Skip to content

srinivas-batthula/coflow

Repository files navigation

πŸš€ CoFlow

Built for Hackathons. Ready for Teams. Powered by Realtime.

~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 Links

Logo

Logo

✨ Key Features

  • βœ… 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

πŸ” Feature Workflows

1. Automated Hackathons Sync

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

2. Collaborative Tasks flow

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

3. Real-time group chat

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

4. Push Notifications (for offline users)

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

πŸ›  Tech Stack

  • 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)

πŸ—οΈ Project Structure

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

βš™οΈ Local Setup Instructions

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. Manual Setup (Without Docker)

At Repo-root

1. npm install

For backend

1. cd backend
2. npm install
3. npm start

For frontend

1. cd frontend
2. npm install
3. npm run dev

2. Run with Docker Compose

Prerequisites

- Install Docker & Docker Compose

Start the app

1. docker-compose up --build

Before Committing your changes to GitHub

--->>> Follow the standards mentioned in coflow/test_instructions.txt file for successful CI/CD checks.

πŸ“ License

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

πŸ‘₯ Contributors

About

Live Site

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages