{"id":13760857,"url":"https://github.com/dumbbellcode/Study-Room","last_synced_at":"2025-05-10T11:32:18.052Z","repository":{"id":40437435,"uuid":"317580974","full_name":"sudheer121/Study-Room","owner":"sudheer121","description":"[Under maintenance] Connect and study together with friends over text and voice channels, over a click of a button. Web application for chat and audio streaming.","archived":true,"fork":false,"pushed_at":"2023-10-22T06:31:56.000Z","size":16765,"stargazers_count":49,"open_issues_count":2,"forks_count":17,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-08-04T13:05:35.189Z","etag":null,"topics":["chat-application","discord","expressjs","mesh-networks","node-schedule","nodejs","peer-connection","peerjs","react","react-router","reactjs","study-room","text-channel","twilio-api","voice-channel","voice-channels","voice-chat","webrtc","websocket","websockets"],"latest_commit_sha":null,"homepage":"https://mystudyroom.netlify.app/","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/sudheer121.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}},"created_at":"2020-12-01T15:15:57.000Z","updated_at":"2024-05-28T15:19:24.000Z","dependencies_parsed_at":"2023-01-21T04:45:13.603Z","dependency_job_id":"326673c6-58be-4e3e-a3e9-554c085bb344","html_url":"https://github.com/sudheer121/Study-Room","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sudheer121%2FStudy-Room","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sudheer121%2FStudy-Room/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sudheer121%2FStudy-Room/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sudheer121%2FStudy-Room/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sudheer121","download_url":"https://codeload.github.com/sudheer121/Study-Room/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224957887,"owners_count":17398493,"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":["chat-application","discord","expressjs","mesh-networks","node-schedule","nodejs","peer-connection","peerjs","react","react-router","reactjs","study-room","text-channel","twilio-api","voice-channel","voice-channels","voice-chat","webrtc","websocket","websockets"],"created_at":"2024-08-03T13:01:24.539Z","updated_at":"2025-05-10T11:32:11.954Z","avatar_url":"https://github.com/sudheer121.png","language":"JavaScript","readme":"\n---\n\n\u003cimg align=\"left\" src=\"client/src/icons/readingBook.svg\" width=\"100\" height=\"100\" /\u003e\n\n\u003cdiv align=\"center\" \u003e \n\u003ch1\u003e\u003cb\u003e Study-Room  \u003c/b\u003e\u003c/h1\u003e  \n\u003ch3 align=\"right\"\u003e\u003ci\u003e Chat, Talk, Study.... \u003c/i\u003e\u003c/h3\u003e  \n\u003ci\u003e Study, collaborate, conference ... over click of a button. \u003c/i\u003e\n\u003c/div\u003e \n\n\n---\n\nA fully functional 🚀 web application where students create/join rooms and communicate using text and audio channels. No registration required . The application connects peers using WebSockets and WebRTC. \nCheck it out [here](https://mystudyroom.netlify.app).  \n\n\u003ch3\u003e New Features \u003c/h3\u003e\n\n\u003e \u003cul\u003e \n\u003e \u003cli\u003e Generate room ID and share with friends \u003c/li\u003e\n\u003e \u003cli\u003e Directly connect to room with shared link, valid for 12 hours \u003c/li\u003e\n\u003e \u003cli\u003e Better UI \u003c/li\u003e  \n\u003e \u003c/ul\u003e\n\n\u003ch3\u003e Installation \u003c/h3\u003e \n  \n  Clone the repo\n\n  ```bash \n  git clone https://github.com/Sudheer121/Study-Room.git \n  ```\n\n  Start client and server in different terminals\n\n  ```bash \n  cd client \n  npm i \n  npm start\n  ```\n\n  ```bash\n  cd server \n  cp .env.example .env\n  npm i \n  npm start\n  ```\n  You are good to go !!!! . \n  \n  `Note : The server uses a Twilio API (for TURN servers) for voice chat. Not required locally`\n\u003chr\u003e \n\n\u003ch3\u003e \u003cu\u003eDesktop and Mobile Views\u003c/u\u003e \u003c/h3\u003e\n\n\u003cdiv align=\"center\"\u003e \n  \u003cdiv\u003e\n    \n    The application is compatible with both desktop and mobile phones. \n    \n  \u003c/div\u003e \n  \u003cdiv\u003e\n    \u003cimg src=\"https://i.imgur.com/x75zSa3.gif\" width=\"720\" height=\"400\"/\u003e\n    \u003cimg src=\"/zgifs/mobile-view.gif\" width=\"200\" height=\"400\"/\u003e\n  \u003c/div\u003e \n\u003c/div\u003e\n\n\u003ch3\u003e Blog describing how the entire system works \u003c/h3\u003e\n\n- Checkout [the blog](https://sudheer.hashnode.dev/how-multimedia-streaming-apps-work).\n\n\u003ch3\u003e Features \u003c/h3\u003e\n\n\u003e \u003cul\u003e \n\u003e \u003cli\u003e Chat using text and voice channels \u003c/li\u003e\n\u003e \u003cli\u003e Easy to use UI with everything on one screen\u003c/li\u003e\n\u003e \u003cli\u003e Mobile Compatibility \u003c/li\u003e \n\u003e \u003cli\u003e Connect with multiple people by choosing unique room ids\u003c/li\u003e \n\u003e \u003c/ul\u003e\n  \n\u003ch3\u003e Technologies Used \u003c/h3\u003e\n\n\u003e \u003cul\u003e \n\u003e \u003cli\u003e Server - Nodejs \u003c/li\u003e\n\u003e \u003cli\u003e Client - Reactjs \u003c/li\u003e\n\u003e \u003cli\u003e Chat - WebSockets \u003c/li\u003e\n\u003e \u003cli\u003e Voice - WebRTC \u003c/li\u003e \n\u003e \u003c/ul\u003e\n\n\u003ch3\u003e The need of WebSockets and WebRTC ( short summary )\u003c/h3\u003e \n\n\u003e What's the best application level protocol for enabling a bidirectional communication channel(i.e both client and server can update each other at any time) ?. HTTP works fine when the client has to request data fewer times. HTTP opens up a connection and closes the connection as soon as it gets required response. In case of a chat application we continuously need to listen for data from server, one solution is keep requesting the server for data every few milliseconds, but its resource consuming for both the sides. The solution is WebSockets, it enables a full-duplex bidirectional communication, that is, the client is always ready to listen for data pushed by server. \nBut WebSockets are still not peer to peer, in case of audio/video streaming between multiple peers, creating a direct peer to peer connection is a better option (because loads of data is being streamed), but this is also one of the most difficult things to do. WebRTC helps us create a direct peer to peer connetion. WebRTC is one of the most complex communication protocols because it tries all possible ways to create a peer - peer connection, if it still fails then the data is relayed via a TURN server. \n\n\u003chr\u003e \n\n\u003ch3\u003e Pull Request \u003c/h3\u003e \n  \n  Steps for pull request are a bit different than installation mentioned above. \n  \n  \u003e \u003cli\u003e Fork the repo \u003c/li\u003e\n  \u003e \u003cli\u003e Clone the forked repo locally using git clone ==\u003e git clone forked_repo_link.git \u003c/li\u003e\n  \u003e \u003cli\u003e Checkout to a new branch, name it appropriately ==\u003e git checkout -b new-feature-xyz  \u003c/li\u003e\n  \u003e \u003cli\u003e Make the changes and commit them \u003c/li\u003e\n  \u003e \u003cli\u003e Push changes to the forked repo ==\u003e git push origin \u003c/li\u003e\n  \u003e \u003cli\u003e Start a pull  request ==\u003e After pushing, you will see a Compare and Pull Request button on forked repo \u003c/li\u003e\n  \n","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdumbbellcode%2FStudy-Room","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdumbbellcode%2FStudy-Room","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdumbbellcode%2FStudy-Room/lists"}