{"id":27076206,"url":"https://github.com/darshan-vijay/study-group-manager","last_synced_at":"2026-04-02T02:49:31.035Z","repository":{"id":263517970,"uuid":"889181160","full_name":"darshan-vijay/Study-group-manager","owner":"darshan-vijay","description":"Studious - Study group manager, Match students with similar academic interests and schedules for collaborative learning. Provide features like real-time chat, email notifications, friend management, and help with group events.","archived":false,"fork":false,"pushed_at":"2025-03-28T06:41:49.000Z","size":10349,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-28T07:22:49.895Z","etag":null,"topics":["firebase","google-cloud-platform","kubernetes","nodejs","rabbit","reactjs","redis","terraform"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/darshan-vijay.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-15T19:12:52.000Z","updated_at":"2025-03-28T06:41:52.000Z","dependencies_parsed_at":"2024-12-05T01:26:02.047Z","dependency_job_id":"4a519561-a865-4377-b463-f93c4127d6ed","html_url":"https://github.com/darshan-vijay/Study-group-manager","commit_stats":null,"previous_names":["darshan-vijay/study-group-manager"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darshan-vijay%2FStudy-group-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darshan-vijay%2FStudy-group-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darshan-vijay%2FStudy-group-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darshan-vijay%2FStudy-group-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/darshan-vijay","download_url":"https://codeload.github.com/darshan-vijay/Study-group-manager/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247419616,"owners_count":20936009,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["firebase","google-cloud-platform","kubernetes","nodejs","rabbit","reactjs","redis","terraform"],"created_at":"2025-04-06T00:29:00.862Z","updated_at":"2025-12-30T19:15:13.867Z","avatar_url":"https://github.com/darshan-vijay.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Study Group Manager – Studious\n\n\u003e **Team Members:**  \n\u003e Darshan Vijayaraghavan, Ruban Chakaravarthi, Vignesh Kumar Karthikeyan\n\n---\n\n## Demo Video\n\n[![Studious Demo](https://img.youtube.com/vi/hWxHUJqYAns/0.jpg)](https://www.youtube.com/watch?v=hWxHUJqYAns)  \n🔗 [Watch Full Demo](https://www.youtube.com/watch?v=hWxHUJqYAns)\n\n---\n\n## Project Goals\n\nStudious is a cloud-native web application that helps students form and manage study groups easily and efficiently. It supports:\n\n- Student matching based on academic interests and availability\n- Creation of online (Zoom) or offline study groups\n- Real-time chat and private messaging\n- Group event management and reminders\n- Email notifications and friend management\n\n---\n\n## Architecture Overview\n\n\u003e **Microservice-based architecture deployed on Google Cloud using Kubernetes**\n\n### Architecture Diagram\n\n![Architecture Diagram](./Architecture-diagram.jpg)\n\n### Key Technologies\n\n| Component      | Technology               | Description                                |\n| -------------- | ------------------------ | ------------------------------------------ |\n| Frontend       | React.js (GKE)           | Dynamic and responsive user interface      |\n| Backend        | Node.js + REST API (GKE) | Handles authentication, groups, scheduling |\n| Real-time Chat | Socket.IO + Redis (GKE)  | Enables real-time messaging                |\n| Async Tasks    | RabbitMQ (GCP VM)        | Background jobs like emails/uploads        |\n| Database       | Firestore                | Stores user data, groups, chat logs        |\n| Media Storage  | Google Cloud Storage     | Stores profile pictures, documents         |\n| Infrastructure | Terraform                | Automates infrastructure provisioning      |\n| Orchestration  | Kubernetes (GKE)         | Manages and scales all services            |\n\n---\n\n## System Workflow\n\n1. **User Registration \u0026 Authentication** – Signup with email verification, login to dashboard\n2. **Study Group Creation** – Online/offline group creation with Zoom links for online\n3. **Group Management** – Join, leave, view upcoming events\n4. **Chat \u0026 Messaging** – Real-time private/group chat via WebSockets + Redis\n5. **Email Notifications** – Sent via RabbitMQ workers\n6. **Media Uploads** – Profile picture compression and upload to Cloud Storage\n\n---\n\n## Setup Instructions\n\n### Prerequisites\n\n- Google Cloud account\n- Terraform Cloud account\n- Docker\n- Google Cloud SDK (gcloud)\n- Kubernetes CLI (kubectl)\n\n---\n\n### 1. Create Service Account in GCP\n\n- IAM \u0026 Admin \u003e Service Accounts → Create new\n- Assign roles:\n  - Compute Admin\n  - Kubernetes Engine Admin\n  - Firestore Admin\n  - Storage Admin\n- Download the JSON key\n\n---\n\n### 2. Configure Terraform Cloud\n\n- Go to Terraform Cloud\n- Create a workspace\n- Upload service account JSON as variable GOOGLE_CREDENTIALS\n\n---\n\n### 3. Deploy Infrastructure with Terraform\n\nRun the following commands:\n\n    cd terraform/\n    terraform init\n    terraform plan\n    terraform apply\n\n---\n\n### 4. Authenticate with Google Cloud CLI\n\n    gcloud auth login\n    gcloud config set project [PROJECT_ID]\n    gcloud container clusters get-credentials [CLUSTER_NAME] --zone [ZONE]\n\n---\n\n### 5. Deploy Kubernetes Services\n\n    ./deploy-services.sh\n    kubectl get services\n\n---\n\n### 6. Configure \u0026 Deploy Kubernetes Deployments\n\n    kubectl get services\n    # Update .env files with new endpoints\n\n    ./deploy-deployments.sh\n    kubectl get deployments\n\n---\n\n### 7. (Optional) Push Docker Images\n\n    docker build -t gcr.io/[PROJECT_ID]/[IMAGE_NAME]:[TAG] .\n    docker push gcr.io/[PROJECT_ID]/[IMAGE_NAME]:[TAG]\n\n---\n\n### 8. Install RabbitMQ on VM\n\n    sudo apt-get update\n    sudo apt-get install rabbitmq-server -y\n    sudo systemctl start rabbitmq-server\n    sudo systemctl enable rabbitmq-server\n    sudo rabbitmqctl status\n\n---\n\n## Access the Application\n\n    kubectl get services | grep frontend-service\n\nVisit the external IP in your browser to access the Studious platform.\n\n---\n\n## Testing \u0026 Debugging\n\n- Integration + regression tests\n- Local testing with Minikube\n- Logging in backend + workers\n\n  kubectl logs [POD_NAME]\n\nGoogle Cloud Monitoring used for runtime errors and performance.\n\n---\n\n## Performance \u0026 Monitoring\n\n- WebSocket + Redis pub/sub for real-time chat\n- RabbitMQ for async job handling\n- Kubernetes handles:\n  - Auto-scaling\n  - Self-healing\n  - Rolling updates\n\n---\n\n## Known Limitations\n\n- Steep learning curve for Kubernetes/Terraform\n- No CI/CD pipeline (yet)\n- Redis + WebSocket scaling needs tuning\n- Cost management on cloud services\n\n---\n\n## Future Enhancements\n\n- CI/CD using GitHub Actions or Jenkins\n- AI-based group suggestions\n- Admin analytics dashboard\n- Multilingual and accessibility support\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarshan-vijay%2Fstudy-group-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdarshan-vijay%2Fstudy-group-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarshan-vijay%2Fstudy-group-manager/lists"}