{"id":22612157,"url":"https://github.com/indiedev2003/catwatchparty","last_synced_at":"2025-03-28T23:44:34.963Z","repository":{"id":234889289,"uuid":"789642605","full_name":"IndieDev2003/CatWatchParty","owner":"IndieDev2003","description":"This website is a hobby and personal project created to watch movie and videos with my girlfriend/future wife.","archived":false,"fork":false,"pushed_at":"2024-12-20T19:25:15.000Z","size":11443,"stargazers_count":1,"open_issues_count":7,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-03T10:11:49.174Z","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":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IndieDev2003.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2024-04-21T06:15:16.000Z","updated_at":"2024-08-31T13:45:05.000Z","dependencies_parsed_at":"2024-04-21T11:15:05.891Z","dependency_job_id":null,"html_url":"https://github.com/IndieDev2003/CatWatchParty","commit_stats":null,"previous_names":["indiedev2003/catwatchparty"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IndieDev2003%2FCatWatchParty","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IndieDev2003%2FCatWatchParty/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IndieDev2003%2FCatWatchParty/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IndieDev2003%2FCatWatchParty/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IndieDev2003","download_url":"https://codeload.github.com/IndieDev2003/CatWatchParty/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246117689,"owners_count":20726068,"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-12-08T17:10:49.904Z","updated_at":"2025-03-28T23:44:34.942Z","avatar_url":"https://github.com/IndieDev2003.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cat Watch Party\n\n![screenshot](https://github.com/IndieDev2003/CatWatchParty/raw/main/images/main.png)\n\nAn website for watching videos together with your Ones just like me ❤.\n\n## Description\n\n- Synchronizes the video being watched with the current room\n- Plays, pauses, and seeks are synced to all watchers\n- Supports:\n  - Screen sharing (full screen, browser tab or application)\n  - Launch a shared virtual browser in the cloud (similar to rabb.it)\n  - Stream-your-own-file\n  - Video files on the Internet (anything accessible via HTTP)\n  - YouTube videos\n  - Magnet links (via WebTorrent)\n  - .m3u8 streams (HLS)\n- Create separate rooms for users on demand\n- Text chat\n- Video chat\n\n![screenshot](https://github.com/IndieDev2003/CatWatchParty/raw/main/images/main2.png)\n\n## Quick Start\n\n- Clone this repo via `git clone https://github.com/IndieDev2003/CatWatchParty.git`\n- Install npm dependencies for the project via `npm install`\n- Start the server via `npm run dev`\n  - Defaults to port 8080, customize with `PORT` env var\n  - Set `SSL_KEY_FILE` and `SSL_CRT_FILE` for HTTPS.\n- Start the React application in a separate shell and port via `npm run react`\n  - Point to server using `VITE_SERVER_HOST` env var if you customized it above\n  - Set `SSL_KEY_FILE` and `SSL_CRT_FILE` for HTTPS.\n  - HTTPS is required by the browser for some WebRTC features (camera, etc.)\n- Duplicate the `.env.example` file\n- Rename it to `.env`\n- Add config for the features you want as described in the advanced setup\n\n## Advanced Setup (optional)\n\nAll of these are optional and the application should work without them. Some functionality may be missing.\n\n### YouTube API (video search)\n\nThis project uses the YouTube API for video search, which requires an API key. You can get one from Google [here](https://console.developers.google.com).\n\nWithout an API key you won't be able to search for videos via the searchbox.\n\nAfter creating a **YouTube Data API V3** access, you can create an API key which you can add to your environment variables by copying the `.env.example`, renaming it to `.env` and adding the key to the YOUTUBE_API_KEY variable.\n\nAfter that restart your server to enable the YouTube API access on your server.\n\n### Firebase Config (user authentication)\n\nThis project uses Firebase for authentication. This is used for user login, account management, subscriptions, and handling some features like room locking/permanence.\n\nTo set up, create a new Firebase app (or reuse an old one) from [here](https://console.firebase.google.com/). After creating an application, click on the settings cog icon in the left menu next to \"Project overview\" and click on project settings. From there, scroll down, create a web application and copy the Firebase SDK configuration snippet JSON data.\n\nNext, you have to stringify it: `JSON.stringify(PASTE_CONFIG_HERE)` in your browser console, then add it to `VITE_FIREBASE_CONFIG` in your .env file.\n\nFor server verification of accounts you'll also need `FIREBASE_ADMIN_SDK_CONFIG`, which you should do the same steps for.\n\n### Virtual Browser Setup\n\nThis project supports creating virtual browsers (using https://github.com/m1k1o/neko) either on a cloud provider or with Docker containers. For development, Docker is easiest.\n\n- Install Docker: `curl -fsSL https://get.docker.com | sh`\n- Make sure you have an SSH key pair set up on the server (`id_rsa` in `~/.ssh` directory), if not, use `ssh-keygen`.\n- Configure `DOCKER_VM_HOST_SSH_USER` if `root` is not the correct user\n- Note: If your web client is not running on the same physical machine as the server, you will also need to configure `DOCKER_VM_HOST` to a publically-resolvable value (i.e. not localhost)\n- If you want to run managed instance pools (whether on cloud or with Docker), configure `VM_MANAGER_CONFIG` and run the vmWorker service.\n\n### Room Persistence\n\n- Configure Postgres by adding DATABASE_URL to your .env file and then setting up the database schema\n- This allows rooms to persist between server restarts\n\n## Tech\n\n- Love\n- React\n- TypeScript\n- Node.js\n- Redis\n- PostgreSQL\n- Docker\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findiedev2003%2Fcatwatchparty","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Findiedev2003%2Fcatwatchparty","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Findiedev2003%2Fcatwatchparty/lists"}