{"id":13691419,"url":"https://github.com/saalikmubeen/talkhouse","last_synced_at":"2025-04-04T20:08:15.515Z","repository":{"id":42528421,"uuid":"473535436","full_name":"saalikmubeen/talkhouse","owner":"saalikmubeen","description":"WebRTC based peer to peer voice, video calling and messaging web app build with MERN stack.","archived":false,"fork":false,"pushed_at":"2024-11-28T13:18:11.000Z","size":4989,"stargazers_count":167,"open_issues_count":3,"forks_count":28,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-28T19:08:25.255Z","etag":null,"topics":["chat-application","mongodb","nodejs","push-notifications","reactjs","redux","service-worker","simple-peer","socket-io","typescript","webrtc"],"latest_commit_sha":null,"homepage":"https://talkhouse-tv.netlify.app/","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/saalikmubeen.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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-03-24T09:21:14.000Z","updated_at":"2025-03-21T06:18:44.000Z","dependencies_parsed_at":"2024-11-12T17:33:15.279Z","dependency_job_id":"4653fd83-9995-44ce-8bf3-200480cf2045","html_url":"https://github.com/saalikmubeen/talkhouse","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/saalikmubeen%2Ftalkhouse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saalikmubeen%2Ftalkhouse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saalikmubeen%2Ftalkhouse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saalikmubeen%2Ftalkhouse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/saalikmubeen","download_url":"https://codeload.github.com/saalikmubeen/talkhouse/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247242678,"owners_count":20907134,"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","mongodb","nodejs","push-notifications","reactjs","redux","service-worker","simple-peer","socket-io","typescript","webrtc"],"created_at":"2024-08-02T17:00:44.801Z","updated_at":"2025-04-04T20:08:15.481Z","avatar_url":"https://github.com/saalikmubeen.png","language":"TypeScript","funding_links":[],"categories":["Projects"],"sub_categories":["Chat"],"readme":"# talkhouse\n\nWebRTC based peer to peer video calling and messaging web app build with MERN stack.\n\n# [Demo](https://talkhouse-tv.netlify.app/)\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# 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- **`Push Notifications`** for incoming calls, messages and friend requests.\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# Installation\n\n1. Clone project\n\n```\ngit clone git@github.com:saalikmubeen/talkhouse.git\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## 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\n*Make sure you have docker installed*\n\n# Testimonials\n\n\u003e Thanks everyone for trying out the app!\n\n|     |     |\n|-----|-----|\n| ![image](https://github.com/saalikmubeen/talkhouse/blob/main/screenshots/screenshot_1.png?raw=true)  | ![image](https://github.com/saalikmubeen/talkhouse/blob/main/screenshots/screenshot_2.png?raw=true)   |\n| ![image](https://github.com/saalikmubeen/talkhouse/blob/main/screenshots/screenshot_3.png?raw=true)  | ![image](https://github.com/saalikmubeen/talkhouse/blob/main/screenshots/screenshot_4.png?raw=true)   |\n| ![image](https://github.com/saalikmubeen/talkhouse/blob/main/screenshots/screenshot_5.png?raw=true)  | ![image](https://github.com/saalikmubeen/talkhouse/blob/main/screenshots/screenshot_6.png?raw=true)   |\n| ![image](https://github.com/saalikmubeen/talkhouse/blob/main/screenshots/screenshot_7.png?raw=true)  | ![image](https://github.com/saalikmubeen/talkhouse/blob/main/screenshots/screenshot_8.png?raw=true)   |\n\n# TODOS\n\n- [x]  Enable group video and messaging functionality\n- [x]  Implement Push Notifications and make it a PWA\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","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaalikmubeen%2Ftalkhouse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsaalikmubeen%2Ftalkhouse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaalikmubeen%2Ftalkhouse/lists"}