{"id":24427609,"url":"https://github.com/wa0101/party-sync-watch","last_synced_at":"2025-04-12T09:50:38.769Z","repository":{"id":269088757,"uuid":"906388016","full_name":"wa0101/Party-Sync-Watch","owner":"wa0101","description":"A modern watch party app built with Next.js and Socket.IO. Drop any video, share the room code, and watch together in perfect sync! No accounts needed, no complicated setup","archived":false,"fork":false,"pushed_at":"2024-12-20T22:05:26.000Z","size":1092,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-26T04:41:33.222Z","etag":null,"topics":["chat","friends","javascript","music","nextjs","nextjs13","party","social","socket-io","streaming","streaming-server","sync","synchronization","tailwind","tailwindcss","typescript","videoplayer","watch","watchparty","watchtogether"],"latest_commit_sha":null,"homepage":"https://party-sync-watch.onrender.com/","language":"JavaScript","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/wa0101.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,"publiccode":null,"codemeta":null}},"created_at":"2024-12-20T19:42:08.000Z","updated_at":"2025-02-24T19:40:30.000Z","dependencies_parsed_at":"2024-12-20T20:41:35.184Z","dependency_job_id":null,"html_url":"https://github.com/wa0101/Party-Sync-Watch","commit_stats":null,"previous_names":["wa0101/party-sync-watch"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wa0101%2FParty-Sync-Watch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wa0101%2FParty-Sync-Watch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wa0101%2FParty-Sync-Watch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wa0101%2FParty-Sync-Watch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wa0101","download_url":"https://codeload.github.com/wa0101/Party-Sync-Watch/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248550633,"owners_count":21122932,"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","friends","javascript","music","nextjs","nextjs13","party","social","socket-io","streaming","streaming-server","sync","synchronization","tailwind","tailwindcss","typescript","videoplayer","watch","watchparty","watchtogether"],"created_at":"2025-01-20T12:12:20.695Z","updated_at":"2025-04-12T09:50:38.737Z","avatar_url":"https://github.com/wa0101.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎥 Party Sync Watch\n\nwatch videos together with ur friends in perfect sync! built with next.js, express and socket.io\n\n## 🚀 demo\ncheck it out live: [party-sync-watch.onrender.com](https://party-sync-watch.onrender.com/)\n\n## 📸 screenshots\n![Main UI](screenshots/mainui.png)\n*home page with join/create options*\n\n![Create Room UI](screenshots/createroomui.png)\n*create a new room and become the host*\n\n![Room UI](screenshots/roomui1.png)\n*watch videos together with real-time sync*\n\n## 🚀 features\n- create rooms and invite friends (just share the room code lol)\n- upload videos and watch em together\n- everything syncs perfectly (most of the time :d)\n- modern ui with tailwind (tried my best ok)\n- host controls with fancy progress bar\n- volume control for everyone\n- fullscreen support for mobile/desktop\n- upload progress tracking with speed and size info\n  \u003e note: when uploading, it might take a few minutes (based on the size of the video) to start showing progress (be patient)\n- drag n drop video uploads\n\n## 🛠️ tech stack\n- next.js 13 (app router btw)\n- tailwind css (saved my life)\n- express (for the backend stuff)\n- socket.io (real-time magic ✨)\n- framer motion (smooth af animations)\n\n## 💻 getting started\n\nok so first clone this:\n```bash\ngit clone https://github.com/wa0101/Party-Sync-Watch\ncd party-sync-watch\n```\n\ninstall the dependencies:\n```bash\nnpm install\n# or\nyarn install\n# or\npnpm install\n```\n\nrun this in dev mode:\n```bash\nnpm run dev\n```\n\nnow open [http://localhost:3000](http://localhost:3000) and pray it works 🙏\n\n## 🚀 deployment on render.com\n\n1. fork this repo to ur github\n\n2. create a new web service on render:\n   - connect to ur github repo\n\n\n3. use these settings:\n   - Build Command: `npm install \u0026\u0026 npm run build`\n   - Start Command: `npm start`\n\n4. add these environment variables:\n   ```\n   NODE_ENV=production\n   NEXT_PUBLIC_SOCKET_URL=https://your-app-url.onrender.com\n   RENDER_EXTERNAL_URL=https://your-app-url.onrender.com\n   ```\n   (replace `your-app-url` with ur actual render url)\n\n5. click deploy and grab a coffee ☕\n   - it might take a few mins\n   - if it fails, check the logs\n   - make sure all env vars are set\n\n6. once its done, ur app will be live at:\n   `https://your-app-name.onrender.com`\n\n## 📝 todo list (maybe someday lol)\n- [ ] switch to cloud storage (render storage kinda sucks rn)\n  - aws s3 or cloudflare r2 for better reliability\n  - faster upload speeds\n  - no storage limits to worry about\n  - better cdn for faster video loading\n  - maybe add resumable uploads\n- [ ] add chat system (cuz why not)\n- [ ] youtube url support\n- [ ] better mobile ui (its kinda wonky rn)\n- [ ] user profiles with avatars (gotta look fancy)\n- [ ] room passwords (for the secret watch parties)\n- [ ] multiple hosts\n- [ ] screen sharing (if i figure it out)\n- [ ] better error handling (its a mess rn ngl)\n\n## 🧑‍💻 contributing\nfeel free to contribute! the code is a bit messy but we're working on it\n\n## ⚠️ known issues\n- sometimes the sync gets weird\n- mobile fullscreen is janky on some browsers\n- the code needs some serious cleanup\n- uploads are slow and limited by render.com storage\n- random websocket disconnects on mobile (working on a fix)\n- player issues:\n  - time sync sometimes breaks for no reason\n  - mobile users get disconnected more often\n  - seeking/skipping can break the sync\n  - play/pause icons sometimes show wrong state\n  - control buttons might get stuck visually\n- probably more that i haven't found yet 💀\n\n\n---\nmade with ❤️","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwa0101%2Fparty-sync-watch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwa0101%2Fparty-sync-watch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwa0101%2Fparty-sync-watch/lists"}