Warum gerade NowCMS?
Jede Firma, jeder Verein möchte eine Webseite. Wer nur eine einfache Web-Visitenkarte will, läßt sich ein beliebiges CMS wie Wordpress (bekannt für seine vielen Sicherheitsprobleme) oder auch wenige statische HTML-Seiten erstellen.
Wer ein volles Warenwirtschaftssystem mit Fakturierung, Onlineshop und allem Drum und dran will, muß mindestens 5- bis 6stellige Beträge ausgeben. Auch für diesen Kundenkreis ist NowCMS (noch?) zu klein - ich empfehle eher Typo3 oder Laravel.
Dazwischen liegen 80% der Selbstständigen, Vereinen und kleineren Firmen. Für diese ist NowCMS gedacht. Sie möchten beliebige Daten effizient, sicher und fehlerfrei schnell organisieren. Für eine Änderung einzelner Geschäftsvorfälle wollen sie nicht eine extra Ausschreibung für einen Webdesigner durchführen. Soll z.B. nun das Geburtsdatum eines Mitglieds erfaßt wreden, möchten sie sich einfach eine weitere Tabellenspalte belegen können, ähnlich wie sie es bei Excek gewöhnt sind.
Was ist bei NowCMS anders?
Während die meisten bekannten und viel genutzten CMS ihren Fokus aufs Design legen, ist NowCMS hier etwas konventioneller, nüchterner - obwohl sich natürlich beliebige Designs für NowCMS entwickeln lassen.
Natürlich erwartet der Kunde ein Design das hinter "den anderen" nicht zurücksteht. Gutes Design besteht aber nach meiner Ansicht aus zwei Dingen:
- Professionelle Fotografie und
- gute Benutzerführung, Effizienz der Bedienung
Die meisten Kunden vergessen aber daß niemand die Firma oder den Verein aus einer Reihe von Kandidaten ausgesucht hat, weil das Design besonders hervorstach. Die allermeisten Besucher eine Webseite haben schon eine Empfehlung aus anderer Richtung erhalten oder sie kommen durch für sie nützliche Schlüsselwörter über Suchmaschinen. Wird der Inhalt (Content) bedient, können Interessenten gebunden werden, wo nur Allgemeinplätze stehen, geht man sofort weiter.
Was kann NowCMS besonders gut?
Alles, was in jedem Betrieb, jedem Verein anfällt sind Daten: Daten des Benutzers, Adressdaten, Bankdaten, Kontaktdaten. Es muß ein Newsletter schnell und effizienz per Mail gesendet werden können, es muß nach Mitgliedern gesucht werden können, beliebige Listen von Personen müssen zusammengestellt werden können. Oder der Mitgliedsbeitreag muß per SEPA-Lastschrift eingezigen werden, es müssen rechnungen geschrieben werden, auch automatisiert.
Alle Daten sind in Tabellen und Datensätzen organisiert, ob auf der Karteikarte oder schon in Excel.
NowCMS macht den Versuch, dem Endnutzer alle Möglichkeiten einer modernen Datenbank zu bieten. Natürlich können die in 34 verschiedenen Datentypen hinterlegbaren Daten schon bei der Eingabe auf Plausibiltät geprüft werden. Es versteht sich von selbst daß dennoch all dies maximal sicher geschieht und den Anforderungen des europäischen Datenschutzes entspricht. Von Anfang an mehrsprachig? Kein Problem, NowCMS kommt vom Start mit deutschen, englisch, französischen und italienischen Dialogen und Bedienoberfläche ("Backend").
Was hat mich bei der Arbeit am CMS geleitet?
- Jede Firma oder sogar ein Verein hat Kunden oder Mitglieder, wir benötigen eine mächtige Nutzerverwaltung die wir auch für die Anmeldung nutzen,.
- Beliebig tief verschachtelte Menüebenen spiegeln die Baumstrukur der URLs.
- Auf den ersten Blick sieht es so aus als wären die Anforderungen von Firmen sehr verschieden, bei genauerer Betrachtung benötigen alle denselben wichtigen Kern an Funktionen: Schutz von Inhalten, fein granulierte Benutzerrechte, Mailingmöglichkeiten, Gruppen und "Etiketten", Internbereiche, Tabellen von Daten um nur das Nötigste zu nennen.
- Natürlich muß ein CMS dennoch erweiterbar sein nach individuellem Bedarf der Auftraggeber.
- Funktionserweiterungen des CMS sollten größtenteils allein dadurch möglich sein, daß im "Backend" einfach weitere Datenfelder und Tabellen "hinzugeklickt" werden, Schreiben von Code sollte wo möglich vermieden werden. NowCMS startet mit einigen Tabellen und Datenobjekten wie Ticketsystem, Aufgabenliste, Adress- und Kontodatenbank, Rechnungen sowie einen Kalender. Nutzer die diese Funktionen nicht benötigen haben eine einfache Möglicheit die Tabellen ganz oder teilweise zu löschen, zu deaktivieren oder auszubauen.
- Wir sollten darauf achten wenig Code zu erzeugem denn wenig Code bedeutet leichter zu pflegenden Code der besser auditiert werden kann.
- Die Nutzerliste muß direkt auf der Webseite pflegbar sein denn niemand will Daten aus einer Mail die durch ein Kontaktformular veranlasst wurde in eine Excel-Tabelle übertragen und dann wieder ins Web etc.
- Es sollte trivial sein, automatisiert z.B. Begrüßungsmails senden zu lassen z.B. nach einer erfolgreichen Registrierung.
- Automatische PDF-Erzegung für Tabellen sowie für einzelne Datensätez egal welchen Formats.
- Außer der Ausgabe von Listen und einzelnen Listenelementen (wie z.B. eine Produktbeschreibung) sollten auch automatisches Blättern (Paginierung) unterstützt werden ebenso wie eine Blog-artige Abfolge von kleinen Artikeln oder Kommentarstil oder auch Versionierung von Artikeln.
- Durchgehende Mehrsprachigeit ist selbstverständlich bei allen Menüs und Meldetexten. NowCMS ensteht schon vom Start in vier Sprachen (deutsch, englisch, französisch und italienisch)
- Auto-Erzeugung von Inhaltsverzeichnissen und Sitemaps
- Nutzer sollten in der Lage sein, auf einen gesicherten Link in einer Mail zu klicken, um z.B. ihre Präferenzen für den Newsletter-Empfang festzulegen oder auch für Umfragen.
- Es soll eine beliebige Anzahl von Gruppen / Etiketten (Tags) angelegt werden können; Nutzer können einer beliebigen Menge solcher Gruppen zugeordnet werden.
- Es sollte keine festen "Rollen" wie "Autor" ,"Redakteur" geben -nicht alles ist ein Blog. Zu schützende Bereiche der Webseite (wie jede einzelne Seite und die darunterliegenden) kann zum Lesen und / oder Schreiben / Ändern nur für Mitgleder einer bestimmten Gruppe geschlossen werden. Auf diese Weise ist eine sehr fein granulierte Rechteverwaltung möglich.
- Gruppen haben keine feste Bedeutung und sind zunächst beliebigen Etiketten ("Labels") vergleichbar, die man Nutzern oder einer Menge von Nutzern zuweisen kann.
- Dateien oder Bilder die nicht öffentlich abrufbar sind müssen durch geeignete Maßnahmen und zufällig aussehende Dateinamen vor unberechtigtem Zugriff geschützt werden.
- Es soll auch mögch sein, verschiedene Versionen derselben Datei mehrfach zu speichern - auch bei übereinstimmendem Dateinamen.
- Automatische Deduplikation von Dateien
- Um die Zahl von Downloads messen zu können und Berechtigungen des Downloads zu prüfen muß versteckter Inhalt durch ein Skript ausgeliefert werden, welches Berechtigungen prüft und eventuell Dateinamen für den Download erzeugt.
- Nur ein Skript "index.php" darf im öffentlichen Bereich des Webservers neben den öffentlich sichtbaren Dateien wie manche Bilder CSS, Icon usw. sichtbar sein. Geschützte Dateien müssen im nichtöffentlichen Teil gespeichert sein, eventuell verschlüsselt.
- Saubere suchmaschinenfreundliche und merkbare URLs (ohne .php - Endungen)
- Mailings sollen mithilfe der Gruppenmitgliedschaften einfach abgewickelt werden können.
- Durch das Mailing-Werkzeug sollen durch sukzessive Filterung eine genau definierte Menge an Nutzern erstellt werden können. Aus dieser Menge kann wiederum eine neue Gruppe erzeugt werden.
- Angemeldete Nutzer müssen in der Lage sein, ihre Stammdaten selbst zu pflegen (Eventuell entstehen dabei zur Beweissicherung alte Versionen).
- Das "Backend" (Administrationsoberfläche) eines CMS muß genauso aussehen wie das "Fronend" (öffentlicher Teil der Webseite) - nur sieht der Administrator mehr Menüs und hat mehr Knöpfe, Eingabemasken und Optionen um den Content zu ändern.
- Nicht zugängliche Optionen oder Datenfelder und Knöpfe dürfen nur für Berechtigte sichtbar sein.
- Der Nutzer soll in der Lage sein, möglichst viele Dinge seines Vertrages oder seiner Daten selbst regeln zu können, wie z.B. Newsletter-Abonnement, Tickets und Aufgaben.
- Das CMS muß sich sehr gut und frühzeitig gegen alle Arten von Angriffe verteidigen können (brute force, DDoS-Angriffe, sogar langsame "Spider") um frühzeitig und effezient Angreifer sperren und sich schützen zu können.
- Das CMS muß sehr schnell sein (wenige Millisekunden pro Aufruf einer normalen Seite) - um die Angriffsfläche möglichst klein zu halten.
- Alles ist eine Tabelle: Es muß einfach sein, zu bestehenden Tabellen (wie der Benutzertabelle) weitere Datenfelder hinzuzufügen.
- Es soll möglichst vermieden werden, für neue Funktionen neuen Code in Form von Erweiterungsmodulen hinzuzufügen: Ist eine Idee gut genug, wird sie vielen Nutzern interessant erscheinen, dann sollte die Funktion in den Kern von NowCMS aufgenommen werden..
- "Training on the job": Das CMS startet mit vielen vordefinierten Inhalts- und Datentypen. Der Integrator einer neuen Webseite modifiziert und löscht dann nach Belieben. Durch die Beispiele sollten kaum Blicke ins Handbuch nötig sein - überall sollte Hilfe in Form von "Tooltips" verfügbar sein.
- Komplexe Datenformate: Ein Nutzer kann mehrere Postadressen, mehre Bankverbidnungen und Kontakte haben können. Die Postadressen sollen durch Bemerkungen wie "Privat" "Geschäftlich", "Bisherige Adresse", "Rechungsadresse" voneinander unterschieden werden können, ähnlich die anderen Kontakte (Mobil, Fax, Privat Festnetz, Skype, Web, Email, WhatsApp usw..
- Neue Nutzer sollen sich selbst registrieren können - aus eine Frage im Kontaktformular kann gleich ein neuer Nutzeraccount angelegt werden.
- Nicht jede Firma ist ein "Shop", deshalb greifen viele Standard-Web-CMS nicht. Spezialisierte Dienstleistungen wie meine kleine Telefongesellschaft benötigen spezielle Softwaretools um Datenströme wie Verbindungsdaten zu verwalten. Die Fakturierung muß wiederkehrende Rechnungspositionen ebenso verwalten können wie automatisch PDFs erzeugen udn versenden.
- Zahlungsdaten (Lastschrift) können mit dem europäischen SEPA-XML-Format erzeugt und übertragen werden.
- Teile der Webseite dürfen nur für speziell Berechtigte zugänglich sein - ebenso darf geschützter Content nur nach Prüfung der Berechtigungen ausgeliefert werden und nicht durch Dateinamen raten möglich sein.
- Die Zugänglichkeit der einzelnen Seiten kann sehr genau an Gruppen gebunden sein Dies ist der wichtigste Mechanismus um Zugang und Berechtigung zu regeln.
- Das CMS implementiert eine Programmierschnittstelle (API) welche "RESTful " gestaltet ist oder sehr nahe dran. Auf diese Weise ist JSON / XML / CSV oder sogar ein OpenDocument -Export von Dateien einfach möglich.
- Das CMS muß sehr sicher sein, Hinzufügen von externen Code-Modulen sollte vermieden werden da die synchrone Weiterentwicklung durch Drittentwickler nicht sichergestellt ist.
- Funktion und Benutzerfreundlichkeit geht über Design-Flexibilität.
- Das CMS wird zusätzlich dadurch abgesichert daß Dateien in wichtigen Ordnern nicht verändert werden können - ebenso wichtige statische Konfigurationsvariablen und Texte.
- Durch das Auslagern von Texten und Konfigrationsvariablen in PHP-Dateien wird eine starke Beschleunigung erreicht.
- Das Installationsskript prüft stets das Vorliegen sämtlicher Vorbedingungen und versucht fehlende Einstellungen oder Daten zu "reparieren". Er lädt sogar aktuellen Code nach oder prüft ob Code modifiziert wurde.
- Während des Installationsprozeses wird Code über ein verschlüsseltes und abgesichertes Verfahren überprüft und ggfs. aktualisiert.
- Wir nutzen keine extern geladenen Skripte, auch werden Fonts lokal gespeichert. Dadurch kann auch mithilfe der "Security headers" ein Maximum a Sicherheit erreicht werden.
- Wir nutzen zwar eien JacaScript-Werkzeug für das Editieren von HTML, für Frontendbenutzer ist jedoch JavaScript nicht nötig. Auch im Backend kann ohne JavaScript problemlos gearbeitet werden.
- Die Suchfunktion ist stark kontextabhängig: Es werden nur Ergebnisse gezeigt die der angemeldete Besucher durch seine Berechtigungen zugängllich sind.
- Das CMS enthält von Anfang an Tabellen wie Postadressen, Bankkontakte, weitere Kontakte, Inventarliste, Kalender, ein Ticketsystem, Aufgabenliste, Kontaktformulardaten, Liste der Weiterletungen bei nicht gefundenen URLs, usw. - es ist für Integratoren einfach nicht benötigte Dinge zu löschen oder anzupassen.
- Ein globales CSS Datei wird automatisch aus allen Einzelteilen erzeugt.