I want to build a video streaming application similar to Netflix. I have been considering the use of the following stacks: React (front-end) and NodeJS(backend), but I don't know how to go about it. Someone also mentioned I should use AWS. I'm really stuck with how to go about this; if you have idea, tutorials, sample projects, or suggestion, please help. Thanks!
The first question is always.... What are your user needs?
That will help you see if you need to serve mobile users, low-bandwidth users, app users, or someone else.
It is also worth considering - what do your users want that your competitors don't provide?
Only then can you start looking at technology solutions.
extends @edentAs the above answer points out, you can't just start building "netflix."
Think of the smallest functional unit. For a streaming service which is equivalent to Netflix, I would start with digital-rights management. I have worked with people trying to build an internet radio station, and after we were done with everything, we had to shut down the project because the copyright and licensing prices were... let's just say, too high.
Once you are sure what you want to achieve, you can start piecing together your architecture. What are you thinking of in the first iteration (milestone) of your project? Profile management along with some sort of streaming? Make a gantt chart because this is a project of that scale.
After you are done with your checklist, start with the basics. Start with a loosely coupled backend and frontend (Node/React, as you say). Design the API specs and start implementing it. For example, start with the database and ER diagrams; then write the migrations and seeds for those. Once you have finished the profile, auth and on-boarding stages, start with the content.
What sort of raw content will you receive? What will be the encoding parameters? What sort of streaming quality are you looking at? For example, when you get a license to redistribute digital content, you get the highest quality possible. This is, then, stored on your storage gateways and encoded on-the-flow in chunks which is then sent to the frontend to render and play.
Let's say you have a 18 GB file (pretty common at 4/8k). What's your pricing model? Is it just hop on and everyone gets the same quality? Or, more like Netflix, do you wish to give different quality sets to different users? If you do want to change the quality based on the plan the user has bought, you need to set up the encoding process. AWS has a service for this. I'd strongly suggest you to read up on it and look at its pricing as well. If you want more customizations, you can opt for AWS Lambda to build the encoder. Considering you're using Node.js, you'd want to write custom transcoders based on
libavand package it as amodulewithinnode_modules.Your initial infrastructure would be a good frame of reference for the budget you have and vice-versa.
Once you have decided which puzzle piece grabs your fancy, hit us up here and we'll continue from there.