Moin moin und hallo,

ich möchte für meinen Blog / andere Webseiten einen Cloud-Dienst entwickeln, der das Starten und Moderieren von Diskussionen zu Artikeln unkompliziert ermöglicht.


Ziel

Wie vermutlich bekannt ist, wurde dieser Blog mit Wintersmith entwickelt und das finale Ergebnis ist eine Sammlung von statischen HTML-Ressourcen. Da kein aktives Backend mit angebundener Datenbank vorliegt, ist es unmöglich aus dem System selbst heraus eine Kommentar-Funktion an zu bieten. Aber im Zeitalter der Wolke und API ist das kein großes Problem mehr seinen Blog / Webseite mit entsprechender Funktionalität aus zu statten.

Es gibt bereits einige Dienste, wie z.B. DISQUS, die so etwas anbieten.

Der Grund warum ich nicht Disqus oder andere, ähnliche Dienste nutzen möchte liegt in deren AGBs begraben.

Denn anders, als man es zuerst vielleicht denken mag, registrieren sich die Nuzter, die an der Diskussion teilnehmen möchten, nicht bei der jeweiligen Seite sondern bei dem Anbieter der Kanäle. Damit gehören die Nutzerdaten natürlich dem jeweiligen Anbieter, der widerrum in seinen AGBs schon vorab ankündigt, die Nutzerdaten ggfs. an Dritte weiter zu reichen.

Und das ist für mich persönlich ein Ausschlusskriterium. Keiner der Kommentatoren / Diskussionsteilnehmer soll um seine persönlichen Daten fürchten.

Deshalb möchte ich einen eigenen Clouddienst (namentlich “Diskurs”) ins Leben rufen, wo die Benutzerdaten 100% sicher sind und nicht weiterreicht werden.

Diesen Dienst werde ich in Zukunft weiter ausbauen und schlussendlich auch anderen zur Verfügung stellen.

Anforderungen

In diesem Teil, der Projektdokumentation, möchte ich zunächst die Anforderungen beschreiben, die ich selbst an die Software stelle, bzw. meine Idee etwas mehr beleuchten.

Der Anwendungssfall lässt sich, meiner Meinung nach, im ersten Schritt in folgende Stakeholder und Motivationen einteilen:

Use Case Diskurs App


Use Case

Schauen wir uns die Punkte im einzelnen an:

  1. Neue Diskussion starten / beenden

    • Als Moderator möchte ich neue Diskussions-Kanäle öffnen als auch schließen können
    • Eine Diskussion hat immer einen Titel und kann zeitlich terminiert werden
  2. An Diskussion teilnehmen

    • Als Nutzer (Kommentator) und Moderator möchte ich an einer Diskussion teilnehmen können und Kommentare schreiben
  3. Auf Kommentare antworten

    • Als Nutzer und Moderator möchte ich auf eingereichte Kommentare direkt antworten können
    • Dazu kann ein Zitat mit angezeigt werden
  4. Diskussion moderieren

    • Als Moderator möchte ich Diskussionen leiten und Kommentare erst sichten und dann manuell freigeben
  5. Spam vermeiden

    • Damit nicht nur Spam kommentiert wird sollen Nutzer nicht anonym kommentieren dürfen, d.h. müssen sich mit einer validen E-Mail erst registieren
  6. Trolle ausschließen

    • Als Moderator möchte gezielt Nutzer, die sich nicht an die Diskussionsregeln halten oder fragwürdige Kommentare hinterlassen, von weiteren Diskussionen ausschließen

Klassendiagramm

Ausgehend von den im Anwendungsfall beschriebnen Anforderungen und Annahmen, lässt sich folgendes Datenmodell ableiten:

Model Diskurs App


Dazu einige Anmerkungen:
  1. Alle Modelle enthalten eine ID, ein Anlagedatum und ein Datum der letzten Änderung, weshalb diese aus dem Digramm, der Übersichtshalber, raus gelassen worden sind.

  2. Moderator und Commentator erben zwar von “User”, diese Klasse wird jedoch nicht als eine eigenstädige Tabelle realsiert.

  3. Moderator können Kommentatoren nur für Ihre eigenen Diskussionen blockieren.

  4. Kommentator kann eine Benachrichtigung für seine Kommentare einstellen, falls jemand auf seinen Kommentar antwortet.

  5. Ein Moderator kann für seine Kanäle eine Einstellung vornehmen, das alle neuen Kommentare ungeprüft angezeigt werden.

  6. Ein Moderator kann für seine Kanäle eine Einstellung vornehmen, das er bei Eingang eines neuen Kommentars benachrichtigt wird.


Backend

Damit ergeben sich folgende notwendige Backend-Masken:

  1. Registrierung

  2. Login

  3. Verwaltung Kanäle

  4. Verwaltung Kommentare

  5. Verwaltung Profil

  6. Verwaltung Blockaden


Frontend

Für das eigentliche Diskussions-Frontend werden folgende Masken benötigt:

  1. Diskussionsverlauf

  2. Login

  3. Kommentar erstellen

  4. Antwort erstellen


Fazit & Ausblick


Das ist schon eine Menge Holz, das ich hier noch hacken muss.

Sicher werden sich die Anforderunge, wie bei jedem Projekt, im Verlauf noch ändern und neue hin zu kommen.

Der Umfang und die Ziele für die erste Version sind aber jetzt schonmal gesetzt.

Im nächsten Teil möchte ich dann auf die ersten Implementierungsdetails eingehen.


#### In diesem Sinne, bis demnächst!