{"id":21431553,"url":"https://github.com/tomdoestech/youtube-clone","last_synced_at":"2025-09-03T02:43:57.796Z","repository":{"id":41161113,"uuid":"481138213","full_name":"TomDoesTech/youtube-clone","owner":"TomDoesTech","description":null,"archived":false,"fork":false,"pushed_at":"2022-11-07T01:17:03.000Z","size":131,"stargazers_count":60,"open_issues_count":1,"forks_count":30,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-07-14T14:04:32.121Z","etag":null,"topics":["nextjs","nodejs","react","tutorial","typescript"],"latest_commit_sha":null,"homepage":"https://youtu.be/hPck3Q13wdE","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/TomDoesTech.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}},"created_at":"2022-04-13T08:42:55.000Z","updated_at":"2025-03-07T11:03:35.000Z","dependencies_parsed_at":"2023-01-21T04:17:44.312Z","dependency_job_id":null,"html_url":"https://github.com/TomDoesTech/youtube-clone","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/TomDoesTech/youtube-clone","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomDoesTech%2Fyoutube-clone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomDoesTech%2Fyoutube-clone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomDoesTech%2Fyoutube-clone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomDoesTech%2Fyoutube-clone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TomDoesTech","download_url":"https://codeload.github.com/TomDoesTech/youtube-clone/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TomDoesTech%2Fyoutube-clone/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273381915,"owners_count":25095330,"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-03T02:00:09.631Z","response_time":76,"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":["nextjs","nodejs","react","tutorial","typescript"],"created_at":"2024-11-22T23:08:01.322Z","updated_at":"2025-09-03T02:43:57.768Z","avatar_url":"https://github.com/TomDoesTech.png","language":"TypeScript","readme":"# Build a Youtube clone with Express, MongoDB, \u0026 TypeScript\n\n## Features\n1. Register user\n2. Login\n3. Get current logged in user (me)\n4. Upload video\n5. Get all videos\n6. Stream a video\n\n## Technologies\n### Backend\n* [Express](https://expressjs.com/)\n* [Mongoose](https://www.mongodb.com/)\n* [TypeScript](https://www.typescriptlang.org/)\n* [argon2](https://www.npmjs.com/package/argon2)\n* [busboy](https://www.npmjs.com/package/busboy)\n* [pino](https://github.com/pinojs/pino)\n* [Zod](https://github.com/colinhacks/zod)\n\n### Frontend\n* [Next.js](https://nextjs.org/)\n* [Mantine](https://mantine.dev/)\n* [TypeScript](https://www.typescriptlang.org/)\n* [React Query](https://react-query.tanstack.com/)\n\n## What you'll need\n1. Code editor - VSCode\n2. Postman/ insomnia\n3. Browser - Chrome\n4. Running instance of MongoDB\n5. Node.js\n\n## What you will learn\n1. REST API principals\n2. Some auth principals\n4. MongoDB with Mongoose\n5. Graceful shutdowns\n6. File upload streams with Node.js\n7. Video streaming with Node.js\n8. Next.js\n0. Mantine\n10. React.js context API\n11. Express \u0026 React.js with TypeScript\n12. Clean project structure\n\n## Video structure\n1. Demonstration\n2. Code walk-through\n3. Bootstrap server\n    * Initialise application\n    * Setup express\n    * Setup logger\n    * Setup Mongoose\n4. User\n    * Register user\n    * Login\n    * Require user and deserialize user middleware\n    * Get current user\n5. Video\n    * Upload video\n    * Update video\n    * Get all videos\n    * Stream video\n6. Setup client\n7. Auth\n    * Login screen\n    * Register screen\n8. Video\n    * Upload video\n    * Stream video ","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomdoestech%2Fyoutube-clone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftomdoestech%2Fyoutube-clone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomdoestech%2Fyoutube-clone/lists"}