Slate – ein Filme und Serien Tracker

Slate - ein Filme und Serien Tracker

Als Filmliebhaberin und stolze Rewatcherin meiner Lieblingsfilme führte ich jahrelang eine Notion-Tabelle mit Filmen und Serien, die ich gesehen habe. Irgendwann reichten mir die Möglichkeiten auf Notion nicht mehr – ich wollte mehr. Mit meinen sehr begrenzten technischen Fähigkeiten und einer klaren Vorstellung setzte ich mich also an meinen eigenen Film-Tracker. Wie gross dieses Projekt werden sollte, war mir zu diesem Zeitpunkt noch nicht bewusst.

Wie bei fast allen meiner Projekte fing ich mit einem Figma-Mockup an. Wenn ich schon ein riesiges Projekt selbst programmieren wollte, soll es auch nach etwas aussehen. Also wählte ich Schriften, Farben und Icons und überlegte mir schon einmal, wo alles ungefähr platziert werden sollte. Ausserdem überlegte ich mir hier, was für Features ich überhaupt haben wollte. Schlussendlich entschied ich mich für diese USPs:

  • Filme und Serien sollen trackbar sein
  • Nutzer:innen sollen sinnvolle und interessante Inhalte empfohlen werden
  • Tags sollen eingebaut werden können, sodass eine hohe Individualisierung möglich ist

Dann kam der intensivste Teil – das Programmieren. Mit einer simplen Login-Boilerplate, Credentials für die „The Movie Database“ API und einigen Gratis-Credits für Copilot legte ich los.
Erst kam die Funktion, dass man neue Filme und Serien tracken kann, dann, dass man diese auch auf alle möglichen Arten filtern kann, sowie dass man sie zu Favoriten oder zur Watchlist hinzufügen kann.

Als Nächstes wagte ich mich daran, eine Funktion zu programmieren, die Nutzer:innen ähnliche Inhalte vorschlägt. Mit viel Ausprobieren, Geduld und einigen Umstrukturierungen der Datenbank gelang mir dies dann. Perfekt ist die Funktion aber natürlich noch nicht.
Wichtig war mir auch, dass man Filme, die man lange nicht gesehen hat, aber gut fand, nicht einfach vergisst. Also erstellte ich gleich eine ganze Seite für Empfehlungen und Neuerscheinungen, sodass man nicht lange heraussuchen muss, was man als nächstes schauen möchte.


Anschliessend kam das ganze Tag-Management. Von der API konnte ich bereits nutzergenerierte Tags in meine Datenbank laden, welche ich später noch manuell kategorisierte. Diese Tags helfen nicht nur bei der Suche nach ähnlichen Filmen und Serien, sondern machen es zum Beispiel auch möglich, sehr spezifische Filme und Serien zu finden.

Als Allerletztes wollte ich noch eine Demo-Version einbauen. Einerseits damit nicht zu viele Leute sich einen Account machen und die Datenbank zu stark wächst, andererseits damit es für Interessierte einfach ist, die Funktionen auszuprobieren, ohne bei null anfangen zu müssen. Die Demo-Session läuft eine Stunde, währenddessen kann man die Features ausprobieren. In der Datenbank gespeichert werden aber nur neue Filme oder Serien, die Nutzende hinzugefügt haben.

Zwischen dem Programmieren all dieser Funktionen gab es natürlich unglaublich viel Bugfixing, CSS-Anpassungen, Edge-Case-Testing und Verzweiflung, wenn mal wieder alles kaputt ging. Irgendwie ging es aber immer weiter. Spätestens, wenn ein neuer Monat anfing und ich wieder Credits für Sonnet 4.5 hatte.

Auf mein Endprodukt Slate (das ist übrigens das englische Wort für eine Filmklappe) bin ich ganz schön stolz. Natürlich sehe ich Verbesserungsmöglichkeiten und Potenzial für noch mehr Features, aber alleine, dass ich meine simple Notion-Tabelle verlassen konnte, ist mir schon Erfolg genug.

Wenn du dir das Projekt genauer angucken willst, kommst du hier zur Landing Page, wo du dich durch die Demo-Version klicken kannst. Die Beispieldaten sind eine Mischung aus Filmempfehlungen von Mitstudierenden, Neuerscheinungen und Filmen mit schönen Covern.

(vha)

Learnings

Spätestens bei diesem Projekt wurde mir klar: Mit KI zu programmieren ist Fluch und Segen zugleich. Sobald ich erstmal den lästigen Part mit dem Aufsetzen und Verbinden der Datenbank und dem Verknüpfen mit dem Server erledigt hatte, stürzte ich mich in das Projekt und hatte mit Copilot relativ schnell einige meiner gewünschten Funktionen programmiert. Immer wieder gab es Momente, Stunden, sogar Tage, in denen die KI aber nicht geholfen, sondern Probleme verursacht hat. Sei das durch Herumpfuschen in Config-Files, durch Halluzinationen (nein, dieses File gibt es gar nicht) oder dadurch, überall eine graue Border-Color zu machen, die ich wiederholt manuell entfernen musste. Mittlerweile habe ich aber mein präferiertes Copilot-Modell gefunden (Claude Sonnet 4.5), welches einen mit dem richtigen Prompt und etwas Glück weit bringen kann.

Immer wieder musste ich auch Edge-Cases testen. Was passiert, wenn ich einen Film hinzufüge, der noch nicht veröffentlicht wurde? Was passiert, wenn ich mehrere Filter anklicke? Wie sieht die Home-Seite aus, wenn noch keine Filme oder Serien hinzugefügt wurden? Auch auf solche Dinge ging viel Zeit drauf, was etwas schade ist, da man als normale Nutzerin gar nicht gross darauf achtet.

Nun zu meinem wohl grössten Learning des gesamten Studiums: Nicht leichtsinnig sein, wenn man mit KI programmiert. Die Demo-Version, also dass nicht jede:r einen Account erstellen muss, sondern erstmal etwas herumprobieren kann, wurde mit Copilot erstellt. Wie die meisten Funktionen, gelang mir dies nicht auf Anhieb, trotzdem funktionierte die Demo-Version nach einigen Versuchen. Wenige Tage später checkte ich meine Seite und bekam eine Fehlermeldung, dass mein Adblocker mich nicht zu Slate weiterleiten würde, da die Domain auf dessen Blacklist stand. Lange Rede, kurzer Sinn: Ich wurde gehackt – ich vermute die Schwachstelle war die Demo-Version – und ich musste mein gesamtes Hosting neu konfigurieren. Was im ersten Moment ein riesiger Schock war, ist im Nachhinein das wichtigste Learning, das ich haben konnte. Ich setzte nochmal alles neu auf, packte alle sensiblen Daten in ein .env-File, änderte unzählige .htaccess-Files (bevor ich diese dann trotzdem alle löschte) und veränderte File-Permissions. Ob das alles reicht, kann ich nur hoffen. Meinen Server überprüfe ich jetzt täglich nach Files, die ich nicht kenne – bis jetzt sieht es gut aus. Cyber-Security-Spezialistin werde ich aber vermutlich trotzdem nie.

Zusammenfassend konnte ich mir mit diesem Projekt viele neue Fähigkeiten aneignen – auch einige, die anfangs nicht geplant waren.