Bei der Frage nach der Programmiersprache wird jeder (auch ich) empfehlen, was er oder sie kennt und/oder gut findet.
Ich möchte daher etwas anders antworten.
Hätte ich die Aufgabe, das Projekt umzusetzen, würde ich zunächst versuchen genauer zu formulieren, was erreicht werden soll. Das ist IMHO die eigentliche Herausforderungen. Die Sprache ist dagegen fast egal. Natürlich färbe ich's daei so ein, wie ich's am besten gebrauchen könnte:
Charakterdaten sollen zentral und online auf einem Server gespeichert werden. Sie können erfasst und angezeigt werden. Die Erfassung unterliegt keinen Regeln. Die Anzeige kann je nach Endgerät unterschiedlich sein, insbesondere sollte eine komfortable Darstellung auf Handys möglich sein; optional auch eine traditionelle Darstellung als PDF.
Es gibt mehrere Nutzer, die sich an dem Server registrieren, anmelden und abmelden können. Nutzer können sich auch löschen (DSGVO lässt grüßen).
Jeder Nutzer kann mehrere Charaktere anlegen, die jeweils eigene Charakterdaten haben. Charaktere können bearbeitet und gelöscht werden. Jeder Charakter hat einen Namen und sie können nach dem Namen sortiert gelistet werden.
Jedem Charakter muss ein System zugeordnet werden. Das System definiert, welche Eingabmaske(n) und Darstellung(en) gewählt werden. Beim Listen wird auch das System angezeigt und kann als Filter (oder Gruppierung) genutzt werden.
Dem Server ist eine feste Menge von Systemen bekannt.
Jedes Charakterdatum hat einen Namen und einen Typ. Optional auch eine Erklärung. Auch wenn ich sagte, dass die Eingabe keinen Regeln unterliegt, kann die Eingabemaske dadurch, dass die Daten typisiert sind, die Eingabe entsprechend beschränken. Typen sind noch geeignet zu definieren, mindestens gibt es aber Text und Ganzzahlen, wo man Länge bzw. Unter- und Obergrenze definieren kann. Nützlich wäre auch einem Datum eine Liste von möglichen Werten zuordnen zu können. Ein weiter Typ ist eine angeordnete Liste von Typen, z.B. Ausrüstungsgegenstände.
Auch die Anzeige kann von den Typen profitieren und etwa Zahlen in Form von Punkten oder Würfelformen darstellen. Schließlich könnte man zu einer Liste möglicher Werte auch noch Details zu jedem Wert annotieren und diese zusammen mit dem Wert anzeigen.
Optional kann man Werten von Würfelformeln zuordnen und dann einen Würfelwurf auslösen. Die Formel muss die üblichen XdY+Z unterstützen und auf als Ganzzahl typierte Charakterdaten zugreifen können.
Das sind erst einmal genug Anforderungen.
Da ich beruflich Software für mobile Endgeräte entwickle, betrachte ich die Anforderungen durch die entsprechende Brille und sehe das Handy als erste Wahl für die Anzeige der Informationen und – mit Einschränkungen – auch für die Eingabe. Wir haben beim Spielen fast alle Tablets, diese möchte ich auch unterstützen, doch ich befürchte, wir sind nicht repräsentativ. Da die Displays zwar immer größer werden, aber nicht für ein klassisches DIN/A4-Charakterblatt ausreichen, habe ich oben extra abstrakter formuliert und spreche absichtlich nicht von Charakterbögen sondern Sammlungen von Daten. Ich stelle mir vor, dass man die Informationen entsprechend für die Bildschirmgröße aufbereitet und nur ausschnittsweise darstellt.
Desktop-Browser sehe ich zweitrangig und auf klassische Desktop-Anwendungen hätte ich persönlich gar keine Lust.
Um möglichst wenig Arbeit mit dem Server zu haben, könnte ich mir Google Firebase als Basis vorstellen. Das kann auch die Nutzerverwaltung inklusive so lästigem Kram "social login" und "password reset" übernehmen. Das der Cloud Firestore "real time" ist, in dem Sinne, dass Änderungen an der Datenbank sofort an alle interessierte Parteien weitergeleitet werden, habe ich zwar nicht explizit als Anforderungen gelistet, stelle ich mir aber als sehr nützlich vor, wenn etwa SL und SP gleichzeitig auf einen "Charakterbogen" schauen wollen und Änderungen vornehmen wollen. Denn eigentlich möchte ich noch ein Gruppen-Konzept, alle Spieler auf den Charakterpool, NSCs und weitere Daten zugreifen können, doch das ist größeres Projekt und hier nicht Thema.
"Web-Technologie", also das Sammelsorium aus HTML, SVG, CSS/SCSS/Less, JavaScript/TypeScript/ReasonML/Elm/... und einer Schar von Rahmenwerken, Bibliotheken und Entwicklungswerkzeugen, ist definitiv ein gangbarer Weg, das Ding zu bauen.
SPA (single page applications) als PWA (progressive web app) wäre hier mein Ansatz und mittels Electron könnte ich dann auch eine Desktop-Anwendung zur Verfügung stellen.
Nachdem React und Angular als UI-Rahmenwerke schon genannt wurden, würde ich noch Vue.js ins Rennen werfen, da ich denke, es ist gerade für Einsteiger einfacher und sein Komponentensystem könnte helfen, gerade was Eingabemasken und Darstellungsmodule angeht, die andere bauen. Storyblok (ein Headless CMS) geht so für sein Admin-UI vor. Und für einen Prototyp von zufällig dem oben beschriebenen Tools haben wir's auch schon mal erfolgreich verwendet.
Wenn ich das ganze hauptsächlich machen würde, ob was neues Ausprobieren zu können, käme auch Svelte in Frage, weil ich dieses UI-Rahmenwerk noch nicht kenne. Und neulich sah ich auf Hackernews auch noch eine neue Programmiersprache, die sich der Idee, SPAs zu schreiben, verschrieben hat. Mir fällt nur der Name nicht mehr ein. Hat den jemand parat?
Für meine primäre Plattform, das Handy (oder Tablets), also iOS und Android als Betriebssysteme, ist aber auch die Entwicklung einer "nativen" Lösung eine Alternative. Hier wäre meine Wahl dann Flutter – einfach weil wir damit sehr gute Erfahrungn in der Firma gesammelt haben. Aber auch für Einsteiger halte ich das tatsächlich für einfacher als der Sprung in die Webwelt, weil man hier ein komplettes "batteries included" Paket bekommt, statt sich zwischen diversen teils widersprüchlichen "best practices" der Web-Entwicklung zu entscheiden. Mit einigen Wochen Einarbeitungszeit sollte man aber auch hier rechnen.
Die Wahl ob Vue oder Flutter würde ich letztlich wohl davon abhängig machen, wie ich die Daten erfassen und anzeigen will. Sollten andere neue Masken für eigene Systeme bauen können? Klingt prinzipiell nach eine guten Idee? Dann braucht man aber ein gutes Plug-in-Konzept.
Mit HTML (oder auch SVG) könnte ich so ziemliches jedes UI bauen bzw. bauen lassen und speziell bei SVG wäre es auch möglich, Editoren wie Figma o.ä. zu benutzen. Bei Flutter müsste ich das in jedem Fall programmieren. Natürlich könnte man sich vorstellen, auch ein Figma-Design automatisch zu konvertieren, aber dann arbeitet man wahrscheinlich länger an so einem Konverter als es dauert, das ganze "per Hand" zu bauen (ich muss es eigentlich wissen, habe ich doch mal einen Sketch nach UIKit-Exporter gebaut). Für Eingabemasken sehe ich ehrlich gesagt einen wirklichen Gewinn in einem grafischen Editor, weil ich diese eh für's Handy sehr einfach und sequentiell gestalten muss und je nach Form automatisch umformatieren muss. Spannend sind eigentlich nur die Erzeugung von PDFs. Ich kenne Bibliotheken sowohl für JavaScript als auch für Flutter und in beiden Fällen ist's anders, als wenn ich UIs baue, somit müsste ich diese so oder so unabhängig vom "normalen" UI betrachten. Aber ich beginne zu schwafeln und darum soll's hier nicht gehen.
Mein Bauch sagt Flutter, weil mir das mehr Spaß macht und IMHO schneller das hochwertigere Ergebnis liefert – nicht dass das bei in erste Linie Formularen und Text wichtig wäre, aber dennoch… Flutter kann nebenbei auch Web-Anwendungen aus der selben Codebasis erzeugen und Mac-Anwendungen. Irgendwann geht dann auch Windows und Linux, aber das ist mir persönlich eh egal und ich bin mir sicher, zur Google/IO 2020 gibt es auch hier Neuigkeiten.
Das waren dann meine 2 cent.