Skip to content

Commit

Permalink
Add details on Strapi setup and RSS feed optimization
Browse files Browse the repository at this point in the history
Expanded the article to include insights on using Strapi for endpoint creation and feed models. Described the RSS optimization process using database-stored XML and CRON jobs for efficient feed generation.
  • Loading branch information
LucaNerlich committed Feb 8, 2025
1 parent 1f85209 commit 697ca86
Showing 1 changed file with 4 additions and 0 deletions.
4 changes: 4 additions & 0 deletions blog/articles/tech/2025-02-28-podcast-manager-cms.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ Meine Ziele mit diesem Projekt waren die Folgenden:

Aufgrund der Erfahrungen aus anderen Projekten habe ich mich wieder für das [CMS Strapi](https://strapi.io) entschieden. Strapi kann kostenlos selbst gehostet werden, bietet eine REST API und ist durch Plugins erweiterbar. Insbesondere unterstützt die Medienverwaltung von Strapi den Upload von Dateien und Bildern direkt in AWS S3, welches wiederum eine der kostengünstigsten Cloud-Massenspeicherlösungen ist.

Die Umsetzung des Projekts war relativ einfach, da Strapi bereits viele der benötigten Funktionen mitbringt. Ich habe lediglich einige eigene Endpunkte, Lifecycle Hooks und Controller geschrieben, um die Feeds und Episoden zu verwalten. Die Modelle für Feeds und Episoden sind relativ einfach gehalten, da ich keine komplexen Datenstrukturen benötige. Neben den Standardfeldern wie Titel, Beschreibung und Coverbild gibt es noch eine Verbindung zwischen Feed und Episode, sowie zwischen Feed und "erlaubten Usern" für private Feeds.

Damit die XML-Datei nicht bei jeder Anfrage neu generiert werden muss, speichert jede Episode bei einem Update ihren eigenen RSS `<item/>` Eintrag. Ein CRON-Job generiert einen geänderten Feed, auf basis aller verknuepften Episoden und deren `<item/>` Feldern neu und speichert das XML-Ergebnis in der Datenbank. Die XML-Datei wird dann bei einer Anfrage einfach aus der Datenbank geladen und zurückgegeben. Bei privaten Feeds wird zusaetzlich noch der anfragende Token mit der Liste der "erlaubten Usern" verglichen.

![feeds](/img/tech/sundayprojects/podcastmanager/feeds.png)
> Die Feed-Übersicht
Expand Down

0 comments on commit 697ca86

Please sign in to comment.