{"id":1863,"date":"2026-06-16T19:53:31","date_gmt":"2026-06-16T10:53:31","guid":{"rendered":"https:\/\/www.weschkalnies.de\/blog\/?p=1863"},"modified":"2026-06-24T23:25:46","modified_gmt":"2026-06-24T14:25:46","slug":"lernprojekt-nuxt-prisma-orm-online-epg-fuer-deutsches-fernsehen","status":"publish","type":"post","link":"https:\/\/www.weschkalnies.de\/blog\/lernprojekt-nuxt-prisma-orm-online-epg-fuer-deutsches-fernsehen\/","title":{"rendered":"Lernprojekt &#8211; Nuxt + Prisma ORM, Online EPG f\u00fcr deutsches Fernsehen"},"content":{"rendered":"<p data-start=\"153\" data-end=\"604\">Ich schaue nur selten klassisches Fernsehen \u2013 meist h\u00f6chstens bei Sportveranstaltungen. Wenn es dann doch einmal vorkommt, hat mich immer gest\u00f6rt, wie umst\u00e4ndlich es ist, schnell herauszufinden, was heute auf welchem Sender l\u00e4uft. Zwar gibt es zahlreiche Webseiten, die das grunds\u00e4tzlich anbieten, doch h\u00e4ufig ist die Bedienung schlecht oder die Seiten sind so mit Werbung \u00fcberladen, dass man lange braucht, um die gew\u00fcnschten Informationen zu finden.<\/p>\n<p data-start=\"609\" data-end=\"825\">Deshalb habe ich als kleines Lernprojekt einen kostenlosen Online-EPG (Electronic Program Guide) f\u00fcr die gr\u00f6\u00dften deutschen Fernsehsender erstellt. Das Ganze ist unter <span class=\"\" data-state=\"closed\"><a class=\"decorated-link cursor-pointer\" href=\"https:\/\/www.flinktv.de\" target=\"_blank\" rel=\"noopener\">flinktv.de<\/a><\/span> erreichbar.<\/p>\n<p data-path-to-node=\"5\">Bisher habe ich zwei Tage Arbeit investiert: Tag 1 floss komplett in den Weg von der Idee bis zur Live-Ver\u00f6ffentlichung, Tag 2 in das Polishing und die Recherche nach Optimierungsm\u00f6glichkeiten. Mobil funktioniert der EPG momentan allerdings nur m\u00e4\u00dfig, da ich hier noch nicht viel Zeit reingesteckt habe. Einige spannende Learnings, die ich aus dem Projekt mitnehmen konnte:<\/p>\n<ul data-path-to-node=\"6\">\n<li>\n<p data-path-to-node=\"6,1,0\"><b data-path-to-node=\"6,1,0\" data-index-in-node=\"0\">GitHub Actions:<\/b> Die meiste Zeit an Tag 1 ging daf\u00fcr drauf, die GitHub Actions ans Laufen zu bekommen. Diese sorgen nun daf\u00fcr, dass die Daten automatisch von der Quelle heruntergeladen und als JSON auf meinem Server gespeichert werden.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"6,2,0\"><b data-path-to-node=\"6,2,0\" data-index-in-node=\"0\">UI-Design:<\/b> Was die Benutzeroberfl\u00e4che angeht, gibt es nat\u00fcrlich noch viel Luft nach oben. Vor allem die Darstellung der Programmkacheln ist noch nicht optimal; hier w\u00e4re ein anderes Datagrid definitiv eine interessante Option.<\/p>\n<\/li>\n<\/ul>\n<p>Im Moment ist f\u00fcr mich noch der wichtigste Punkt die relativ unzuverl\u00e4ssigen GitHub-Actions zu ersetzen. Ich m\u00f6chte mit einem eigenen Cronjob auf einem lokalen Server mir die Daten ziehen und als JSON f\u00fcr die App vorbereiten und deployen.<\/p>\n<p data-path-to-node=\"7\">F\u00fcr mich stand im Vordergrund, den Zeitaufwand \u00fcberschaubar zu halten. Mir fallen zwar unz\u00e4hlige Punkte ein, die man noch verbessern oder ausbauen k\u00f6nnte, f\u00fcr mein Lernziel bin ich mit dem aktuellen Stand aber super zufrieden. Ich werde das Projekt ab jetzt erst einmal ruhen lassen und nur noch sporadisch Verbesserungen vornehmen. Wenn ich das Projekt l\u00e4ngerfristig betreiben will, brauche ich nat\u00fcrlich eine Finanzierungsm\u00f6glichkeit.<\/p>\n<p data-path-to-node=\"7\">Nachtrag: Ich habe mich dazu entschlossen, das Projekt nur noch mit Dummy-Daten zu betreiben. Denn inzwischen sind mir nach einigen Recherchen ein paar Zweifel zur Rechtssicherheit der Programmdaten gekommen. In Deutschland ist es leider so, dass Verwertungsgesellschaften ein genaues Auge auf die Programmdaten der Sender haben und die unautorisierte Nutzung teilweise abmahnen. Um hier kein unn\u00f6tiges Risiko einzugehen, habe ich die echten Programmdaten durch Dummy-Daten ersetzt. Mir ging es ja in erster Linie um den Lerneffekt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich schaue nur selten klassisches Fernsehen \u2013 meist h\u00f6chstens bei Sportveranstaltungen. Wenn es dann doch einmal vorkommt, hat mich immer gest\u00f6rt, wie umst\u00e4ndlich es ist, schnell herauszufinden, was&#8230;<\/p>\n","protected":false},"author":4,"featured_media":1896,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[142,88,89],"tags":[145,146],"class_list":["post-1863","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-apps","category-javascript","category-vuejs","tag-epg","tag-nuxt-js"],"_links":{"self":[{"href":"https:\/\/www.weschkalnies.de\/blog\/wp-json\/wp\/v2\/posts\/1863","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.weschkalnies.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.weschkalnies.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.weschkalnies.de\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.weschkalnies.de\/blog\/wp-json\/wp\/v2\/comments?post=1863"}],"version-history":[{"count":13,"href":"https:\/\/www.weschkalnies.de\/blog\/wp-json\/wp\/v2\/posts\/1863\/revisions"}],"predecessor-version":[{"id":1877,"href":"https:\/\/www.weschkalnies.de\/blog\/wp-json\/wp\/v2\/posts\/1863\/revisions\/1877"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.weschkalnies.de\/blog\/wp-json\/wp\/v2\/media\/1896"}],"wp:attachment":[{"href":"https:\/\/www.weschkalnies.de\/blog\/wp-json\/wp\/v2\/media?parent=1863"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.weschkalnies.de\/blog\/wp-json\/wp\/v2\/categories?post=1863"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.weschkalnies.de\/blog\/wp-json\/wp\/v2\/tags?post=1863"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}