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.
- Features
- Screenshots
- Installation
- MinIO Bucket Policy
- Chat Server Branch
- Credits
- License
- Acknowledgments
- 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.
- View and edit personal profiles, including uploading profile pictures.
- Track points and profile completion progress.
- View other users’ profiles.
- Upload and share resources within groups.
- Vote on resources to highlight useful content.
- Manage and delete uploaded resources.
- Create and participate in group-specific events.
- RSVP to events with options: Yes, No, Maybe.
- Handle recurring events and set reminders.
- Real-time messaging for group discussions.
- Support for structured messages (text and resources).
- Powered by a dedicated chat server using PHP and Ratchet.
- Manage permissions for Co-admins.
- Monitor and moderate group activities.
- Audit user activity and resource voting.
- 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.
-
Clone the repository:
git clone https://github.com/ZIDAN44/VirtualStudyGroup.git cd VirtualStudyGroup
-
Configure the
.env
file:cp .env.sample .env # Update database and MinIO credentials
-
Import the database schema:
mysql -u [username] -p [database_name] < database/studygroup(schema).sql
-
Install dependencies:
composer install
-
Start the WebSocket server:
php chat_server.php
-
Run the project:
- Use your preferred local server setup (e.g., Apache, Nginx, or PHP’s built-in server).
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.
-
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]
-
Replace
[bucket-name]
with your bucket's name.
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.
Special thanks to the contributors for making this project possible:
This project is licensed under the MIT License.
- Ratchet: WebSocket library.
- MinIO: Object storage for resources.
- All contributors to the Virtual Study Group project.