Skip to content

ZIDAN44/VirtualStudyGroup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Virtual Study Group

Virtual Study Group is a collaborative platform designed to enable users to create, join, and manage study groups, share resources, and participate in real-time discussions. It ensures scalability and easy maintenance, offering robust features for group management, resource sharing, event participation, and real-time communication.


Table of Contents

  1. Features
  2. Screenshots
  3. Installation
  4. MinIO Bucket Policy
  5. Chat Server Branch
  6. Credits
  7. License
  8. Acknowledgments

Features

1. Core Functionalities

Group Management

  • Create, join, and explore study groups.
  • Manage group members, including role assignments (Admin, Co-admin, Member).
  • Pin and unpin groups for quick access.
  • Handle join requests and ban/unban members.

User Profile

  • View and edit personal profiles, including uploading profile pictures.
  • Track points and profile completion progress.
  • View other users’ profiles.

Resource Sharing

  • Upload and share resources within groups.
  • Vote on resources to highlight useful content.
  • Manage and delete uploaded resources.

Events

  • Create and participate in group-specific events.
  • RSVP to events with options: Yes, No, Maybe.
  • Handle recurring events and set reminders.

2. Real-Time Communication

WebSocket-Based Chat

  • Real-time messaging for group discussions.
  • Support for structured messages (text and resources).
  • Powered by a dedicated chat server using PHP and Ratchet.

3. Comprehensive Admin Tools

  • Manage permissions for Co-admins.
  • Monitor and moderate group activities.
  • Audit user activity and resource voting.

Screenshots

Dashboard Dashboard
Group Creation Create Group
Event Participation Events
Real-Time Chat Chat
User Profile User Profile
All Screenshots
  • All Group Members
  • Banned Group Members
  • Edit Group Info
  • Group
  • Group Info
  • Group Leave Action for Admin
  • Group Menu Modal
  • Home
  • Login
  • Manage Co-Admin Permissions
  • Manage Group Members
  • Manage Join Requests
  • Pin/Unpin Group Modal
  • Register
  • Resource Up-Vote
  • User Point History
  • User Profile (Others)
  • Database Tables
  • Database Triggers
  • MinIO Object Store
  • MinIO Object Store Bucket

Installation

1. Prerequisites

  • Backend: PHP 7.4 or higher.
  • Database: MySQL/MariaDB.
  • Object Storage: MinIO (for resource and profile picture uploads).
  • WebSocket: Ratchet (for real-time chat).
  • Composer: Dependency manager for PHP.

2. Steps to Install

  1. Clone the repository:

    git clone https://github.com/ZIDAN44/VirtualStudyGroup.git
    cd VirtualStudyGroup
  2. Configure the .env file:

    cp .env.sample .env
    # Update database and MinIO credentials
  3. Import the database schema:

    mysql -u [username] -p [database_name] < database/studygroup(schema).sql
  4. Install dependencies:

    composer install
  5. Start the WebSocket server:

    php chat_server.php
  6. Run the project:

    • Use your preferred local server setup (e.g., Apache, Nginx, or PHP’s built-in server).

MinIO Bucket Policy

Purpose

The bucket_policy.json file ensures that the required buckets in MinIO have the correct read and write permissions for smooth operation. This policy:

  • Grants public read access for uploaded resources (e.g., profile pictures, group resources).
  • Restricts write access to authenticated users.

How to Use

  1. Configure the bucket policy in MinIO:

    mc alias set local http://localhost:9000 ACCESS_KEY SECRET_KEY
    mc policy set-json bucket_policy.json local/[bucket-name]
  2. Replace [bucket-name] with your bucket's name.


Chat Server

This project includes a real-time chat server implemented in the chat-server branch. The server is powered by Ratchet for WebSocket-based communication. Please visit the chat-server README for detailed setup instructions and usage examples.


Credits

Special thanks to the contributors for making this project possible:


License

This project is licensed under the MIT License.


Acknowledgments

  • Ratchet: WebSocket library.
  • MinIO: Object storage for resources.
  • All contributors to the Virtual Study Group project.