{"id":30844114,"url":"https://github.com/offensive-vk/collabshare","last_synced_at":"2025-09-06T22:09:09.343Z","repository":{"id":303774957,"uuid":"1015404637","full_name":"offensive-vk/collabshare","owner":"offensive-vk","description":"Collabshare - Just a simple Web App written in python and Typescript for web rtc purposes.","archived":false,"fork":false,"pushed_at":"2025-09-05T11:48:01.000Z","size":406,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-09-05T13:26:30.294Z","etag":null,"topics":["conference","rtc","uvicorn","web-rtc"],"latest_commit_sha":null,"homepage":"","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/offensive-vk.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":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-07T13:00:55.000Z","updated_at":"2025-09-05T11:48:04.000Z","dependencies_parsed_at":"2025-09-05T13:26:34.524Z","dependency_job_id":"1a86efe1-5c80-41de-9550-0101d6bf2928","html_url":"https://github.com/offensive-vk/collabshare","commit_stats":null,"previous_names":["offensive-vk/my-web-rtc","offensive-vk/collabshare"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/offensive-vk/collabshare","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/offensive-vk%2Fcollabshare","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/offensive-vk%2Fcollabshare/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/offensive-vk%2Fcollabshare/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/offensive-vk%2Fcollabshare/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/offensive-vk","download_url":"https://codeload.github.com/offensive-vk/collabshare/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/offensive-vk%2Fcollabshare/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273968673,"owners_count":25199653,"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","status":"online","status_checked_at":"2025-09-06T02:00:13.247Z","response_time":2576,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["conference","rtc","uvicorn","web-rtc"],"created_at":"2025-09-06T22:09:04.463Z","updated_at":"2025-09-06T22:09:09.330Z","avatar_url":"https://github.com/offensive-vk.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CollabShare - WebRTC Collaboration Platform\n\nA full-stack web application for real-time screen sharing, video/audio communication, and chat using WebRTC.\n\n## 🚀 Overview\n\nCollabShare enables up to 5 participants per room to:\n\n- Share screens in real-time\n- Enable video and audio communication\n- Chat with disposable messages (messages are not persisted and are deleted when the session ends)\n- Create and join rooms with unique codes\n- Auto-cleanup empty rooms when all participants leave\n\n## 🏗️ Architecture\n\n- **Frontend**: React 19, Tailwind CSS\n- **Backend**: FastAPI, native WebSockets\n- **Database**: MongoDB (future use)\n- **Real-time**: WebSockets + WebRTC\n- **Deployment**: Kubernetes-ready\n\n## 📐 Application Layout\n\n```\n+-------------------+         +-------------------+\n|    Frontend       | \u003c-----\u003e |     Backend       |\n| (React, WebRTC)   |  HTTP   |  (FastAPI, WS)    |\n+-------------------+         +-------------------+\n         |                              |\n         | WebSocket (Signaling, Chat)  |\n         +------------------------------+\n         |                              |\n         v                              v\n   [Browser: Video/Audio/Screen]   [In-memory Rooms]\n```\n\n- **Frontend**: Handles UI, WebRTC peer connections, and WebSocket signaling.\n- **Backend**: Manages rooms, relays signaling and chat, enforces participant limits, and cleans up empty rooms.\n\n## 📁 File Structure (see `treemap` for details)\n\n- `frontend/src/components/Room.tsx` (Updated): Main room UI, video grid, chat, controls\n- `frontend/src/utils/useWebRTC.ts` (Updated): WebRTC and WebSocket logic, connection handling\n- `frontend/src/utils/types.ts` (Updated): WebSocket message types\n- `test_api.py` (Updated): API and WebSocket integration tests, including enter/exit room flows\n\n## ✅ Tests\n\n- **What’s covered**:\n  - Room creation via REST\n  - WebSocket connect and join (enter room flow)\n  - WebSocket leave (exit room flow) with API verification\n  - Chat broadcast\n  - WebRTC signaling relay (offer/answer/ICE)\n  - Participant limit enforcement and room cleanup\n\n- **Run tests**:\n\n```bash\npython test_api.py\n```\n\nRequires backend running at `http://localhost:8001`.\n\n## 🧭 Frontend Flow Notes\n\n- `RoomEntry` navigates to `\\`/room/:roomId` with `state.username`.\n- `Room` calls `joinRoom(username, roomId)` and shows the UI once `room_joined` is received.\n- Self-target WebRTC signaling is avoided using a stable client ID reference.\n\n## 🔒 Security Policy\n\nSee [SECURITY.md](./SECURITY.md) for details on current and recommended security practices.\n\n## 🧩 Key Features \u0026 Flows\n\n- **Room Creation/Joining**: POST `/api/rooms` to create, then join via WebSocket with a username and room code\n- **Chat**: Disposable, not persisted, broadcast to all in room\n- **WebRTC Signaling**: Offers, answers, and ICE candidates relayed via backend\n- **Room Cleanup**: Empty rooms are deleted automatically\n- **Error Handling**: Room full/not found errors are sent as WebSocket error messages\n\n## 🛡️ Security Considerations\n\n- CORS enabled for all origins (dev)\n- No authentication by default\n- See [SECURITY.md](./SECURITY.md) for production recommendations\n\n## 📊 Monitoring \u0026 Health\n\n- Health endpoints, WebSocket status, and room metrics\n\n## 📝 Contributing\n\n### Code Style\n\n- **Python**: Follow PEP 8 guidelines\n- **JavaScript**: Use ESLint configuration\n- **CSS**: Use Tailwind CSS classes\n\n### Git Workflow\n\n```bash\n# Create feature branch\ngit checkout -b feature/new-feature\n\n# Make changes and commit\ngit add .\ngit commit -m \"Add new feature\"\n\n# Push and create pull request\ngit push origin feature/new-feature\n```\n\n## 📞 Support\n\nFor technical support or questions:\n\n- Open a [issue](https://github.com/offensive-vk/collabshare/issues) on our github page.\n- Check the troubleshooting section\n- Review application logs\n- Test API endpoints manually\n- Verify WebSocket connections\n\n## 📄 License\n\nThis project is licensed under the [MIT License](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foffensive-vk%2Fcollabshare","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foffensive-vk%2Fcollabshare","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foffensive-vk%2Fcollabshare/lists"}