Überblick
Personen
- Mitglieder
- Zahlungen
- Mitglied Karte generieren
- Verwaltungsmitgliede
Niederlassungen
- Konten
OrganisationenBriefe creatorOrte
- Bewertungen
Veranstaltungen
- Teilnehmer
- Rapports
- Unterlagen (z.B Präsentationen)
BuchhaltungMaterialen, LagerbestandNewsletter via E-Mail und SMSWiki bzw. Intranet
Technische Anforderungen
Versionskontrolle
Anforderungen:
- Private Projekte
- CI/CD
- Integration für Hoster
- Issue Tracking a la Tickets für die einzelnen Vorgehen
- Visuelle Boards
- Time Trackings a la Deadlines
- Code Documentation
- Wiki / Gitbook
Provider:
- GitHub
- Vorteile
- Grössere Community
- Mehr Integration
- Mehrheitlich für public repositories vorteilhaft.
- Nachteile
- 3 Contributor bei privaten Projekten
- Vorteile
- GitLab
- Vorteile
- Genug Integration
- Grosse Unterstützung für private und öffentliche Projekte
- Alle Anforderungen werden erfüllt.
- Nachteile
- Keines..?
- Vorteile
Entscheid:GitLab, da die Unterstützung für private Projekte besser gewährleistet wird.
Backend / Frontend
Anforderungen:
- Stabil, modern
- Community & Unterstützung
- Breite Funktionsumfang & Erweiterbar
- Bestehende Lösungskonzepte für die Berechtigungen
- Logging
- Mobilekonform & HTML5 & CSS3
Backend Technologie:
- Spring Boot Java mit REST API
- Nodejs Express
Frontend Technologie
- React/Redux
- Vue
Präferenz:
- React & Spring Boot (Mixed Mode)
Nützliche Links:
- https://spring.io/guides/tutorials/react-and-spring-data-rest/
- https://hackernoon.com/package-your-react-app-with-spring-boot-a-how-to-guide-cdfm329w
- https://dzone.com/articles/creating-spring-boot-and-react-crud-full-stack-app
- https://dzone.com/articles/spring-boot-and-react-happily-ever-after
- https://medium.com/@mukundmadhav/build-and-deploy-react-app-with-spring-boot-and-mysql-6f888eb0c600
- https://developer.okta.com/blog/2018/07/19/simple-crud-react-and-spring-boot
Videos:
- Spring Boot and React JS | Full Course | 2020
- Bootiful Development with Spring Boot and React – Matt Raible
- Java Full Stack Application With React And Spring Boot – First 10 Steps
- https://www.udemy.com/course/full-stack-application-with-spring-boot-and-react/
Entscheid:React und NodeJS
Relationale Datenbank
Provider:
- MySQL
- Postgres
Entscheid:
PostgreSQL: Ist 100% Open Source und gehört der Community, somit kann keine Firma den PostgreSQL abkaufen. Grosse Firmen migrieren von Oracle zur PostgreSQL.
Berechtigungen
Anforderungen:
- Authentication
- Login / Logout
- Authorization
- Rollenbasiert
- Funktionsberechtigung
- z.B: Sosyal Hizmetler, GOB, Sekreter usw.
- Bereichsberechtigung
- z.B: Genel Merkez, Bölge, Sube, Ana Teskilat usw.
- Funktionsberechtigung
- Anzeige- & Schreibschutz auf Attributebene
- Ich darf die Adressdaten der Person sehen, aber nicht, wieviel er gespendet hat.
- Rollenbasiert
Libraries:
Nützliche Links:
- https://docs.spring.io/spring-security/site/docs/5.3.3.BUILD-SNAPSHOT/reference/html5/#servlet-authorization
- https://owasp.org/www-project-top-ten/
- https://www.pluralsight.com/courses/owasp-top10-aspdotnet-application-security-risks
- https://blog.lukaspradel.com/user-role-permission-security-rbac-in-spring-security-4/
- https://developer.okta.com/blog/2017/10/13/okta-groups-spring-security
- https://dzone.com/articles/simple-secure-role-based-access-control-rbac-for-r
- https://www.journaldev.com/8748/spring-security-role-based-access-authorization-example
Videos:
- [Spring Boot Security] #12 Configure Role Based Authorization
- [011] Role based access control with Spring boot and spring security [Mcroservice in & out – 011]
Verlauf / Historie
Anforderungen:
- Technische Datenhaltung
- Keine Daten werden gelöscht! Die Historie muss nachverfolgbar sein.
- NiceToHave: Auf einem Objekt kann man die Historie auch sehen und die Änderungen einzeln nachverfolgen!
Entscheid:Datenbank triggers. Jede Änderung wird in einer zweiten Tabelle gespeichert.
Datenbank Migration bei Modell Anpassungen
- Wenn eine neue Version herausgebracht wird, welche Datenmodell Anpassungen beinhaltet, soll die laufende Version automatisch migriert werden, ohne manuell eingreifen zu müssen.
- Erweitern und Reduzieren einer Tabelle und den Typ einer Spalte ändern usw. sollen möglich sein.
- Bei einer Neuafsetzung eines Systems sollen alle Migrationen auch automatisch eingespielt werden.
Entscheid:Steht noch nicht fest
Hosting
Front End Hosting:
Back End Hosting:
Backup / TestDB
Anforderungen:
- Tägliche Backups der DB
- Rolling Backups alle 2 (?) Wochen
- Eine zweite TestDB für die Benutzung in der Entwicklung?
Umgebungen
- Mindestens 1 Testumgebung und 1 Live-Umgebung
Glossar
- SABE: Der Sachbearbeiter, die Person, welche das Portal bedient.
- User: Eine Repräsentation einer Person im System mit seinen diversen Daten wie Strasse, Geb.Datum usw.
- Mitglied (Member): Definiert eine Person, welche eine Beziehung zu einer Niederlassung und zu einer Organisation hat.
- Aktiver Mitglied: Eine Person, welche periodisch einen Mitgliedsbeitrag einer Niederlassung und einer Organisation zahlt.
- Normalerweise bei der AT und KT der Fall.
- Passiver Mitglied: Eine Person, welche keinen Mitgliedsbeitrag zahlt. Ist in der Regel in der GT Organisation der Fall.
- Bei der GT und KGT der Fall.
- Aktiver Mitglied: Eine Person, welche periodisch einen Mitgliedsbeitrag einer Niederlassung und einer Organisation zahlt.
- Verwaltungsmitglied SYK (Boardmember):
- Verwaltungsmitglied BYK (Boardmember):
- Niederlassung (Branch): Symbolisiert einen Orts-, Regional- und Zentralverband. Die Strukur ist durch die Hierarchie gewährleistet.
- Organsiation (Organization): Die Organisationen innerhalb eines Verbandes wie AT, GT, KGT und KT.
- Funktion (Function): Die einzelnen Aufgabengebiete einer Verwaltung wie Teskilatlanma, Tanitma, Muhasebe usw.
Funktionsumfang
User – Passive Mitglieder
- Erfassung einzelner Personen für eine Niederlassung.
- Eine Person kann in mehreren Niederlassungen/Ortsverband/Regionalverband Mitglied sein.
- Eine Person kann in mehreren Organisationen Mitglied sein.
- Ein Mitglied muss aber in einer Niederlassung und in einer Organisation drin sein.
- Die Mitgliedschaft hat ein Start-(Pflicht) und ein End-Datum (Optional).
- Der SABE darf eine neue Person auch nur in seinem Branch und in seiner Organisation erfassen.
- Im Sub-Branch soll er keine neuen Daten erfassen können.
- Höchstens soll eine Aktualisierung des Datensatzes möglich sein.
- Bei der Erfassung der Personen muss die Mitgliedschaft zwingend erfasst werden.
- Q: Was passiert, wenn für mehrere Organisation die Person mehrfach erfasst wurde?
z.B: GT hat eine Person erfasst. AT erfasst die gleiche Person erneut.- Normalerweise sehr wichtig. Zurzeit der grösste Pain. Denn die jetzigen Bilanzen entsprechen nicht der Wahrheit.
- Z.B. Der Jugendpräsident ist gleichzeitig Mitglied bei der AT. Dann wird er doppelt gezählt.
- A: Über die Pflege der Personen ist jede Organisation selbst verantwortlich. Die SABE müssen ausgewählte, geschulte Personen sein.
- Opt: Wir bieten eine Funktion an, welche die Ähnlichen/Gleichen Einträge ermittelt und ausgibt.
- Die Sub Personen können ausfindig gemacht werden. Aber die Parent-Personen ausfindig zu machen ist schwierig.
- Ein weiteres Problem ist dann die Erfassung der Personen mit unterschiedlichen Buchstaben.
- Opt: Eindeutigkeit via Name, Vorname, Telefon-Nr oder Email Adresse. => Ein wichtiges Thema.
- Es wird aber höchstwahrscheinlich am Anfang ein manueller Task sein.
- Datenschutz muss tiefgründig analysiert werden.
- Opt: Wir bieten eine Funktion an, welche die Ähnlichen/Gleichen Einträge ermittelt und ausgibt.
- Normalerweise sehr wichtig. Zurzeit der grösste Pain. Denn die jetzigen Bilanzen entsprechen nicht der Wahrheit.
- Suche aller Personen für eine Niederlassung.
- Der SABE darf nur die Personen sehen, welche auch in der gleichen Niederlassung oder in einer Sub-Niederlassung sind, wie er selbst.
- Die Personen der Sub-Niederlassungen werden nicht automatisch mitangezeigt. Denn es braucht eine explizite Mitglieder-Beziehung zur Niederlassung. Es ist aber vorstellbar, dass trotzdem eine Möglichkeit (z.B. via Checkbox) angeboten wird, wodurch die Sub-Mitglieder auch aufgelistet werden.
- Organisation
- Variante 1: Alle Personen, welche für die Niederlassung erfasst worden sind, werden angezeigt.
Dabei wird nicht zwischen den Organisationen (AT, GT, KGT, KT) unterschieden. Diese können per Suchkriterium weiter eingeschränkt werden. - Variante 2: Es werden nur die Personen entsprechend der Organisations-Hierarchie angezeigt.
D.h. Wenn die suchende Person der AT dieser Niederlassung angehört, sieht er all die Sub-Organisations Personen auch. Aber wenn die suchende Person der GT dieser Niederlassung angehört, sieht er nur die Personen von dieser Organisation.
- Variante 1: Alle Personen, welche für die Niederlassung erfasst worden sind, werden angezeigt.
- Der SABE darf nur die Personen sehen, welche auch in der gleichen Niederlassung oder in einer Sub-Niederlassung sind, wie er selbst.
- Beendigung einer Mitgliedschaft
- Die Mitgliedschaft zu einer Organisation und zu einer Niederlassung kann auf ein bestimmtes Datum beendet werden.
- Wenn das End-Datum abgelaufen ist, wird diese Person nicht mehr in der Suche für die Niederlassung dargestellt.
- Die Person, welche keine aktiven Mitgliedschaft hat, wird sie deaktiviert.
- Löschen einer Person
- A: Diese kann beantragt werden. Die Admins überprüfen das Anliegen und Löschen dann manuell die betroffenen Objekte.
User – Aktive Mitglieder
- Möglichkeit um einen periodischen Mitgliedsbeitrag zu zahlen.
- Auf der Person soll eine Übersicht sein, welche die bezahlten Mitgliederbeiträge darstellt.
- Defaultmässig soll für das aktuelle und das letzte Jahr dargestellt werden.
- Weitere Jahren sollen nach Wunsch aufklappbar sein.
- Es braucht eine stufenweise Erinnerung wie z.B. nach 6, 12, 18 Monaten usw.
- In erster Linie müsste der SABE diese selbst pflegen.
Statistik
- Mitgliederanzahl über die letzten 5 Jahre.
- Verwaltungsmitgliederanzahl über die letzten 5 Jahre.
- Die Übergänge von GT in die AT.
- Staatsbürgerschaft
- Jahresbilanz über die Teilnahmen der Mitglieder.
- Jahresbilanz der Mitgliederbeiträgen.
Abi / Abla / Kardes / Verantwortlicher
- In mittlerer Zukunft
- Es gibt kleine Unterschiede zwischen der Verantwortlichkeit und dem Abi-Kardes Projekt.
- Abi/Abla Kardes Projekt ist umfassender.
- Zurzeit brauchts nur die Erfassung der Beziehungen.
- Später kann die Pflege eingebaut werden wie z.B. Notizen, Aktivitäten usw.
Veranstaltungen / Sitzungen / Aktivitäten / Bildung
- In weiter Zukunft…
- Sitzungen, Lager, Altin Hilal, Alemlere Rahmet
- Die Rapporte gelangen in der Regel an den Präsidenten und an die verantwortliche Person.
- Es soll möglich sein bei wiederholende Aktivitäten zurück zu blicken und die Notizen durchzulesen.
- Sitzung mit Datum für eine Organisation und einer Niederlassung
- Sitzungsteilnehmer
- Q: Wer darf alles als Sitzungsteilnehmer hinzugefügt werden?
Demirbas
- In weiter Zukunft…
- Cok kullanilmiyor. Ama aslinda önemlidir.
Spende
- In weiter Zukunft…
- Migration von der alten Welt in die neue Welt ist nicht vorgesehen.
Calisma Takvimi
- Sehr wichtig, eine der zentralen Funktionalität.
- Umfasst sehr vieles, aus diesem Grund muss es auch verstückelt angegangen werden.
- Erfassung/Änderung der einzelnen Aktivitäten an bestimmten Daten.
- Erfassung der Rapporte nachdem diese Aktivität durchgeführt worden ist.
- Die Ansicht der Aktivitäten über eine bestimmte Zeit.
- Die Ansicht der Unterorganisationen über eine bestimmte Zeit.
- Die Ansicht der Niederlassungen über eine bestimmte Zeit.
- Erkennung überschneidender Aktivitäten.
Devir Teslim Formu
- In weiter weiter weiter Zukunft
Excel
- Export der einzelnen Funktionen soll möglich sein.
- Aber Import ist auf gar keinen Fall vorgesehen.
V 1.0
Funktionsumfang:
- Members CRU
- Üye
- Boardmembers CRU
- BYK
- SYK
- Members Search
- Üye von verschiedenen Niederlassungen inkl. Sub-Niederlassungen
- Boardmembers Search
- BYK und SYK von verschiedenen Niederlassungen inkl. Sub-Niederlassungen
- Termination of Membership
- Termination of Boardmembership
- Berechtigung
Akzeptanzkriterien:
- SYK Mitglieder (welche in einem Branch sind und eine Funktion haben) dürfen ihre eigene SYK Mitglieder, welche im gleichen Branch sind und auch eine Funktion haben, sehen.
- SYK Mitglieder dürfen die Mitglieder der eigenen Organisation sehen.
- Users CRU Attribute
- TODO
- Membership
- BoardMembers CRU
- Zu einem bestehenden Mitglied kann eine Verwaltungsmitgliedschaft erfasst werden.
- Es kann nur zu einer Niederlassung oder Sub-Niederlassung erfasst werden, wo auch der angemeldete Benutzer die Rechte dafür hat.
- Falls eine Person zu einer Niederlassung als Verwaltungsmitglied hinzugefügt wird
- Attribute
- Startdatum
- Funktion
- Niederlassung
- TODO
- Members Search
- Such Kriterien:
- TODO
- Inklusive deaktivierte
- Die deaktivierten Members sollen grau angezeigt werden.
- Such Kriterien:
- Boardmembers Search
- Such Kriterien:
- Gleiche Such Kriterien wie Members Search.
- TODO
- Such Kriterien:
- Termination of Membership
- Datum der Beendigung der Mitgliedschaft
- Die Auswahl der Niederlassung, welche gekündigt werden soll.
- Termination of Boardmembership
- Datum der Beendigung der Verwaltungsmitgliedschaft.
- Die Auswahl der Niederlassung und der Funktion, welche gekündigt werden soll.
- Danach soll der Mitglied in eine normale Mitgliedschaft zur Niederlassung übergehen. Dies soll als Information ausgegeben werden.
- Q: Muss z.B: der Tanitma Bsk von AT den Tanitma Bsk von GT sehen?
- Im Moment nicht im Umfang dieser Version.
- Q: Muss die Sub-View nur für bestimmte Funktionen erlaubt sein?
- Nein, alle SYK Mitglieder dürfen die SYK Mitglieder, welche eine Funktion haben, und die Mitglieder der Sub-Organisationen sehen.
- Die Sub-View ist defaultmässig deaktiviert. Um die Sub-Mitglieder auch anzuzeigen, muss das explizit in der Suche angegeben werden.
Security
2-Factor
SMS und/oder 2-Factor App ist ein muss für Benutzern welche Personen Daten lesen können.
Passwort
Passwort reset erlauben?Ja, zuerst sollte der user sich authentifizieren, z.B mit E-Mail, PLZ und 2-factor app. Nach erfolgreichem Authentifizierung sollte der Server einen Code generieren und per SMS an user schicken.Passwort komplexität?Min. 8 Zeichen. Davon mindestens eine Gross & Kleinbuschtaben, sowie einen Zahl und SonderzeichenKonto nach 5 falsche Passwörter sperren?Entsperren wieder erlauben?
Session
Wie lange wird eine Session gültig sein?
SSL
Let’s Encrypt oder SSL Zertifikat kaufen?
API
API limit pro user/tag?
Log
Was werden wir alles Loggen?
- User Anmeldungen
- API anfragen
Monitoring
Was werden wir alles monitoren?
- Datenbank
- Anfragen
Möglichkeiten:
- Grafana
- Zabbix
Statistik
Frontend stastik sammeln?Möglichkeiten:
- Matemo
Failover
Wie sieht unser Failover Strategie aus?
Backup
Wohin?Wie oft?
API Routes v1