Die technische Methodik von chax
Verwendete Tools, Sprachen und Frameworks
Frontend
Vue.js, Aurelia & react
Vue.js ist inzwischen das Framework unserer Wahl für neue Projekte. Die gute Tool-Unterstützung, die große Community und die zahlreichen bereits vorhandenen Komponenten sind unserer Meinung nach dessen größte Stärken.
Aurelia ist ein Framework, das wir gerne für größere Projekte verwenden. In der Praxis hat es sich dank geringem Einarbeitungsaufwand und nativer Integration für Webcomponents einen Platz neben Größen wie React, Angular und Vue verdient.
Manche Projekte werden auch mit react umgesetzt, inklusive Storybook.
Backend: Node.js
Node.js
Node.js ist die Programmierumgebung unserer Wahl. Bei dieser Entscheidung haben uns weitere Entwicklungen wie Typescript, Frameworks wie nest.js, API-Spezifikationstools (Swagger) und Testtools (z.B. Mocha) bestärkt. Die Möglichkeiten, fertig typisierte Objekte zwischen Frontend und Backend auszutauschen und Funktionen auf beiden Seiten zu benutzen, sind ebenso große Pluspunkte.
Wir benutzen das Framework Nest.js als Backendsystem. Damit haben wir schon einige Module und Packages entwickelt, die wir durch die Uniformität der Projekte von anderen übernehmen können, wodurch wir Entwicklungszeit sparen.
Bestehende Projekte mit .NET und PHP können von uns ebenso betreut werden.
TypeScript
Um die oft auftretenden Probleme bei der Typenunsicherheit von (Vanilla-)Javascript zu umgehen, benutzen wir Typescript. Das erlaubt uns, beim Programmieren alle Typen selbst zu definieren und notwendige Konvertierungen an die Einstiegspunkte zu legen. Um Fehler zu vermeiden, erstellen wir Typisierungen, die vom Backend und Frontend gleichzeitig verwendet werden können.
Jira
Als Projektmanagement-Tool verwenden wir Jira. Je nach Bereitschaft kann für Kund:innen ein eigener Account angelegt werden, um den Projektstatus in einer eigens dafür geschaffenen Ansicht verfolgen zu können.
Bamboo
Mit Bamboo aktualisieren wir nach jeder Änderung die Software und prüfen, ob alle Tests funktionieren. Die Ergebnisse sind mit Jira verlinkt und scheinen beim Code-Review auf. So ist immer klar, wann und warum ein Test fehlschlägt und er kann schnell korrigiert werden.
Mocha / Jest
Mocha und Jest sind Test-Runner, die dafür zuständig sind, dass die Tests, die vor und während der Entwicklung geschrieben werden, ausgeführt werden und die deren Ergebnisse les- und verwertbar machen. Es ist für Backend- und Frontend-Tests verfügbar und besitzt eine gute Integration in unseren Build-Server Bamboo.
BEM
BEM/ITCSS ist eine definierte Vorgehensweise zum Benennen von HTML-Komponenten. Dabei wird jedes Bedienelement für sich in CSS beschrieben, ohne sich auf seine Position zu verlassen. Das bedeutet, dass sich die einzelnen Buttons und Module leichter wiederverwenden lassen und auch schnell herauszufinden ist, wenn eine CSS-Eigenschaft nicht mehr benötigt wird und gelöscht werden kann. Eine ausführliche Erklärung dazu findet sich unter:
Gesicherte Verbindungen
Jegliche Kommunikation zu unseren Servern wird nach aktuellen Zertifikatsansprüchen über moderne TLS-gesicherte Verbindungen abgewickelt.
Passwortverschlüsselung
Passwörter werden mit einem Einweg-Hashing-Algorithmus mit einem individuellen Salt pro Benutzer:in und mehreren Durchläufen abgespeichert. Manche Projekte benutzen Passwordless-Systeme oder Drittanbieter-Logins von Google, Facebook und Apple oder eine AD-Anbindung an Microsoft.
Git (Bitbucket)
Als Versionskontrollsystem verwenden wir Bitbucket. Neue Features werden in Branches entwickelt und über verpflichtende Pull Request Reviews möglichst schnell wieder in den Main-Branch gebracht. Jeder Branch wird vor dem Merge wieder vom Versionskontrollsystem gebaut, um sicherzugehen, dass alle Tests noch laufen.
Confluence
Als Ergänzung zu Jira nutzen wir Confluence, um Ordnung zu schaffen und alle Daten, Anmerkungen und den Content an einem Ort speichern zu können.
OpenAPI
Swagger bzw. OpenAPI ist ein Tool, mit dem sich die Frontend- und Backend-Teams abstimmen können. Durch die Typisierung der Schnittstelle und die Verfügbarkeit von sogenannten Mock-Servern funktioniert die parallele Programmierung besser. Die Mock-Server liefern bereits vor der Fertigstellung der eigentlichen Schnittstelle Werte, die das Entwickeln ermöglichen. Ebenso ist durch diese Vorgehensweise bereits zu Beginn des Projekts die Schnittstellendefinition fertig und wird im weiteren Verlauf automatisch an Änderungen angepasst.
Visuelle Tests
Mithilfe von Cypress oder Playwright lassen sich Tests lokal schreiben, ausführen und dokumentieren.
Entscheidungsfreiheit
Unsere Mitarbeiter:innen arbeiten je nach Präferenz mit Windows, Linux oder Mac, mit Visual Studio Code oder JetBrains.
Native App
Unter „Native App“ verstehen wir in diesem Fall eine kompilierte Variante der App, die über ein Tool namens Cordova oder Capacitor erstellt wird. Diese App wird vom Buildserver automatisch erstellt und in den App Store / Play Store eingespielt.
Das sind die Vorteile einer nativen App:
  • Daten können offline gespeichert und zur Verfügung gestellt werden.
  • Bilder können direkt im Datenverzeichnis abgelegt werden.
  • Native Module (wie Kamera, GPS, Bluetooth,... ) können verwendet werden.
  • Eigene, selbstgeschriebene Plugins wie z.B. neuronale Netzwerke können integriert werden.
Beispiele für solche Apps sind Schotterlotte, Yarrive oder recordIT, bei denen u.A. eine native Verkehrszeichen-Erkennung bzw. eine Offline-Synchronisation eingebaut wurde.
Hosting
Cloud-Provider: AWS und Azure, Bare-Metal bei Hetzner oder on-premises
Frontend
Vue.js, Aurelia & react
Vue.js ist inzwischen das Framework unserer Wahl für neue Projekte. Die gute Tool-Unterstützung, die große Community und die zahlreichen bereits vorhandenen Komponenten sind unserer Meinung nach dessen größte Stärken.
Aurelia ist ein Framework, das wir gerne für größere Projekte verwenden. In der Praxis hat es sich dank geringem Einarbeitungsaufwand und nativer Integration für Webcomponents einen Platz neben Größen wie React, Angular und Vue verdient.
Manche Projekte werden auch mit react umgesetzt, inklusive Storybook.
Backend: Node.js
Node.js
Node.js ist die Programmierumgebung unserer Wahl. Bei dieser Entscheidung haben uns weitere Entwicklungen wie Typescript, Frameworks wie nest.js, API-Spezifikationstools (Swagger) und Testtools (z.B. Mocha) bestärkt. Die Möglichkeiten, fertig typisierte Objekte zwischen Frontend und Backend auszutauschen und Funktionen auf beiden Seiten zu benutzen, sind ebenso große Pluspunkte.
Wir benutzen das Framework Nest.js als Backendsystem. Damit haben wir schon einige Module und Packages entwickelt, die wir durch die Uniformität der Projekte von anderen übernehmen können, wodurch wir Entwicklungszeit sparen.
Bestehende Projekte mit .NET und PHP können von uns ebenso betreut werden.
TypeScript
Um die oft auftretenden Probleme bei der Typenunsicherheit von (Vanilla-)Javascript zu umgehen, benutzen wir Typescript. Das erlaubt uns, beim Programmieren alle Typen selbst zu definieren und notwendige Konvertierungen an die Einstiegspunkte zu legen. Um Fehler zu vermeiden, erstellen wir Typisierungen, die vom Backend und Frontend gleichzeitig verwendet werden können.
Git (Bitbucket)
Als Versionskontrollsystem verwenden wir Bitbucket. Neue Features werden in Branches entwickelt und über verpflichtende Pull Request Reviews möglichst schnell wieder in den Main-Branch gebracht. Jeder Branch wird vor dem Merge wieder vom Versionskontrollsystem gebaut, um sicherzugehen, dass alle Tests noch laufen.
Jira
Als Projektmanagement-Tool verwenden wir Jira. Je nach Bereitschaft kann für Kund:innen ein eigener Account angelegt werden, um den Projektstatus in einer eigens dafür geschaffenen Ansicht verfolgen zu können.
Confluence
Als Ergänzung zu Jira nutzen wir Confluence, um Ordnung zu schaffen und alle Daten, Anmerkungen und den Content an einem Ort speichern zu können.
Bamboo
Mit Bamboo aktualisieren wir nach jeder Änderung die Software und prüfen, ob alle Tests funktionieren. Die Ergebnisse sind mit Jira verlinkt und scheinen beim Code-Review auf. So ist immer klar, wann und warum ein Test fehlschlägt und er kann schnell korrigiert werden.
OpenAPI
Swagger bzw. OpenAPI ist ein Tool, mit dem sich die Frontend- und Backend-Teams abstimmen können. Durch die Typisierung der Schnittstelle und die Verfügbarkeit von sogenannten Mock-Servern funktioniert die parallele Programmierung besser. Die Mock-Server liefern bereits vor der Fertigstellung der eigentlichen Schnittstelle Werte, die das Entwickeln ermöglichen. Ebenso ist durch diese Vorgehensweise bereits zu Beginn des Projekts die Schnittstellendefinition fertig und wird im weiteren Verlauf automatisch an Änderungen angepasst.
Mocha / Jest
Mocha und Jest sind Test-Runner, die dafür zuständig sind, dass die Tests, die vor und während der Entwicklung geschrieben werden, ausgeführt werden und die deren Ergebnisse les- und verwertbar machen. Es ist für Backend- und Frontend-Tests verfügbar und besitzt eine gute Integration in unseren Build-Server Bamboo.
Visuelle Tests
Mithilfe von Cypress oder Playwright lassen sich Tests lokal schreiben, ausführen und dokumentieren.
BEM
BEM/ITCSS ist eine definierte Vorgehensweise zum Benennen von HTML-Komponenten. Dabei wird jedes Bedienelement für sich in CSS beschrieben, ohne sich auf seine Position zu verlassen. Das bedeutet, dass sich die einzelnen Buttons und Module leichter wiederverwenden lassen und auch schnell herauszufinden ist, wenn eine CSS-Eigenschaft nicht mehr benötigt wird und gelöscht werden kann. Eine ausführliche Erklärung dazu findet sich unter:
Entscheidungsfreiheit
Unsere Mitarbeiter:innen arbeiten je nach Präferenz mit Windows, Linux oder Mac, mit Visual Studio Code oder JetBrains.
Gesicherte Verbindungen
Jegliche Kommunikation zu unseren Servern wird nach aktuellen Zertifikatsansprüchen über moderne TLS-gesicherte Verbindungen abgewickelt.
Native App
Unter „Native App“ verstehen wir in diesem Fall eine kompilierte Variante der App, die über ein Tool namens Cordova oder Capacitor erstellt wird. Diese App wird vom Buildserver automatisch erstellt und in den App Store / Play Store eingespielt.
Das sind die Vorteile einer nativen App:
  • Daten können offline gespeichert und zur Verfügung gestellt werden.
  • Bilder können direkt im Datenverzeichnis abgelegt werden.
  • Native Module (wie Kamera, GPS, Bluetooth,... ) können verwendet werden.
  • Eigene, selbstgeschriebene Plugins wie z.B. neuronale Netzwerke können integriert werden.
Beispiele für solche Apps sind Schotterlotte, Yarrive oder recordIT, bei denen u.A. eine native Verkehrszeichen-Erkennung bzw. eine Offline-Synchronisation eingebaut wurde.
Passwortverschlüsselung
Passwörter werden mit einem Einweg-Hashing-Algorithmus mit einem individuellen Salt pro Benutzer:in und mehreren Durchläufen abgespeichert. Manche Projekte benutzen Passwordless-Systeme oder Drittanbieter-Logins von Google, Facebook und Apple oder eine AD-Anbindung an Microsoft.
Hosting
Cloud-Provider: AWS und Azure, Bare-Metal bei Hetzner oder on-premises
Jetzt mit uns zusammenarbeiten

Partner werden!

Anfrage senden

Dir gefällt wie wir arbeiten? Dann bewirb dich hier:

Bewerbung senden
Cyber Trust Silver Label

Wir bei Chax sind stolz darauf, das Cyber Trust Label in Silber erhalten zu haben. Diese Auszeichnung des KSV1870, in Zusammenarbeit mit dem KSÖ, bestätigt unser fortgeschrittenes Sicherheitsniveau und unser Engagement für höchste Cybersicherheitsstandards. Mit der Erfüllung dieses Schemas, das auf den Anforderungen der EU-Richtlinie 2016/1148 ("NIS") beruht, beweisen wir, dass die Sicherheit der Daten und Projekte unserer Kunden für uns oberste Priorität hat und Sie mit uns einen vertrauenswürdigen Partner an Ihrer Seite haben.