{"id":13401991,"url":"https://github.com/gjovanov/roomler","last_synced_at":"2025-05-16T09:04:13.691Z","repository":{"id":49556854,"uuid":"204658189","full_name":"gjovanov/roomler","owner":"gjovanov","description":"Roomler - Multi-party Video Conferencing \u0026 Team Collaboration Tool using WebRTC (Janus Gateway)","archived":false,"fork":false,"pushed_at":"2025-03-28T22:22:39.000Z","size":68371,"stargazers_count":290,"open_issues_count":2,"forks_count":83,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-04-12T04:49:23.574Z","etag":null,"topics":["chat","coturn","docker","fastify","janus-gateway","mongodb","nginx","nuxtjs","redis","video-conferencing","vuejs","webrtc"],"latest_commit_sha":null,"homepage":"https://roomler.live","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gjovanov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2019-08-27T08:37:08.000Z","updated_at":"2025-04-11T01:25:16.000Z","dependencies_parsed_at":"2025-02-12T15:03:01.548Z","dependency_job_id":"b6164359-f5bc-48eb-8faa-d0be92f8bd9a","html_url":"https://github.com/gjovanov/roomler","commit_stats":null,"previous_names":[],"tags_count":130,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gjovanov%2Froomler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gjovanov%2Froomler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gjovanov%2Froomler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gjovanov%2Froomler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gjovanov","download_url":"https://codeload.github.com/gjovanov/roomler/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254501557,"owners_count":22081528,"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","coturn","docker","fastify","janus-gateway","mongodb","nginx","nuxtjs","redis","video-conferencing","vuejs","webrtc"],"created_at":"2024-07-30T19:01:10.194Z","updated_at":"2025-05-16T09:04:08.681Z","avatar_url":"https://github.com/gjovanov.png","language":"JavaScript","funding_links":[],"categories":["JavaScript","Projects"],"sub_categories":["Video Conference"],"readme":"# Roomler\n\n\u003e Roomler.Live - Live video conferencing \u0026 collaboration tool using WebRTC (Janus Gateway)\n\nIt's like Slack on Crack and Microsoft Teams on Steroids.\nAll that fully free and open source. \n\n\n[![Roomler Intro](https://img.youtube.com/vi/lzHeRwVDfPQ/0.jpg)](https://www.youtube.com/watch?v=lzHeRwVDfPQ)\n\n# Features\n\n| MULTI PARTY CALLS       | POWERFUL CHAT           | ORGANIZED ROOMS         |\n|-------------------------|-------------------------|-------------------------|\n| \u003cul\u003e\u003cli\u003e[x] Video\u003c/li\u003e\u003cli\u003e[x] Audio\u003c/li\u003e\u003cli\u003e[x] Screen share\u003c/li\u003e\u003cli\u003e[x] Encrypted\u003c/li\u003e\u003cli\u003e[x] up to 50 call participants\u003c/li\u003e\u003c/ul\u003e | \u003cul\u003e\u003cli\u003e[x] Rich-text\u003c/li\u003e\u003cli\u003e[x] File sharing\u003c/li\u003e\u003cli\u003e[x] Emojis \u0026 Giphy's\u003c/li\u003e\u003cli\u003e[x] Mentions\u003c/li\u003e\u003cli\u003e[x] Reactions\u003c/li\u003e\u003c/ul\u003e | \u003cul\u003e\u003cli\u003e[x] Public Rooms\u003c/li\u003e\u003cli\u003e[x] Private Rooms\u003c/li\u003e\u003cli\u003e[x] Hierarchy of Rooms\u003c/li\u003e\u003cli\u003e[x] User invite system\u003c/li\u003e\u003cli\u003e[x] Owner, moderator \u0026 member roles\u003c/li\u003e\u003c/ul\u003e |\n\n# Technology stack\n- [Janus Gateway](https://github.com/meetecho/janus-gateway)\n- [Coturn](https://github.com/coturn/coturn)\n- [Fastify](https://github.com/fastify/fastify)\n- [PM2](https://github.com/Unitech/pm2)\n- [MongoDB](https://github.com/mongodb/mongo)\n- [Redis](https://github.com/antirez/redis)\n- [VueJS](https://github.com/vuejs/vue)\n- [NuxtJS](https://github.com/nuxt/nuxt.js/)    \n- [VuetifyJS](https://github.com/vuetifyjs/vuetify)\n- [Tiptap](https://github.com/ueberdosis/tiptap)\n- [ProseMirror](https://github.com/ProseMirror/prosemirror)\n- [Nginx](https://github.com/nginx/nginx)\n- [Docker](https://github.com/docker)\n\n# Architecture\n![Architecture](./packages/ui/static/architecture.png)\n\n# Prerequisites\n\nRoomler requires:\n- docker engine being installed on your host machine\n- two docker networks being created\n- environment variables being setup\n- serveral micro services up and running\n\nbefore we can start Roomler (both in development and production environemnt)\n\n## Docker network\nBesides the default `host` Docker network, we need to create two addition bridge networks:\n1. `docker network create frontend` (used by containers `roomler`, `nginx`)\n2. `docker network create backend` (used by containers `roomler`, `mongo`, `redis`)\n3. on the existing `host` network `janus` and `coturn` will be attached\n\n## Microservice dependencies\n- [Janus Gateway](docs/deps-janus.md)\n- [Coturn](docs/deps-coturn.md)\n- [MongoDB](docs/deps-mongo.md)\n- [Redis](docs/deps-redis.md) - optional in development, but recommended in production!\n- [Nginx](docs/deps-nginx.md) - optional in development, but recommended in production!\n\n## Environment variables\nYou need to setup all your Required (even Optional if desired) [environment variables](docs/env.md), before you can run Roomler\n\n# Start Roomler App\n\n## Start in development mode\n\n``` bash\n# install dependencies\n$ npx lerna bootstrap\n\n# Start API server (localhost:3001)\n$ yarn run dev:api\n\n# Start UI server (localhost:3000)\n$ yarn run dev:ui\n```\n\n## Start in production mode\n\n``` bash\n# install dependencies\n$ npx lerna bootstrap --scope roomler.ui\n\n# build for production and launch server\n$ yarn run build\n$ yarn run start\n```\n\n## Start in production mode using docker\n\n### Docker build\n`.scripts/build.sh`\n\n### Docker release\n`.scripts/release.sh`\n\n\n### Docker run\n``` bash\ndocker run -d --name roomler \\\n    --hostname roomler \\\n    --network backend \\\n    --restart always \\\n    -v /path_to_your_uploads_folder:/roomler/packages/ui/static/uploads \\\n    -e API_URL=https://roomler.live \\\n    -p 8082:3000 \\\n    -e DB_CONN=YOUR_DB_CONN \\\n    -e WS_SCALEOUT_ENABLED=true \\\n    -e WS_SCALEOUT_HOST=redis \\\n    -e SENDGRID_API_KEY=YOUR_SEND_GRID_KEY \\\n    -e FACEBOOK_ID=YOUR_FACEBOOK_ID \\\n    -e FACEBOOK_SECRET=YOUR_FACEBOOK_SECRET \\\n    -e GOOGLE_ID=YOUR_GOOGLE_ID \\\n    -e GOOGLE_SECRET=YOUR_GOOGLE_SECRET \\\n    -e GITHUB_ID=YOUR_GITHUB_ID \\\n    -e GITHUB_SECRET=YOUR_GITHUB_SECRET \\\n    -e LINKEDIN_ID=YOUR_LINKEDIN_ID \\\n    -e LINKEDIN_SECRET=YOUR_LINKEDIN_SECRET \\\n    -e MICROSOFT_ID=YOUR_MICROSOFT_ID \\\n    -e MICROSOFT_SECRET=YOUR_MICROSOFT_SECRET \\\n    -e TURN_URL=YOUR_TURN_URL \\\n    -e TURN_USERNAME=YOUR_TURN_USERNAME \\\n    -e TURN_PASSWORD=YOUR_TURN_PASSWORD \\\n    -e GIPHY_API_KEY=YOUR_GIPHY_KEY \\\n    -e GOOGLE_ANALYTICS_ID=YOUR_GOOGLE_ANALYTICS_ID \\\n    -e SUPER_ADMIN_EMAILS='[\"your_super_admin_email@gmail.com\"]' \\\n    -e WEB_PUSH_CONTACT=\"mailto: your_email@gmail.com\" \\\n    -e WEB_PUSH_PUBLISH_KEY=YOUR_VAPID_PUBLIC_KEY \\\n    -e WEB_PUSH_PRIVATE_KEY=YOUR_VAPID_PRIVATE_KEY \\\n    -e NUXT_TELEMETRY_DISABLED=1 \\\n    gjovanov/roomler\n\n# attach roomler container to backend network\ndocker network connect backend roomler\n```\n\n## Start in production mode using docker-compose\n`docker-compose up` - this will start the whole docker stack of services\n\n\n# Testing\n## Run API tests\n\n``` bash\n# makes sure MongoDB is reachable based on /config/index.js (dbSettings)\n$ yarn run test:api\n```\n\n## Run E2E tests (TODO)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgjovanov%2Froomler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgjovanov%2Froomler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgjovanov%2Froomler/lists"}