Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

280 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Collaborate

An interactive academic peer-learning platform for skill exchange and collaborative growth.

Collaborate is a unified academic platform designed to connect students and faculty through peer-to-peer learning and mentorship. By facilitating skill exchanges, scheduling 1:1 or group sessions, and providing real-time communication tools, the platform creates an engaging environment for continuous academic and professional development.

🌟 Key Features

Core Academic Features

  • Role-Based Access Control: Distinct experiences and permissions tailored for undergraduates, postgraduates, faculty, and administrators.
  • Public Portfolios: Dynamic user profiles showcasing academic achievements, taught/learned skills, badges, and peer ratings.
  • Resource Sharing: Dedicated spaces to upload, categorize, and discover academic resources and study materials.

Skill Exchange

  • Teach & Learn Mapping: Users can list subjects they are proficient in (to teach) and subjects they need help with (to learn).
  • Intelligent Matching: Discover peers and mentors whose skills align with your learning goals.

Sessions & Booking

  • Session Scheduling: Seamlessly book 1:1 mentoring or join group study sessions based on real-time availability.
  • Live Video Rooms: Integrated WebRTC-powered virtual meeting rooms for remote learning and collaboration.
  • Real-time Chat: Instant messaging and global chat capabilities to facilitate quick academic discussions.

Gamification

  • Credits System: Earn platform credits by hosting sessions or contributing resources, which can be spent to book learning sessions.
  • Badges & Achievements: Unlock visual badges for reaching teaching milestones and maintaining high ratings.
  • Leaderboards: Campus-wide leaderboards highlighting top contributors, fostering a healthy academic community.

Admin & Moderation

  • Platform Analytics: High-level dashboards for administrators to monitor platform health and engagement.
  • User & Content Management: Tools to oversee user roles, moderate shared resources, and resolve disputes.

💻 Tech Stack

  • Frontend: React, Redux, Vite
  • Backend: Node.js, Express
  • Database: Supabase (PostgreSQL)
  • Realtime Communication: Socket.IO
  • Video Conferencing: WebRTC
  • Authentication: JWT-based secure authentication

🏗️ Architecture Overview

Collaborate follows a decoupled client-server architecture. The frontend application (React/Vite) acts as the primary user interface, managing local state via Redux and communicating asynchronously with the backend over HTTP REST APIs. The backend (Express) serves as the core processing engine, handling business logic, authenticating requests, and interfacing with the Supabase PostgreSQL database for persistent data storage. For real-time features like instant messaging and live session events, the client and server maintain persistent duplex connections via Socket.IO, while live video feeds are handled directly peer-to-peer (or via a signaling server) using WebRTC.

🚀 Getting Started

Follow these instructions to set up a local development environment.

Prerequisites

  • Node.js (v18 or higher recommended)
  • npm or yarn
  • A Supabase project setup

Installation Steps

  1. Clone the repository:

    git clone https://github.com/your-org/collaborate.git
    cd collaborate
  2. Install dependencies for the backend:

    cd server
    npm install
  3. Install dependencies for the frontend:

    cd ../client
    npm install
  4. Configure Environment Variables:

    • Navigate to the server/ directory and duplicate the .env.example file to create a .env file.
    • Navigate to the client/ directory and duplicate the .env.example file to create a .env file.
    • Fill in the necessary placeholder values (e.g., database connection strings, JWT secrets, Socket URLs) as provided by your environment setup.
  5. Run the application:

    • Start the backend server:
      # In the server/ directory
      npm run dev
    • Start the frontend development server:
      # In the client/ directory
      npm run dev
  6. Access the app: Open your browser and navigate to the localhost port specified by your frontend console output (typically http://localhost:5173).

📁 Folder Structure

collaborate/
├── client/                 # React frontend application
│   ├── public/             # Static assets
│   ├── src/                # Frontend source code (components, pages, store, etc.)
│   └── package.json
├── server/                 # Node.js/Express backend application
│   ├── src/                # Backend source code (routes, controllers, services, etc.)
│   └── package.json
├── docs/                   # Project documentation and architectural diagrams
├── README.md
└── .gitignore

🤝 Contributing

We welcome contributions from the community! To contribute:

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

Please ensure your code adheres to the existing style guidelines and passes all relevant tests before submitting a PR.

📄 License

Distributed under the MIT License. See LICENSE for more information.

📬 Contact / Support

For questions, support, or feedback, please reach out to the development team at [support@placeholder-domain.com] or open an issue on the GitHub repository.

Releases

Packages

Contributors

Languages