NodeJS Simple Linklist

Hallo Leute,

heute gibt es etwas Code für euch. Irgendwie kam mir die Idee, das die Welt ein kleines, einfaches, dateibasiertes Linklisten-Script in NodeJs gebrauchen könnte. Nach ein paar wenigen Codezeilen war das Projekt dann auch schon umgesetzt.

Screenshot

Simple Linklist Screenshot

Simple Linklist Screenshot

Features

Die Featureliste ist relativ klein, da das Script nicht viel können muss und entsprechend einfach gehalten wurde. Das wahrscheinlich wichtigste Feature ist die Speicherung der Links als Dateien im Dateisystem. D.h. es wird keine Datenbank benötigt.

  • TreeView
  • Caching (RAM/Disk)
  • Link description
  • Flat-file „database“

Installation

Die Installation ist entsprechend einfach. Es gibt folgende Voraussetzungen:

  • NodeJS
  • NPM

Sind diese erfüllt, so klont man das Repository und folgt den offensichtlichen Schritten:

git clone git@github.com:gehaxelt/Nodejs-Simple-Linklist.git
cd Nodejs-Simple-Linklist
npm install

Zuletzt muss man noch zwei beschreibbare Ordner erstellen:

mkdir cache links

Entscheidet man sich bei der Konfiguration für den RAM-Cache, so brauch der „cache“ Ordner nicht erstellt werden.

Konfiguration

Es existiert eine „config.js.example“, welche man zunächst übernehmen kann:

cp config.js.example config.js

Möchte man die IP + Port der Webbapplikation bzw. das Caching-Verhalten anpassen, so sollte man einen Blick in diese Datei rein werfen. Wird „ramcache: false“ gesetzt, so wird die Festplatte als Cache genutzt.

Benutzung

Kategorien

Die Benutzung ist sehr einfach gehalten. Für eine neue Kategorie muss man einen neuen Ordner im „links“-Ordner erstellen. Dabei beachtet das Script Verschachtelung. D.h. für eine Unterkategorie muss entsprechend ein Unterordner angelegt werden. Der Name des Ordners ist gleichzeitig der Name der Kategorie. Auf Linuxsystemen hat man mehr Spielraum mit den Sonderzeichen.

Links

Um neue Links in einer Kategorie anzulegen, muss einfach eine Datei in dem entsprechenden Ordner angelegt werden. Der Name der Datei ist dabei der „Name“ des angezeigten Links. Der Inhalt der Datei sollte dabei folgender Struktur folgen:

cat Linkname
URL
Beschreibung

Beispiel:

cat example.com
http://example.com/foo
An example website
Führt zu <a href="http://example.com/foo">example.com - An example website</a>

Zum Testen kann man einen Blick in den „links.example“ Ordner werfen.

Updating der Webseite

Die Webseite aktualisiert sich nach einer Änderung der Links/Kategorien im „links“ Ordner nicht automatisch, da diese Informationen im Cache gehalten werden. Möchte man ein Update erzwingen, so muss man eine (leere) „update.txt“ Datei im „links“ Ordner anlegen:

touch links/update.txt

Beim nächsten Aufruf der Webseite wird diese Datei erkannt, ein Update des Caches durchgeführt und die Datei gelöscht.

Man kann also wunderbar per „rsync“ seine Linkliste mit dem Webserver synchronisieren.

Abschluss

Das Projekt ist unter GPLv3 released und man findet den Source auf GitHub. Ich hoffe es gefällt euch. Verbesserungen bzw. Kommentare sind gerne gesehen.

Grüße,
Sebastian