/gt-db_public

Eine Büchereiverwaltungs Web-App für das Gymnasium Trittau

Primary LanguageEJSMIT LicenseMIT

GT-DB

Eine Büchereimanagement Web-App für das Gymnasium Trittau

Features

  • Ausleihstatus in Echtzeit
  • Benutzerkonten
  • Mehrere Berechtigungsebenen
  • Suchfunktion
  • Modernes, schlichtes Design

Gliederung

Changelog
Handbuch
Installation

Changelog

23.02.2022

Kleinere Verbesserungen.

21.01.2022

Module aktualisiert, um Sicherheitslücken zu schließen.

25.11.2021

Die Startseite enthält nun einen Link zum GitHub-Repository und ein Datum der letzten Aktualisierung.

23.11.2021

Neues Feature: Die Suchfunktion unterstützt nun die direkte Suche eines Begriffs in einer bestimmten Kategorie. Beispielsweise per Link.

Handbuch

Registrieren und Anmelden

Dies ist die Startseite.

Wenn ihr schon einen Account habt, könnt ihr euch auf dieser Seite mit eurem Benutzernamen oder eurer Email und Passwort einloggen. Wenn ihr euer Passwort vergessen habt, klickt den Link "Passwort vergessen ?" unten links. Zum Registrieren öffnet den Link "Registrieren" unten rechts.

Hier seht ihr das Registrierungsformular.

Füllt es mit eurer iServ-Emailadresse und Passwort aus und ihr seid startklar.

Wenn ihr euch erfolgreich registriert habt, seht ihr diese Info und könnt euch mit eurem angezeigten Benutzernamen oder eurer Email einloggen. Der Benutzername wird klein geschrieben und ist in der Regel euer Vorname und Nachname getrennt durch einen Punkt, so wie in eurer iServ-Email.

Dashboard

Das ist das Dashboard, wo ihr die Status von ausgelaufenden Ausleihen und bald auslaufenden Ausleihen sehen könnt. Für die Zukunft ist noch eine Funktion zum halbautomatischen Senden von Emails an Personen mit ausgelaufenden und bald auslaufenden Ausleihen geplant. Darunter habt ihr eine Suchfunktion, womit ihr nach allem suchen könnt, sei es ein Buchname, Autorname, Genre oder ISBN. Die Tabelle ist eine zufällige Auswahl an Büchern, die als Anregung oder Inspiration dienen soll. Über den Button "Alle Bücher" werdet ihr zu einer Seite weitergeleitet, die euch alle eingetragenen Bücher anzeigt.

Sidebar

Eine Sidebar zur Navigation zwischen den Bereichen könnt ihr mit den zwei Strichen oben links in der Ecke ausklappen. Dort seht ihr dann im Optimalfall euer Profilbild, Namen und Links zu den verschiedenen Bereichen.

Suchfunktion

Zum Suchen tippt ihr einen Begriff in die Suchleiste und klickt auf die jeweilige gewünschte Suchkategorie.

Alle Bücher

Die Tabelle mit allen Einträgen zeigt euch verschiedene Informationen auf einen Blick. Beispielsweise ob ein Buch zur Zeit verfügbar ist, durch einen grünen oder roten Kreis für verfügbar oder nicht verfügbar. Wenn ihr auf den Buchnamen klickt, werdet ihr zur Buch-eigenen Seite weitergeleitet, zu der ich gleich komme. Wenn ihr jedoch auf einen Link in der Spalte "Genre" oder "Autor" klickt, werdet ihr zur Suche weitergeleitet, die euch alle Bücher mit dieser Eigenschaft liefert.

Individuelle Buchseite - Ausleihen und Zurückgeben

So sieht eine Buchseite aus. Hier könnt ihr mit dem Stift oben rechts Eigenschaften eines Buches bearbeiten oder - wie in diesem Fall - ergänzen. Wenn ein Buch verfügbar ist, also wenn weniger Exemplare ausgeliehen wurden als eingetragen sind, hat das Cover eine grüne Umrandung. Unterhalb seht ihr die Ausleihhistorie des Buches, also von wem aus welcher Klasse das Buch von wann bis wann ausgeliehen wurde.

Um ein Buch an jemanden auszuleihen, gebt in die Felder Name und Klasse der Person ein und klickt auf ausleihen. Das angezeigte Datum ist immer das Aktuelle, kann aber auch geändert werden, falls im Nachhinein Einträge angelegt werden.

Wenn ein Buch also ausgeliehen wurde und nicht mehr verfügbar ist, sieht die Seite so aus. In der Ausleihhistorie ist nun eingetragen, was ihr zuvor eingegeben habt. Mit dem eingekreisten Kreuz könnt ihr die Ausleihe beenden, wenn das Buch zurückgegeben wurde. Gut zu wissen ist hierbei, dass der Status in Echtzeit mit allen Geräten, die dieses Buch anschauen synchronisiert wird, sodass es nicht vorkommen kann, dass ihr ein Buch verleiht, dass kurz zuvor durch jemand anders verliehen wurde. Hilfreich ist das auch, wenn man mit mehreren Leuten viele Bücher auf einmal eintragen möchte.

Buch hinzufügen

Hier könnt ihr neue Bücher eintragen. Ihr müsst alles ausfüllen, bis auf die ISBN, die ist optional. Anschließend "Hinzufügen" klicken. Wenn ihr ein Buch hinzufügen möchtet, was schon vorhanden ist, also zum Beispiel ein zweites "Die Drei ??? - Geisterinsel", dann tut das über die bucheigene Seite, dort könnt ihr die Anzahl des Büches anpassen.

Administration

Hier seht ihr alle registrierten Benutzer und könnt ihnen den Zugriff gestatten oder verweigern. Dies wird durch die Regler neben "Manager" kontrolliert. Standardmäßig haben neu registrierte Benutzer die Rolle "Manager" nicht, das kann aber durch einen Klick geändert werden.

Einstellungen

In den Einstellungen könnt ihr eurer Passwort ändern und ein Profilbild festlegen.

Abmelden

Abmelden könnt ihr euch durch diesen Button oben rechts in der Ecke.

Die Tour durch die App endet hier.

Installation

Das Ziel dieser Anleitung ist es, alle Programme so zu installieren und einzustellen, dass die Software autark läuft. Konkret heißt das, dass im Falle eines Neustarts die Programme von selbst gestartet werden und kein weiterer Benutzereingriff notwendig ist. Für diese Anleitung nutze ich Ubuntu Server 20.04 als Betriebssystem.
Drei Programme werden benötigt:

  • Git
  • MongoDB
  • Docker
  • Docker Compose

Pakete aktualisieren

Nutzen Sie sudo apt update && sudo apt upgrade um sich zu vergewissern, dass Paketlisten und Pakete auf dem neuesten Stand sind.

Docker installieren:

Führen Sie sudo apt install docker aus.

Docker Compose installieren:

Führen Sie sudo apt install docker-compose aus.

MongoDB installieren:

Befolgen Sie diese Anleitung.

Klonen des Quellcodes:

Führen Sie git clone https://github.com/KnechtNoobrecht/gt-db_public.git in einem Verzeichnis Ihrer Wahl aus.

Erstellen der .env-Datei:

Navigieren Sie in das Verzeichnis, in das Sie den Quellcode geklont haben.
Öffnen Sie den Ordner gt-db_public.
Erstellen Sie eine .env-Datei mit einem Text-Editor Ihrer Wahl.
Ein Beispiel: Führen Sie nano .env aus.
Anschließend erstellen Sie vier Einträge.

  1. DBPASSWORDLOCAL
    Dies ist das Passwort mit dem sich die Webapp zur Datenbank verbindet. Sie können es selbst wählen, verwenden Sie jedoch ausschließlich alphanumerische Zeichen.

    Beispiel: DBPASSWORDLOCAL="A6yzNShCTCe8mzVP"

  2. DBUSER
    Dieser Eintrag muss zwingend wie folgt sein: DBUSER="superuser"

  3. IPADDRESS
    Die IP-Addresse, unter der die Datenbank läuft, zu der sich die Webapp verbindet

    Beispiel: IPADDRESS="localhost"

  4. SRVPORT
    Der Port unter dem der Webserver läuft. Zu Testzwecken empfehle ich, einen Port zu wählen, der nicht 80 oder 443 ist, da Linux diese Standardmäßig blockiert, beziehungsweise Adminrechte erfordern, was aber nicht praktikabel ist.

    Beispiel: SRVPORT="4434"

  5. COOKIESECRET
    Ein Passwort, mit dem die Cookies verschlüsselt werden.

    Beispiel: COOKIESECRET="durchEinSicheresPasswortErsetzen"

  6. UPDATEFOLDER
    Vollständiger Pfad zur Installation des Programms.

    Beispiel: UPDATEFOLDER="/home/user/gt-db_public"

MongoDB konfigurieren:

In dem Installationsverzeichnis gt-db_public erstellen Sie den Ordner db (oder nennen Sie ihn wie Sie möchten) indem Sie mkdir db ausführen.
Anschließend führen Sie sudo chown -R mongodb:mongodb /pfad/zu/ihrem/datenbankordner aus, wobei sie /pfad/zu/ihrem/datenbankordner mit dem absoluten Pfad zu Ihrem eben erstellten Datenbankordner ersetzen.
Sie haben bereits ein Passwort für MongoDB ausgesucht.
Nun sichern Sie die Datenbank mit diesem Passwort.
Dazu starten Sie die Datenbank mit folgendem Befehl: mongod --dbpath="./db", vorrausgesetzt Sie befinden sich in dem Ordner gt-db_public.
Anschließend verbinden Sie sich zur Datenbank, indem Sie mongo localhost ausführen. Ersetzen Sie dabei localhost durch eine entsprechende IP-Adresse, falls Sie von einem anderen Computer zugreifen.

Wechseln Sie mit use admin zur admin Datenbank.
Anschließend nutzen Sie folgenden Befehl, wobei Sie changeMeToAStrongPassword mit Ihrem Passwort ersetzen:

db.createUser(
  {
    user: "superuser",
    pwd: "changeMeToAStrongPassword",
    roles: [ "root" ]
  }
)

Als letztes muss noch ein Text-Index erstellt werden.
Dies tun Sie, indem Sie use gt-db gefolgt von
db.books.createIndex({name:"text", description:"text"}, {default_language: "german"}) ausführen.
Mit exit schließen Sie das Ganze ab.
Bei Problemen lesen Sie bitte diesen Artikel.

Um zu vermeiden, dass Benutzereingriffe nötig sind, müssen Änderungen an der Konfigurationsdatei vorgenommen werden.
Dazu führen Sie sudo nano /etc/mongod.conf aus.

In dieser Datei ändern Sie dbpath zu dem absoluten Pfad zu Ihrem Datenbank-Verzeichnis.
Zum Beispiel: dbpath: /home/julius/gt-db_public/db

Außerdem muss die Zeile #security: zu security: verändert werden, und in der Zeile darunter authorization: "enabled" eingefügt werden. Somit nutzt MongoDB das von Ihnen erstellte Passwort.
Das Endprodukt sollte wie folgt aussehen:
code snippet Damit ist die Einrichtung der Datenbank abgeschlossen.

Zertifikat und Private Key generieren:

Lesen Sie diesen Artikel.

Node.js App einrichten:

Auf einigen Systemen ist es möglich, dass folgende Befehle nötig sind, um zu gewährleisten, dass Docker ordnungsgemäß funktioniert:

sudo chown $USER /var/run/docker.sock
usermod -G docker $USER

Navigieren Sie in den Ordner gt-db_public und führen Sie npm install aus.
Anschließend führen Sie docker-compose up aus und die App wird gestartet.

Docker und MongoDB beim Systemstart automatisch starten lassen:

Docker: sudo systemctl enable docker
MongoDB: sudo systemctl enable mongod