A full stack video service that lets users upload and consume their own custom video content
Table of Contents
I was trying to learn more about scalable backend development, specifically about how to make a video application since I love watching youtube videos, and I wanted to see if I could recreate the video application on my own using my Django Rest Framework knowledge to recreate it, instead of FastAPI like how they did in the video. I also wanted to learn more about Typescript on the frontend. I'm aiming to use this project as a starting point for diving deeper into backend development and systems design.
- I used django-storages to use AWS S3 as the storage provider
- Created a Video, and Box model in the django ORM to store mp4 videos, and generic files respectively
- Used ModelSerializers to serialize the data in our models, an ModelViewsets to provide CRUD operations
- Used Docker to containerize the frontend and the backend
- Used Typescript on the frontend
- Implement a robust social featureset such as users, users' liked and shared videos, authentication
- Use Redis to store the urls of the most popular videos, so that they get served to the users extremely quickly
- Use ElasticSearch and make a 'video search feature'
- Transcode Video (ffmpeg?) , then publish the message to Kafka
- Use Kafka as a central bus for moving data
- Load Balancer
- Switch from SQLLite to a different database, to store our metadata
- Follow openAPI specifications
If you would like to reuse this project, you can add your own AWS credentials to the SETTINGS.PY
file, hopefully with an .env file, and create a S3 bucket on AWS.
Using docker and docker-compose, we can easily run the project on different environments.
To run the backend, cd into the fullstackvideo directory and do
docker-compose up --build
To run the frontend, cd into the frontend directory and do
docker-compose up --build