The backend uses Express and Mustache for templating. It's available in both English and Spanish. It uses a vanilla JS stack, without any frameworks. The app consists of 3 different views: the homepage, the search view, and the video view. I chunked my code so that only scripts critical for loading this specific view are loaded, and all other scripts are are async + deferred.
A video illustrating the user flow and video discovery.
Under the hood, yt-for-me uses both ffmpeg and ytdl-core. As a web developer, I don’t often work with binaries like ffmpeg, but luckily there’s a precompiled binary that works with Heroku.