Jellyfin - A Buggy Mess

By Daniel Samson · 2024-10-24

I have grown tired of bugs in Jellyfin UI, like mis-identifying movies, the subtitles not switching off, poor discoverability and less than premium search capabilities.

Administrative Nightmare

My current setup automatically downloads content. The trouble with it, is that, it constantly downloads items that I am not very interested in and will never watch.

I keep running out of disk space. Now I have the fun job of manually removing videos, updating the Jellyfin index, and fix the mis-identified content. This is not exactly what I initially had in mind when I started using Jellyfin.

Reverse Engineering

So I thought "I am a professional dev right? How hard could it be to fix Jellfin?".

The default setup uses a sqlite database file. Armed with a database client you can inspect how Jellyfin stores the data. To my surprise, the database is very flat, almost structure less. Instead of using the database normalisation, like I was taught to do, they instead have one big table with a tonne of fields. This table holds all the meta information and the physical locations of each file.

The advantage of denormalising data in the this way is that it helps Jellyfin quickly index your videos and identify them.

Creating a new Front-End is a no go!

Without structuring items into separate tables, it means that Jellyfin's database encourages poor API design. If you read the api docs for Jellyfin, the API reference shows that the endpoints are extremely bloated. They are not focused endpoints which only do one small thing.

I was hoping that I could create a new front end in react for Jellyfin. However, the API is not up to the standard I needed and I don't like working with .NET. So modifying the backend and deploying to linux would be a pain, at least for me.