Nachfolgend möchten wir euch einmal transparent darstellen, welche Technik wir für unseren App-Kosmos verwenden. Sicherlich kann man einige Dinge besser/anders machen, doch mit dem aktuellen Techstack konnten wir schnell und relativ einfach etwas Lauffähiges auf die Beine stellen.
Die Website läuft mit einem Content-Management-System (CMS), Contao 5.5. Die Installation erfolgte hier nicht über eine composer.json, sondern über den Contao Manager. Spezielle Erweiterungen haben wir bisher nicht installiert, alle Container sind händisch angelegte Module. Das war auf der einen Seite leicht krampfig, auf der anderen Seite sind wir so freier in ihrer Gestaltung und müssen uns keine Sorgen um Updates der Erweiterungen machen. Teilweise nutzen wir noch animate.css, das Grid von Bootstrap und Icons von Font Awesome.
Die App entwickeln wir mit Vue.js, einem JavaScript Framework für Webapps. Intern nutzen wir einen Store mit Pinia für Vue.js, allerdings speichern wir nur wenig Daten auf dem Gerät/Browser selbst - sie dienen lediglich zur Datenhaltung in der App. Die App spricht nur in wenigen Fällen mit der Datenbank direkt - zum einen, um Missbrauch zu vermeiden, zum anderen, da wir so Daten cachen (zwischenspeichern) und schneller ausliefern können. Für die Optik kommen teilweise Komponenten von Vuetify zum Einsatz.
Das Backend entwickeln wir mit dem JavaScript Framework NestJS. Es übernimmt damit die Standards wie Anfragen entgegennehmen, verarbeiten und die Kommunikation mit der Datenbank. Daten werden angefragt, manipuliert und gespeichert. Um eure Daten abzusichern bekommt man pro Anfrage immer nur die Datensätze, die zu eurer Benutzer-ID gehören. Anfragen an die Datenbank mit anonymen oder fremden Daten sind so nicht möglich.
Die Daten werden in einer MongoDB bei Supabase gespeichert. Supabase nutzen wir ebenfalls als Auth-Provider für die Anmeldung und eure Benutzerdaten. In der Vergangenheit haben wir hier häufig auch auf die Google Firebase Plattform zurückgegriffen, doch bietet uns Supabase in etwa denselben Funktionsumfang - und wir wollten etwas Neues lernen, weshalb wir uns hier nach einer Alternative umgesehen haben. Und bisher sind wir mehr als zufrieden 😀
Unsere Architektur erlaubt es uns, auch eine API (Programmschnittstelle) anbieten zu können. Damit könntet ihr eure eigenen Oberflächen (Frontends) für die bei uns liegenden Daten entwickeln und eigene Apps entwerfen. Da wir zur Zeit jedoch noch mit dem eigentlichen Aufbau beschäftigt sind und sich während der Entwicklung noch viel ändern/umfallen kann, bieten wir diese API vorerst nicht der breiten Masse an.
Wenn du jedoch ein early adopter sein möchtest, melde dich bitte gern auf unserer Kontaktseite.