Skip to content

Add Tutorial: Build your own Youtube clone #1444

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

Het-477
Copy link

@Het-477 Het-477 commented May 31, 2025

add a youtube tutorial to bulid a fullstack youtube clone with Next.js 15: React, Tailwind, Drizzle, tRPC

Summary by CodeRabbit

  • Documentation
    • Improved the organization of the README's table of contents for easier navigation with a hierarchical structure.
    • Added "Contribute" and "Origins & License" sections to the table of contents.
    • Included a new TypeScript tutorial link for building a YouTube clone with Next.js 15.

Copy link

coderabbitai bot commented May 31, 2025

Walkthrough

The README's table of contents was reorganized for clarity, introducing a hierarchical "Build your own" section with indented tutorials, code-formatted technology names, and new top-level links for "Contribute" and "Origins & License." A TypeScript YouTube clone tutorial using Next.js 15 was also added to the tutorials list.

Changes

File(s) Change Summary
README.md Restructured table of contents for better organization, added "Contribute" and "Origins & License" links, updated tutorial formatting, and included a new TypeScript YouTube clone tutorial.

Possibly related PRs

Poem

🐇
In README rows, we hop and play,
With sections nested, clear as day.
New links to guide each builder’s quest,
And TypeScript joins the learning fest!
So burrow in, explore, and see—
What wonders in this doc may be!


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (2)
README.md (2)

11-39: Improve nested list indentation in TOC
The new hierarchical TOC is clear and helps users navigate, but the nested "Tutorials" items are indented with 4 spaces, triggering MD007 (ul-indent). Consider reducing to 2 spaces to align with our markdownlint rules.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

13-13: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


14-14: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


15-15: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


16-16: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


17-17: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


18-18: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


19-19: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


20-20: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


21-21: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


22-22: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


23-23: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


24-24: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


25-25: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


26-26: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


27-27: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


28-28: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


29-29: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


30-30: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


31-31: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


32-32: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


33-33: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


34-34: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


35-35: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


36-36: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


37-37: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


38-38: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


39-39: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


478-478: Add YouTube Clone tutorial link
Great addition of the TypeScript YouTube Clone tutorial! For better organization, you might optionally introduce a dedicated #### Build your own YouTube Clone section instead of placing it under "Uncategorized."

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

478-478: Unordered list style
Expected: dash; Actual: asterisk

(MD004, ul-style)


478-478: Emphasis style
Expected: asterisk; Actual: underscore

(MD049, emphasis-style)


478-478: Emphasis style
Expected: asterisk; Actual: underscore

(MD049, emphasis-style)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between cf5d750 and f885a6e.

📒 Files selected for processing (1)
  • README.md (2 hunks)
🧰 Additional context used
🪛 markdownlint-cli2 (0.17.2)
README.md

13-13: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


14-14: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


15-15: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


16-16: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


17-17: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


18-18: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


19-19: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


20-20: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


21-21: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


22-22: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


23-23: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


24-24: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


25-25: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


26-26: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


27-27: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


28-28: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


29-29: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


30-30: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


31-31: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


32-32: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


33-33: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


34-34: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


35-35: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


36-36: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


37-37: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


38-38: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


39-39: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


478-478: Unordered list style
Expected: dash; Actual: asterisk

(MD004, ul-style)


478-478: Emphasis style
Expected: asterisk; Actual: underscore

(MD049, emphasis-style)


478-478: Emphasis style
Expected: asterisk; Actual: underscore

(MD049, emphasis-style)

🔇 Additional comments (1)
README.md (1)

40-41: Top-level links for Contribute & Origins added
The addition of "Contribute" and "Origins & License" anchors matches the headings and improves discoverability. Nice work!

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
README.md (1)

5-7: Refine introduction and quote formatting

The new intro line (“This repository is a compilation…”) and the Feynman blockquote set a great tone. Consider tightening the phrasing—e.g., “step-by-step guides” vs. “step-by-step guide”—and verify that the Markdown blockquote renders correctly (leading > and a blank line before it).

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f885a6e and e116366.

📒 Files selected for processing (1)
  • README.md (1 hunks)
🧰 Additional context used
🪛 LanguageTool
README.md

[grammar] ~65-~65: The base form is expected after “to”.
Context: ...?v=qTSDPkPyPqs) [video] - [C#: _How to Augmented Reality AR Tutorial: ARKit Portal to th...

(WHAT_TO_VBD)


[duplication] ~81-~81: Possible typo: you repeated a word.
Context: ...c52) - Go: Building Blockchain in Go - [Go: _Code your own blockchain in less th...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~85-~85: Possible typo: you repeated a word.
Context: ...Script**: Build your own Blockchain in JavaScript](https://github.com/nambrot/blockchain-in-js) - [JavaScript: _Learn & Build a JavaScript Blockcha...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~87-~87: Possible typo: you repeated a word.
Context: ...vaScript**: Creating a blockchain with JavaScript](https://github.com/SavjeeTutorials/SavjeeCoin) - [JavaScript: _How To Launch Your Own Production-R...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~93-~93: Possible typo: you repeated a word.
Context: ...actical Introduction to Blockchain with Python_](http://adilmoujahid.com/posts/2018/03/intro-blockchain-bitcoin-python/) - [Python: Let’s Build the Tiniest Blockchain...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~109-~109: Possible typo: you repeated a word.
Context: ...How to Build Your First Slack Bot with Python](https://www.fullstackpython.com/blog/build-first-slack-bot-python.html) - [Python: _How to build a Slack Bot with Pytho...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~113-~113: Possible typo: you repeated a word.
Context: ...**: How To Create a Telegram Bot Using Python](https://www.freecodecamp.org/news/how-to-create-a-telegram-bot-using-python/) - [Python: _Create a Twitter Bot in Python Usin...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~121-~121: Possible typo: you repeated a word.
Context: ...alize your local git contributions with Go_](https://flaviocopes.com/go-git-contributions/) - [Go: _Build a command line app with Go: l...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~127-~127: Possible typo: you repeated a word.
Context: ...ool) - Rust: Command line apps in Rust - [Rust: _Writing a Command Line Tool in Rust...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~149-~149: Possible typo: you repeated a word.
Context: ... Container Using Less than 100 Lines of Go_](https://www.infoq.com/articles/build-a-container-golang) - [Go: _Building a container from scratch i...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~158-~158: Possible typo: you repeated a word.
Context: ...2d59b25c) - C: Virtual machine in C - [C: Write your Own Virtual Machine](ht...

(ENGLISH_WORD_REPEAT_RULE)


[grammar] ~163-~163: The handheld game console is spelled as two words.
Context: ....html) - [C++: Emulation tutorial (GameBoy emulator)](http://www.codeslinger.co.u...

(GAMEBOY)


[grammar] ~167-~167: The handheld game console is spelled as two words.
Context: ...2016/12/chip8-cpu/) - [JavaScript: GameBoy Emulation in JavaScript](http://imrann...

(GAMEBOY)


[duplication] ~176-~176: Possible typo: you repeated a word.
Context: ...cript**: Gooact: React in 160 lines of JavaScript](https://medium.com/@sweetpalma/gooact-react-in-160-lines-of-javascript-44e0742ad60f) - [JavaScript: _Learn how React Reconciler package ...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~181-~181: Possible typo: you repeated a word.
Context: ...wn Simplified AngularJS in 200 Lines of JavaScript_](https://blog.mgechev.com/2015/03/09/build-learn-your-own-light-lightweight-angularjs/) - [JavaScript: Make Your Own AngularJS](http://te...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~191-~191: Possible typo: you repeated a word.
Context: ... C: How to Program an NES game in C - [C: Chess Engine In C](https://www.you...

(ENGLISH_WORD_REPEAT_RULE)


[style] ~201-~201: In this context, ‘focus’ is usually used with the preposition “on”.
Context: ...ial in C++ platform independent focused in game logic for beginners_](http://javil...

(FOCUS_IN)


[duplication] ~221-~221: Possible typo: you repeated a word.
Context: ...m/) - Ruby: Developing Games With Ruby - [Ruby: Ruby Snake](https://www.diatomente...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~248-~248: Possible typo: you repeated a word.
Context: ...a simple artificial neural network with Go_](https://sausheong.github.io/posts/how-to-build-a-simple-artificial-neural-network-with-go/) - [Go: _Building a Neural Net from Scratch ...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~252-~252: Possible typo: you repeated a word.
Context: ...hon**: A Neural Network in 11 lines of Python](https://iamtrask.github.io/2015/07/12/basic-python-network/) - [Python: _Implement a Neural Network from Scr...

(ENGLISH_WORD_REPEAT_RULE)


[misspelling] ~270-~270: This word is normally spelled as one.
Context: ...th-keyboard) - [C: Build a minimal multi-tasking kernel for ARM from scratch](https://g...

(EN_COMPOUNDS_MULTI_TASKING)


[duplication] ~278-~278: Possible typo: you repeated a word.
Context: ...loader/) - Rust: Writing an OS in Rust - [Rust: _Add RISC-V Rust Operating System Tu...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~298-~298: Possible typo: you repeated a word.
Context: ... Writing a Simple Garbage Collector in C](http://maplant.com/gc.html) - [C: _C interpreter that interprets itsel...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~310-~310: Possible typo: you repeated a word.
Context: ...o/cradle/) - Haskell: Write You a Haskell - [Haskell: _Write Yourself a Scheme in 48 Hours...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~318-~318: Possible typo: you repeated a word.
Context: ... to implement a programming language in JavaScript_](http://lisperator.net/pltut/) - [JavaScript: Let’s go write a Lisp](https://idi...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~323-~323: Possible typo: you repeated a word.
Context: ...hon**: A Python Interpreter Written in Python](http://aosabook.org/en/500L/a-python-interpreter-written-in-python.html) - [Python: _lisp.py: Make your own Lisp interpr...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~325-~325: Possible typo: you repeated a word.
Context: ...**: How to Write a Lisp Interpreter in Python](http://norvig.com/lispy.html) - [Python: Let’s Build A Simple Interpreter](...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~353-~353: Possible typo: you repeated a word.
Context: ...lding a Vector Space Indexing Engine in Python_](https://boyter.org/2010/08/build-vector-space-search-engine-python/) - [Python: _Building A Python-Based Search Engi...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~360-~360: Possible typo: you repeated a word.
Context: ... - C: Tutorial - Write a Shell in C - [C: Let's build a shell!](https://gith...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~372-~372: Possible typo: you repeated a word.
Context: ...oach: Building a toy template engine in Python_](http://alexmic.net/building-a-template-engine/) - [Python: A Template Engine](http://aosabook...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~387-~387: Possible typo: you repeated a word.
Context: ...gnition System with Machine Learning in Python_](https://medium.com/devcenter/developing-a-license-plate-recognition-system-with-machine-learning-in-python-787833569ccd) - [Python: _Building a Facial Recognition Pipel...

(ENGLISH_WORD_REPEAT_RULE)


[uncategorized] ~404-~404: The official spelling of this programming framework is “Node.js”.
Context: ...t's code a web server from scratch with NodeJS Streams_](https://www.codementor.io/@zi...

(NODE_JS)


[duplication] ~410-~410: Possible typo: you repeated a word.
Context: ...ing a basic HTTP Server from scratch in Python_](http://joaoventura.net/blog/2017/python-webserver/) - [Python: _Implementing a RESTful Web API with...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~419-~419: Possible typo: you repeated a word.
Context: ...**: Learn how to write a hash table in C](https://github.com/jamesroutley/write-a-hash-table) - [C: _The very basics of a terminal emula...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~438-~438: Possible typo: you repeated a word.
Context: ... — call(), apply() and bind() method in JavaScript_](https://blog.usejournal.com/implement-your-own-call-apply-and-bind-method-in-javascript-42cc85dba1b) - [JavaScript: _JavaScript Algorithms and Data Stru...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~453-~453: Possible typo: you repeated a word.
Context: ...o create a real-world Node CLI app with Node_](https://medium.freecodecamp.org/how-to-create-a-real-world-node-cli-app-with-node-391b727bbed3) - [Node.js: Build a DNS Server in Node.js](...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~464-~464: Possible typo: you repeated a word.
Context: ... Content-Based Recommendation Engine in Python_](http://blog.untrod.com/2016/06/simple-similar-products-recommendation-engine-in-python.html) - [Python: _Stock Market Predictions with LSTM ...

(ENGLISH_WORD_REPEAT_RULE)


[duplication] ~465-~465: Possible typo: you repeated a word.
Context: ... Stock Market Predictions with LSTM in Python](https://www.datacamp.com/community/tutorials/lstm-python-stock-market) - [Python: _Building a simple Generative Advers...

(ENGLISH_WORD_REPEAT_RULE)


[uncategorized] ~470-~470: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...lugin) - [Ruby: A Pedometer in the Real World](http://aosabook.org/en/500L/a-pedomet...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[duplication] ~472-~472: Possible typo: you repeated a word.
Context: ... - Rust: Building a DNS server in Rust - [Rust: _Writing Scalable Chat Service from ...

(ENGLISH_WORD_REPEAT_RULE)

🪛 markdownlint-cli2 (0.17.2)
README.md

45-45: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4

(MD001, heading-increment)


383-383: Spaces inside link text
null

(MD039, no-space-in-links)


455-455: Spaces inside link text
null

(MD039, no-space-in-links)

🔇 Additional comments (3)
README.md (3)

11-41: Approve hierarchical Table of Contents restructure

The reorganized TOC now clearly groups “Build your own” projects under a nested “Tutorials” list, and all links use backticks for tech names. Please double-check that each link’s anchor (e.g., #build-your-own-3d-renderer) matches the actual heading IDs after GitHub’s sanitization rules.


475-477: Approve addition of YouTube clone tutorial

The new TypeScript entry for “Build a YouTube Clone with Next.js 15: React, Tailwind, Drizzle, tRPC” integrates nicely under “Uncategorized.” Ensure the video link is accessible, and consider moving it to its own category once you have other similar entries.


478-482: Approve new “Contribute” section

The “Contribute” guidelines are clear and consistent with the rest of the document. Thanks for adding calls to action for PRs and issue reviews.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant