hitobito / hitobito_sac_cas Goto Github PK
View Code? Open in Web Editor NEWA hitobito wagon defining the organization hierarchy and additional features for SAC/CAS
License: Other
A hitobito wagon defining the organization hierarchy and additional features for SAC/CAS
License: Other
Für den SKV haben wir bereits einen digitalen Mitgliederausweis umgesetzt.
Als Tech-Demo soll dieser in einer minimalen Variante ebenfalls für den sac-cas Wagon übernommen werden.
Alles im SAC Wagon, ausser wo explizit anders erwähnt.
Diese Teil des Epics beschreibt den Workflow für die Online-Beantragung der Mitgliedschaft für Neumitglieder.
Domain: sac-cas.puzzle.ch
See: #1
Im 2022 wurden 306 Mitgliedschaften geschenkt
evtl. Lösung nur in der Buchhaltung ?
evtl. zusätzliche Rolle Geschenkmitgliedschaft (bereits so vorhanden) als Basis für Verrechnung.
Nachfolgende Tabelle beschreibt die SAC spezifischen Attribute des Person Models:
Umsetzung erfolgt jeweils in Sub-Tickets
🟢 bereits vorhanden, wird implementiert
❌ wird nicht als Personen Attribut realisiert, wird nicht mehr benötigt
❓ Verwendung muss geklärt werden
Status | Property | Person Attribute/Association | Computed | Note |
---|---|---|---|---|
🟢 | Mitgliedernummer | id (pk) | - | Kontakt-Nr aus Navision unique und wird als Mitgliedernr verwendet, Sphinx index und suchbar machen, read-only: kann im UI nicht bearbeitet werden, wir nur angezeigt #89 |
❓ | - | - | via Familien #90, wir brauchen dieses Feld während des Imports um Familien zu identifizieren. Es wird gerade noch abgeklärt ob wir die bestehende Nr. importieren müssen oder einfach eine neue generieren können | |
❌ | Anredecode | - | - | Wird vorerst nicht weiter verwendet |
🟢 | Nachname | last_name | - | |
🟢 | Vorname | first_name | - | |
🟢 | Adresse | address | - | Hitobito hat standardmässig einfach nur ein Feld für die Adresse |
🟢 | Adresszusatz | address | - | |
🟢 | Postfach | address | - | |
🟢 | PLZ | zip_code | - | |
🟢 | Ort | town | - | |
🟢 | Länder-/Regionscode | country | - | |
🟢 | Telefon | phone_number | - | |
🟢 | Telefon direkt | phone_number (direct) | - | |
🟢 | Mobiltelefon | phone_number (mobile) | - | |
🟢 | - | |||
🟢 | Geburtsdatum | birthday | - | |
🟢 | Geschlecht | gender | - | |
🟢 | Sprachcode | language | - | |
❌ | - | - | via Rolle | |
❌ | - | - | via Rolle | |
❌ | - | - | via Rolle | |
❌ | - | - | via Rolle | |
❌ | - | - | via Rolle | |
❌ | - | - | via Rolle | |
❌ | - | - | via Rolle | |
❌ | - | - | via Rollen / Personen Tab Verlauf | |
❓ | Letzter Austrittscode | - | - | Austrittsgrund ggf. Auf Rolle? Als Notiz? Muss noch konzipiert werden |
❌ | - | -r | via Rollen / Personen Tab Verlauf | |
❌ | - | new: membership_entry_at | via Rollen / Personen Tab Verlauf | |
❌ | Vereinsmitgliederjahre | - | new: membership_years | Berechnung der Anzahl Jahre aufgrund mitgliedschaftsrelevanten Rolle (aktive, inaktive) #85 |
❌ | - | - | Eintrittsgrund ggf. Auf Rolle? Als Notiz? Muss noch konzipiert werden | |
🟢 | Eintrittscode Bezeichnung | - | - | Eintrittsgrund #101 |
❌ | - | - | via Qualifikation | |
❓ | Austrittscodetext | - | - | ? Austrittsgrund ggf. Auf Rolle? Als Notiz? Muss noch konzipiert werden |
❓ | Saldo | ? | ? | Wird später mit Faktura zusammen konzipiert |
❓ | Mahnstufe | ? | ? | Wird später mit Faktura zusammen konzipiert |
❓ | Letzte Rechnungsart | ? | ? | Wird später mit Faktura zusammen konzipiert |
❓ | Letzte Rechnungsnummer | ? | ? | Wird später mit Faktura zusammen konzipiert |
❓ | Letztes Rechnungsdatum | ? | ? | Wird später mit Faktura zusammen konzipiert |
❓ | Set Adressaufbereitung | ? | ? | Wird später mit Faktura zusammen konzipiert |
❓ | Stornos vorhanden | ? | ? | Wird später mit Faktura zusammen konzipiert |
❓ | Tagesfakturen vorhanden | ? | ? | Wird später mit Faktura zusammen konzipiert |
❌ | ? | ? |
Alle Mitglieder haben eine Hauptsektion.
Teilweise sind Personen Mitglieder in mehreren Sektionen. Neben der Hauptsektion kennt man beim SAC die Zusatzsektion. Für die zusätzliche Sektion bezahlen Mitglieder nur den Anteil der Zusatzsektion, nicht jedoch den NV Beitrag nochmals.
blocked by: #117
Anpassung gemäss Calc Sheet: https://files.puzzle.ch/apps/files/?dir=/swe/projects/SAC_SchweizerAlpenClub/Hitobito/1_Dokumentation&fileid=5554486
Ziel: Aufbau Grundpaket/Umgebung für den SAC
Inhalt:
main
ggf noch umbenennenblocked_by #96
Beim SAC gibt es verschiedene Beitragskategorien für eine Mitgliedschaft. Heute sind dies:
EINZEL, JUGEND, FAMILIE, FREI FAM, FREI KIND
Zurzeit sind diese Kategorien teilweise noch als einzelne Rollen in Hitobito abgebildet.
Neu gibt es aber nur noch die Rolle Mitglied bzw. Neuanmeldung:
Mechano um die richtige Beitragskategorie zu bestimmen: (siehe auch #98)
Die Beitragskategorie wird beim Erstellen der Rolle bestimmt und persistiert und kann vorerst später nicht mehr geändert werden (attr_readonly)
Die Logik um die Beitragskategorie einer Person zu bestimmen soll in eine eigene Domainklasse untergebracht werden. So kann diese Logik auch beim Selbstregistrierungsformular verwendet werden. (Umsetzung mit #95)
Umsetzung im SAC Wagon, weil die Kategorien und ihr Verhalten sehr SAC-spezifisch sind
in folgenden STI Subclassen werden die Categories(Beitragskategorien) definiert: Group::NeuanmeldungenNV::Neuanmeldung, Group::NeuanmeldungenSektion::Neuanmeldung, Group::SektionsMitglieder::Mitglied
Im Navison Export File kategorien: Einzel, Frei Fam, Jugend, usw.)
See: #1
**Zentralverband**
Externe Kontakte
Kontakt: []
Ressort:
Mitarbeiter: []
Leitung: []
Mitgliederdienst: [:layer_and_below_full]
Rechnungswesen: [:layer_and_below_full, :finance]
IT-Support: [:layer_and_below_full, :admin]
**Sektion**
Kontaktperson: [:contact_data]
Mitglieder
Mitglied: [], basic_permissions_only = true
Ehrenmitglied: [], basic_permissions_only = true
Begünstigte: [], basic_permissions_only = true
Interessent: [], basic_permissions_only = true
Tourenkommission:
Tourenchef: [:contact_data]
Tourenleiter: []
Vorstand
Präsident: [:layer_and_below_read, :contact_data]
Vizepräsident: [:layer_and_below_read, :contact_data]
Kassier: [:layer_and_below_full, :contact_data, :finance]
Hüttenchef: []
Sekretär: [:layer_and_below_full, :contact_data]
Mitgliederdienst: [:layer_and_below_full, :contact_data]
Vorstandsmitglied: [:layer_and_below_read, :contact_data]
Beisitzer: [:layer_read]
Hüttenkommission:
Hüttenchef: [:group_and_below_full]
Hütte:
Hüttenwart: [:group_full]
Hüttenwartspartner: [:group_full]
Mitarbeiter: []
Hüttenbetreuer: []
Hüttenobmann: []
Domain: portal.sac-cas.ch
Vorbereitung der produktiven Umgebung
See: #1
Beim SAC sind Familien wiefolgt definiert:
für max. 2 Erwachsene und beliebig viele Kinder im Alter zwischen 6 und 17 Jahren.
Die Familienmitgliedschaft ist auch für Paare ohne Kinder möglich. Eine Person wird als Hauptkontakt definiert.
Person::Household
im Wagon anpassen um Elternzugang und Haushalte zu linken
assign
save
, remove
anpassen:change_managers
blocked_by: #98
Der Personen-Import soll so angepasst werden das Familien importiert werden.
blocked by: #109
to discuss:
Beim Annehmen einer Neuanmeldung wird die Neuanmeldungsrolle gelöscht und stattdessen eine neue Rolle erstellt.
Die Gültigkeit einer Rolle wird anhand der Attribute created_at
und deleted_at
definiert.
created_at
übernommen werden, oder wird dieser auf die aktuelle Zeit gesetzt?Sobald #92 umgesetzt ist, soll es für die Faktura Attribute (mounted_attrs) möglich sein diese pro Kalendarjahr zu erfassen.
nachdem wir mit hitobito_sac_cas#5 eine erste Gruppenstruktur definiert und umgesetzt haben, soll mit diesem Ticket noch die Events/Kurse usw. definiert werden.
Ein neuer Wagon "hitobito_kunde"
https://github.com/hitobito/hitobito/blob/master/doc/development/04_wagons.md
See: #1
Die Mitgliedernummer soll auf Basis der Navision ID (contact id) weitergeführt werden. So können alle Mitglieder ihre bisherige Mitgliedernummer behalten.
Für in Hitobito neu erstellte Personen wird eine neue Nummer oberhalb des bestehenden Range erstellt.
blocked by: #97, #191, Preisberechnungslogik ERP
Diese Neuanmeldungen werden durch die Sektion verwaltet/bearbeitet
Diese Neuanmeldungen werden durch den ZV verwaltet/bearbeitet
Beide Gruppen haben die Rollen Neuanmeldung Einzel, Jugend, Familie
Bei der Neuanmeldung im SAC müssen die neuen Mitglieder einen Jahresbeitrag sowie eine einmalige Anmeldegebühr bezahlen. Damit für die User klar ist, wieviel sie bezahlen werden müssen, sollen die zu bezahlenden Beträge während der Anmeldung im Selbstregistrierungsformular jederzeit ersichtlich sein.
Die Höhe der zu bezahlenden Beiträge ist abhängig von:
-> dies wird im separaten Issue #191 behandelt
Die im Formular angezeigten Beträge sollen sich dynamisch verändern, je nachdem was der User für Informationen angibt.
Quelle: https://raw.githubusercontent.com/hitobito/hitobito_sac_cas/master/doc/SAC%20Hitobito%20Balsamiq-Mockups.pdf#page=5
Neue CRUD Tabelle unter Einstellungen: Eintrittsgründe
siehe auch #101
Neues Model: SelfRegistrationReason
, self_registration_reasons
text
, string (globalize gem)Auf Model Person
:
self_registration_reason_custom_text, string, null: true, length: 100 chars
, anzeigen auf Person#show
falls gesetztself_registration_reason_id
, belongs_to: :self_registration
, attr_readonly
, anzeigen auf Person#show
falls gesetzt, nicht editierbarEntweder self_registration_reason_custom_text
oder self_registration_reason#text
anzeigen, ggf. Validierung das nicht beide gesetzt sein können
Falls mind. 1 self_registration_reason global erfasst, wird dieses Feature aktiv (feature toggle)
Texte unten in den Kommentaren als seeds im SAC wagon
DRAFT !
update/adjust table
Navision Export Attribut | Inhalt | Hitobito Attribut |
---|---|---|
id (genauen Name klären) | Unique Alabus Personen ID | wird verwendet um die Person in Hitobito zu assignen (person#alabus_id) |
Abo1End | Abo Ende d.o. | Rolle Group::Mitglieder::MagazinAbonnent, :deleted_at |
Abo1Number | Abonummer Magazin | Person#magazin_abo_number #16 |
Abo1 | Print-Abo, Kombi-Abo | Tag auf Person abo:print, abo:kombi |
PrimaryCategory | Einzel, Doppelmitglied | category:Einzel, category:Doppelmitglied |
MemberEntryDate | Eintrittsdatum | Aktivmitglied#created_at |
MemberExitDate | Austrittsdatum | Aktivmitglied#deleted_at |
PrimaryCommChannel | Tag Newsletter falls Wert Newsletter in Exportspalte | |
NameAddOn | weitere Person im gleichen Haushalt | Neues Attribut auf Person#name_add_on, string, null: true, |
Title | Titel Person | neues Attribut title auf Person |
PrimaryAddressCountryLICTranslated | Land z.B. Schweiz, immer deutsche Bezeichnung | person#country, default: CH |
Blocked by: #95, hitobito/hitobito#2237
Siehe auch #109
Eine neue Anmeldung beim SAC erfolgt per sofort, per 1. Juli oder per 1. Oktober. Je nach gewähltem Eintrittsdatum wird der zu bezahlende Jahresbeitrag fürs laufende Jahr reduziert.
Dies soll auch beim Selbstregistrierungsformular berücksichtigt werden.
Siehe #95 das PDF mit allen Mockups und UI Prototyp unter Schritt 3 "Zusatzdaten"
Preisinformationen/Rabatte werden mit #115 umgesetzt
In den beiden Grupen Neuanmeldungen NV und Neuanmeldungen Sektion sollen die Rollen mit Datum in der Zukunft aufgelistet werden. Ausserdem sollen diese Rollen auf der Person und dem Verlauftab der Person sichtbar sein.
Ausserdem gibt es auf dem root_layer einen Filter welche sämtlichen Neuanmeldungen sämtlicher Sektionen auflistet. Dort sollen diese Rollen ebenfalls sichtbar sein.
Mit diesem Ticket sollen Rollen mit Startdatum in der Zukunft eingeführt werden. Dazu soll wie bereits mit End Datum in der Zukunft.
convert_on
auf der Rolle, neues class_attribute convert_to
auf der Rolleconvert_to
durcharbeitet und role entries erstellthttps://saccas.atlassian.net/browse/HIT-4
Export ist im Confluence abgelegt und im Jira-Ticket verlinkt.
Importer schreiben der ähnlich wie die Sektions- und Hütten-Importer mehrmals aufgerufen werden kann.
Die Mitglied-Nr soll als Standard-Spalte in allen Exporten (Tabular, CSV, XLSX) vorhanden sein
Nachdem der Onboarding Prozess weiter spezifiziert wurde, sind folgende Anpassungen an den Gruppen und Importscripts nötig:
Gruppen Neuanmeldungen
Vordefinierter Filter auf dem top_layer 'Neuanmeldungen' welcher sämtliche neu angemeldeten Personen auflistet (in Gruppen SektionsNeuanmeldungenNv)
Manche SAC Sektionen entscheiden für jedes neue Mitglied selber, ob das Mitglied aufgenommen werden soll oder nicht. (Bei anderen SAC Sektionen ist der Prozess automatisiert). Damit die Sektions-Admins die neuen Mitglieder überprüfen und zulassen/ablehnen können, muss die eigens dafür vorgesehenen Gruppe "Neuanmeldungen (Zur Freigabe)" wie folgt angepasst werden.
Für die Verwaltung der Neuanmeldung braucht es in der Gruppe nur die Tabs "Info, "Personen" und "Log".
Im Tab "Personen" braucht es einige der Buttons und Aktionen auch nicht: "Rechnung erstellen", "Liste importieren", "Zu Veranstaltung hinzufügen", "Zu Abo hinzufügen".
-> Optional falls dies einfach möglich ist
Für die Einträge in der Tabelle werden zwei neue Aktionen benötigt.
Beschreibung der Buttons:
Wenn eine der beiden Aktionen gewählt wird, dann muss der User die Aktion im Confirmation modal nochmals bestätigen, vgl. Bild:
Die Texte im Confirmation Modal sind je nach Anzahl gewählter Einträge und nach gewählter Aktion wie folgt:
Titel
Beschreibung
[Primary Button] Secondarybutton
Anmeldung übernehmen
Bitte bestätigen Sie die Übernahme der ausgewählten Anmeldung.
[1 übernehmen] Abbrechen
Anmeldungen übernehmen
Bitte bestätigen Sie die Übernahme der ausgewählten Anmeldungen.
[3 übernehmen] Abbrechen
*Anmeldung ablehnen
Bitte bestätigen Sie die Ablehnung der ausgewählten Anmeldung.
[1 ablehnen] Abbrechen
*Anmeldungen ablehnen
Bitte bestätigen Sie die Ablehnung der ausgewählten Anmeldungen.
[4 ablehnen] Abbrechen
Beim Ablehnen soll zudem ein Textfeld angezeigt werden, in dem eine optionale Bemerkung angegeben werden kann, vgl Bild:
Wenn der User die Aktion bestätigt hat, wird diese durchgeführt, die Liste wird aktualisiert und eine Erfolgsmeldung/Success Message wird angezeigt.
Texte für die Meldung:
Die Anzahl Mitgliederjahre sind für viele Mitglieder interessant. Ausserdem wird man ab einer gewissen Anzahl Mitgliederjahre Begünstigt und muss keinen jährlichen Beitrag mehr bezahlen.
Mit diesem Ticket soll die Berechnung dieser Anzahl Jahre umgesetzt werden.
Person#membership_years
. Dieser muss ersetzt werden.Person pausiert Mitgliedschaft für ein paar Monate
Beim Import müssen wir auch berücksichtigen, dass teils unerklärte Mitgliederjahre in den zu importierenden Daten vorhanden sind. Dies ist aber ein Import-Thema und kann hier ignoriert werden.
Siehe #147
Role#with_membership_years
, welcher die Berechnung der Mitgliederjahre direkt in der Datenbank ausführt und diese als neues Feld exponiert
LEAST(CURDATE(), role.deleted_at, role.delete_on) - role.created_at
Person#with_membership_years
, welcher die Berechnung der Mitgliederjahre direkt in der Datenbank ausführt und diese als neues Feld membership_years
exponiert
checken/anpassen damit Verwalter mit layer_and_full_below Abos von Sektionen verwalten kann.
Bisher befindet sich die Auswahl für die Mitgliedskategorie, das Erfassen von Familienmitgliedern aber auch die Abfrage weitere Anmeldedetails komplett auf der Website des SAC. Neu springt man direkt auf Hitobito ab und alle Angaben erfolgen dort:
Siehe auch Ablaufdiagramm in #94
Die Familienmitgliedschaft ist zulässig für:
Diese Kriterien werden in Schritt 2 des Formulars validiert. Sind die Kriterien nicht erfüllt, kann nicht mit Schritt 3 weitergefahren werden
Das man Personen im gleichen Haushalt gleichzeitig über das Selbstregistrierungsformular erfassen kann sehen wir mal im Core vor. Falls es zu aufwändig wird, dann wir dies ein reines SAC Wagon feature.
Falls im Core, Registrierung für mehrere Personen kann auf der Gruppe aktiviert/deaktiviert werden. Default: deaktiviert
PartnerIn und Kinder mit erfassen im Selbstregistrierungsformular
Alle neu erstellten Personen erhalten die gleiche Rolle (Neuanmeldung)
#102: Logik um die Beitragskategorie zu bestimmen wiederverwenden
Submit Button Text anpassen je nach dem was für eine Beitragskategorie bestimmt wurde: [ Registrieren ] Neuanmeldung Familie (mit Logik aus #102)
Hier mal ein paar Links zum Thema Authentifizierung bei hitobito via Azure AD und OpenID Connect:
Weitere, bereits gelöste Themen im Bereich Authentifizierung:
Als SAC Mitglied
will ich den Mitgliederausweis auf meinem Hitobito Profil anzeigen
um mich auszuweisen.
Als SAC Hüttenwart will ich
den Mitgliederausweis QR Code eines Kunden scannen
um zu prüfen, ob die Mitgliedschaft gültig ist.
Der PDF Ausweis wie er im Prototyp vorhanden ist wird entfernt und es soll direkt ein QR-Code angezeigt werden.
Smart-Phone view:
Important
In den Mockups wird auf dem QR Code ein SAC Logo angezeigt.
Für das MVP rendern wir den QR Code aber OHNE Logo.
app/domain/people/membership/verify_qr_code.rb
(neu aus dem Core)Folgende Untergruppen: Funktionäre, Mitglieder, Neuanmeldungen ZV/Neuanmeldungen Sektion, Tourenkommission
Bei der Neuanmeldung muss das neue Mitglied auswählen, per wann es eintreten will. Grund ist, dass es Vergünstigungen geben kann, wenn das Mitglied spät im Jahr eintritt, und je nach dem möchte man diese Vergünstigung bereits früher im Jahr nutzen.
Die genaue Logik wird noch abgeklärt. Hypothese für den Moment:
Wenn der 1. Juli des aktuellen Jahres bereits vorbei ist, ist die Option 1. Juli deaktiviert.
Wenn der 1. Oktober des aktuellen Jahres bereits vorbei ist, ist die Option 1. Oktober deaktiviert.
Bei der Neuanmeldung beim SAC muss das neue Mitglied einen Eintrittsgrund angeben. Gemäss https://saccas.atlassian.net/browse/HIT-146 soll:
Siehe Mockup. Genaue Optionen sind noch zu klären, aber Newsletter und Privacy Policy kommen sicher mal hierhin. Fürs MVP können die Statuten, Beitragsreglement und Datenschutzerklärung auch in ein einziges Privacy Policy PDF kombiniert werden.
Anmerkung Tobi s.: Aus User-Sicht wäre es besser, wenn man auch gar keinen Grund angeben könnte, also wenn dies kein Pflichtfeld ist.
-> Antwort aus Diskussion mit Stefan: Sie können einfach im hitobito UI einen weiteren Grund "Sonstiges" erfassen, dieser ist dann als Radio Button verfügbar, ohne Freitextfeld.
Hüttenname, Hüttennr, Zuweisung Sektion
Gewünschte Sprachen: DE, FR
See: #1
Import aus #73 soll mit folgenden Attributen/Attribut-Importen ergänzt werden:
wie am besten Versand / Bestellung die Alpen verwalten?
es gibt auch nicht-mitglieder die nur das Magazin abonniert haben
soll der youth wagon integriert werden? macht vermutlich aus verschiedenen Gründen Sinn.
https://github.com/hitobito/hitobito_youth -> Sieht feature liste in Readme
Auf dem Personenmodel sollen folgende Custom Attributes eingerichtet werden:
membership_years, als methode auf person, spalte auswählbar machen auf personen liste, irgend einen wert zurück geben vorerst
Als Spalte für Export/Anzeige auf Personenliste auswählbar
In JSON:API auf person#show ausgeben (optional)
Bei den Personen Listen Exporten bei Alle Angaben sowie falls als Spalte selektiert exportieren
Wert auf Person#show anzeigen
Für die spätere Fakturierung werden diverse Stammdaten/Attribute auf Natioal/Sektions-Ebene benötigt.
Die Faktura-Stammdaten stehen in einem XLSX-Export aus Navision zum Import bereit.
Die Preise sollen künftig pro Kalenderjahr festgelegt werden. mounted_attr wird dazu entsprechend erweitert. Umsetzung mit #93
Alpengebühr | EINZEL
Alpengebühr | FAMILIE
Alpengebühr | JUGEND
Auslandsporto Alpen | EINZEL
Auslandsporto Alpen | FAMILIE
Auslandsporto Alpen | JUGEND
ZV-Beitrag | EINZEL
ZV-Beitrag | FAMILIE
ZV-Beitrag | FREI FAM
ZV-Beitrag | FREI KIND
ZV-Beitrag | JUGEND
ZV-Eintrittsgebühr | EINZEL
ZV-Eintrittsgebühr | FAMILIE
ZV-Eintrittsgebühr | FREI FAM
ZV-Eintrittsgebühr | FREI KIND
ZV-Eintrittsgebühr | JUGEND
Hütten-Solitaritätsbeitrag | EINZEL
Hütten-Solitaritätsbeitrag | FAMILIE
Hütten-Solitaritätsbeitrag | FREI FAM
Hütten-Solitaritätsbeitrag | FREI KIND
Hütten-Solitaritätsbeitrag | JUGEND
Bulletin Porto Ausland | EINZEL
Bulletin Porto Ausland | FAMILIE
Bulletin Porto Ausland | FREI FAM
Bulletin Porto Ausland | FREI KIND
Bulletin Porto Ausland | JUGEND
Sektionsbeitrag | EINZEL
Sektionsbeitrag | FAMILIE
Sektionsbeitrag | FREI FAM
Sektionsbeitrag | FREI KIND
Sektionsbeitrag | JUGEND
Sektionseintrittsgebühr | EINZEL
Sektionseintrittsgebühr | FAMILIE
Sektionseintrittsgebühr | FREI FAM
Sektionseintrittsgebühr | FREI KIND
Sektionseintrittsgebühr | JUGEND
Neues Tab auf edit Root/Sektion Mitgliederfaktura
Die Attribute sollen vorerst nicht auf Group#show aufgelistet werden.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.