Linktree Clone mit VueJS und StoryBlok als Headless CMS

Möchte man bei einem Post auf Instagram einen Link hinzufügen, dann wird man schnell bemerken, dass das nicht möglich ist. Man kann nur einen einzigen Link in der so genannten „Bio“ hinzufügen. Was aber, wenn man mehrere Links seinen Produkten im Shop oder zu Blogartikeln erstellen möchte?

Services wie Linktree oder Liiink.me bieten die Möglichkeit eine kleine Seite zu erstellen, auf der man ein paar Buttons anlegen kann. In der Free-Version sind diese Services leider alle begrenzt. So lässt sich die Optik dieser Seite nur eingeschränkt anpassen und auch die Anzahl der Buttons ist limitiert.

Als Webentwickler wollte ich keinen externen Service dafür hernehmen und so habe ich mir solch einen Linktree-Clon selbst gebaut. Hier das Endergebnis: links.andreas-stricker.at

Dafür habe ich folgenden Tech-Stack verwendet:

VueJS mit Vite

In diesem Projekt habe ich erstmals Vite ausprobiert. Der Development Server startet um ein Vielfaches schneller als vergleichsweise der von vue-cli.

Bildschirmfoto 2021 02 09 um 21.54.46


Die Vorteile von Vite:

💡 Instant Server Start
⚡️ Lightning Fast HMR
🛠️ Rich Features

📦 Optimized Build
🔩 Universal Plugins
🔑 Fully Typed APIs

Was ist ein Headless CMS?

Herkömmliche Content-Management-Systeme wie WordPress oder Typo3 bestehen normalerweise aus einem Backend (um die Inhalte zu verwalten) und einem Frontend (um die erstellten Inhalte dem User anzuzeigen).

Ein Headless CMS bietet das reine Backend mit Schnittstellen an, um die Inhalte in ein eigens entwickeltes Frontend zu laden. In meinem Fall habe ich das Frontend mit VueJS erstellt und storyblok als Headless CMS verwendet, um auf deren Benutzeroberfläche die einzelnen Button-Inhalte zu erstellen.

Inhaltsstruktur in storyblok

Da ich meine Links in drei Kategorien unterteilt haben möchte, habe ich in meinem neuen space in storyblock für jede „Kategorie“ einen eigenen Ordner angelegt.

Bildschirmfoto 2021 02 09 um 21.58.08

Sämtliche Inhalte dieser Kategorien kann man im query mit starts_with auslesen.

Bildschirmfoto 2021 02 09 um 22.52.58

Für die Button-Inhalte habe ich mir einen eigenen Content-Type „Button“ angelegt (Content-Types sind mit Custom-Post-Types von WordPress vergleichbar) .

Das Schema für den Content-Type „Button“ ist mit folgenden Feldern aufgebaut:

  • Titel – slug: title
  • Beschreibung – slug: description
  • Bild – slug: image
  • Link – slug: link
Bildschirmfoto 2021 02 09 um 21.56.59 edited

Die Teaserbilder für die Buttons können direkt in storyblok hochgeladen werden.

Bildschirmfoto 2021 02 09 um 21.57.43

Inhalte von Storyblok Mit GraphQL auslesen

Um die zuvor angelegten Inhalte in VueJS auszulesen, habe ich mich an diese Anleitung gehalten und die Queries ein wenig angepasst, um die Items aus den Ordnern auszulesen.

OWNLINKS auf Github

Das Projekt kann auf Github geclont und mit eigenen Inhalten und Styles verwendet werden. Die Credits muss dafür erhalten bleiben.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Weitere Artikel

Freebie-Automation mit Brevo: So baust du deinen Lead-Magneten auf

Wer online Sichtbarkeit aufbauen will, kommt an einer eigenen E-Mail-Liste kaum vorbei. Social Media Algorithmen kommen und gehen, aber das Postfach deiner Kontakte gehört dir. …

Nützliche Apps für Thailand: Deine App-Checkliste für Bangkok & Co

Dein digitales Überlebenspaket für digitale Nomaden und Reisende In meinem letzten Artikel habe ich darüber geschrieben, warum Bangkok für mich die ideale Homebase als digitaler …