{"id":21404628,"url":"https://github.com/awebcode/webrtc_node_react","last_synced_at":"2026-01-04T03:04:58.825Z","repository":{"id":217842384,"uuid":"744935652","full_name":"awebcode/webrtc_node_react","owner":"awebcode","description":null,"archived":false,"fork":false,"pushed_at":"2024-01-18T11:16:17.000Z","size":2743,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-23T03:33:20.095Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/awebcode.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2024-01-18T10:00:06.000Z","updated_at":"2024-04-17T15:59:56.000Z","dependencies_parsed_at":"2024-01-18T13:28:33.631Z","dependency_job_id":null,"html_url":"https://github.com/awebcode/webrtc_node_react","commit_stats":null,"previous_names":["md-asikur-rahman2/webrtc_node_react","awebcode/webrtc_node_react"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awebcode%2Fwebrtc_node_react","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awebcode%2Fwebrtc_node_react/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awebcode%2Fwebrtc_node_react/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awebcode%2Fwebrtc_node_react/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/awebcode","download_url":"https://codeload.github.com/awebcode/webrtc_node_react/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243902278,"owners_count":20366258,"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":[],"created_at":"2024-11-22T16:17:01.751Z","updated_at":"2026-01-04T03:04:58.745Z","avatar_url":"https://github.com/awebcode.png","language":"TypeScript","readme":"# talkhouse\nWebRTC based peer to peer video calling and messaging web app build with MERN stack.\n\n# [Demo](https://webrtc-reactnode-asikur.onrender.com/)\n\n# Libraries used\n\n- **`React`** for frontend\n- **`Socket.io`** as signaling server and realtime communication \n- **`simple-peer`** for peer-to-peer WebRTC connections\n- **`Express`** as server\n- **`MongoDB`** for persistance of data\n- **`Material UI`** for creating ui\n- **`Redux`** for state management\n- **`Typescript`** for type safety, cure for headache you get when props are flowing all over the app with no hint \n\n\n# Features\n\n* User authentication and authorization\n* Audio and Video Chat\n* Messaging with storage of messages in the database\n* Sending invitation to friends\n* Able to accept or reject an invitation\n* Online indicator\n* Notify on typing\n* Sceen sharing \n* Accept and reject an incoming call\n\n**and more....**\n\n## New Features added recently:\n\n*  **`Group Chats`** Create group chats like in whats'app. Group Admins can add members to group and participants can leave the group.\n*  Remove friend, ability to unfriend someone\n* **`Talkhouse Spaces`** like Twitter spaces. You can host a space and any of your friends can join that space.\n\nThe **talkhouse spaces** are implemented using MESH topology to establish a peer-to-peer network between every person or client joining the space.\ni.e, every person maintains a p2p connection with every other person in the room. \n\n\n# Installation\n\n1. Clone project\n\n```\nhttps://github.com/Md-Asikur-Rahman2/webrtc_node_react\n```\n\n## Manual\n\nIf you dont't have docker installed, or don't know how to docker, [who doesn't know docker in the first place 😑]\n\ncd into root project\n\n```\n1. cd server\n```\n\n`npm install` to to install server dependencies\n\n`Setup required environment variables:` \n \n- MONGO_URI_DEV\n- JWT_SECRET\n\n`npm run dev` to start development server with nodemon\n\n*Make sure you have mongoDB installed*\n\n```\n1. cd client\n```\n\n`npm install` installs client dependencies.\n\n`npm run start` to start the react development server.\n\n\n## Docker\n\nRunning project through docker is recommended. You don't have to do any setup. Just one docker-compose command and boom project is up and running 😊 \n\n```\ndocker-compose up --build\n\n```\n*Make sure you have docker installed*\n\n # TODOS\n\n- [x]  Enable group video and messaging functionality\n- [ ]  Implement confirm email, reset password and email sending on friend invitation, *Not a big deal to implement, just a little lazy to implement it*\n- [ ]  Store messages in an encrypted form in the database. (Just wrote it for fun. I mean is it even worth to do it 🤦‍♂️)\n- [x]  Enhace the UI. I hate CSS, not that good at it 🥱😓 . (Looks reasonably good now)\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawebcode%2Fwebrtc_node_react","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fawebcode%2Fwebrtc_node_react","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawebcode%2Fwebrtc_node_react/lists"}