{"id":19562192,"url":"https://github.com/iamdecode/proximity-chat","last_synced_at":"2025-08-15T20:42:18.384Z","repository":{"id":69665691,"uuid":"323073728","full_name":"iamDecode/proximity-chat","owner":"iamDecode","description":"Proximity video chat for social events, similar to SpatialChat 🍻","archived":false,"fork":false,"pushed_at":"2021-11-30T12:18:20.000Z","size":2899,"stargazers_count":8,"open_issues_count":11,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-19T23:46:47.550Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iamDecode.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,"zenodo":null}},"created_at":"2020-12-20T13:05:47.000Z","updated_at":"2024-05-14T19:12:45.000Z","dependencies_parsed_at":"2023-06-14T08:00:38.067Z","dependency_job_id":null,"html_url":"https://github.com/iamDecode/proximity-chat","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/iamDecode/proximity-chat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamDecode%2Fproximity-chat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamDecode%2Fproximity-chat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamDecode%2Fproximity-chat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamDecode%2Fproximity-chat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iamDecode","download_url":"https://codeload.github.com/iamDecode/proximity-chat/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iamDecode%2Fproximity-chat/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259712371,"owners_count":22900033,"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-11T05:13:57.115Z","updated_at":"2025-06-13T20:03:57.998Z","avatar_url":"https://github.com/iamDecode.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Proximity Chat\n\nVideo chat system with audio volume dependent on your proximity to others. This naturally promotes forming groups, ideal for social gatherings. \n\nhttps://user-images.githubusercontent.com/1223300/144045970-6c81b70b-3337-4c12-b51f-09563d2c3600.mp4\n\n## Details\nThe project uses [mediasoup](https://mediasoup.org) for WebRTC audio and video sharing, and using [uWebSockets.js](https://github.com/uNetworking/uWebSockets.js) for the WebRTC signaling, as well as our own additions such as position broadcasting  with the least possible latency.\n\n## Customizing the room\nThe directory `public/room` contains a room config file and a background image.\n\n## SSL\nProximity Chat can run in SSL mode and non-SSL mode. However, non-SSL mode is mostly intended for setups where Proximity Chat runs behind a (reverse) proxy server terminates the SSL connection:\n\n1.   Regardless of the server mode, the client code always connects using an SSL connection.\n1.   Browsers may refuse to send camera and microphone data over unencrypted connections.\n\nTo run in SSL mode, set the `SSL_CERT_PATH` and `SSL_KEY_PATH` environment variables when invoking `yarn start`.\n\nFor local development you need to generate a self-signed certificate as voice media can only be requested (`MediaDevices.getUserMedia()`) over secure connections:\n\n    yarn gen-ssl-certs\n\nWith those files, you can run the server using:\n\n    export SSL_CERT_PATH=\"./cert/cert.pem\" SSL_KEY_PATH=\"./cert/key.pem\"\n    \nOr to wherever the key files are located on your production server.\n\n## Running\nInstall dependencies with `yarn install` and run with `yarn start`. Open `https://127.0.0.1:3000`, `https://yourexternalip:3000`, or `https://yourlanip:3000` in a supporting browser on multiple devices. \n\nFor running in production, make sure to set the `ANNOUNCED_IP` environmental variable to the external IP of your server.\n\n## Docker image\nProximity Chat can run in a Docker container. Use the following steps to build and run using Docker:\n\n    docker build -t proximity-chat .\n    docker run -d -p 3000:3000 -p 9001:9001 -v \"/$(pwd)\\public\":/usr/src/app/public:ro -v \"/$(pwd)\\cert\":/usr/src/app/cert:ro -e SSL_CERT_PATH=\"./cert/cert.pem\" -e SSL_KEY_PATH=\"./cert/key.pem\" proximity-chat\n\nThis also binds your local `public` directory to the container, so that you can test frontend changes more quickly.\n\nIf you don't already have `cert.pem` and `key.pem` files, run `yarn gen-ssl-certs` before running these commands. If the certificates you're using are not embedded into the image, make them available to the Docker machine using a volume (similar to the given `-v` flag) and pass the appropriate values for `SSL_CERT_PATH` and `SSL_KEY_PATH`.\n\nFind the IP address of the virtual machine that runs this using `docker-machine ip`. You may want to enable port forwarding from your machine's network IP to the VM's IP, so you can access the VM from other devices in your network.\n\n## Lint\nPlease lint and commit-lint all commits. This is automatically checked on pull requests.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamdecode%2Fproximity-chat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiamdecode%2Fproximity-chat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamdecode%2Fproximity-chat/lists"}