Skip to content

Technologien und Infrastruktur

Alexander Strutz edited this page Mar 13, 2021 · 6 revisions

Technologien

Als übergreifende Sprache wird Flutter verwendet. Flutter bietet die Möglichkeit cross-plattform zu entwickeln anhand der selben Codebasis. Der Build selbst wird durch Dart realisiert, welches zwischen Dev-Builds und Production-Builds unterscheidet.

Frontend-Framework

Basis für das Design ist Material, welches voll mit Flutter integriert werden kann. Theming erfolgt in Meilenstein 3.

Server

Die Sprache des Servers ist Node.js, wahrscheinlich auf einem Lightsail-Server oder innerhalb einer anderen AWS/Firebase/Azure Umgebung. Da der Server erst in Meilenstein 5 kommt, wird die Entscheidung dann (mit mehr Flutter-Erfahrung) getroffen.

Infrastruktur

Branch-Struktur

Solange das Projekt allein entwickelt wird, ist der vollständige Gitflow zu umfangreich. Daher wird er vereinfacht, sodass der Master-Branch den aktuellen Abschluss eines Meilensteins (stable) beinhaltet und der Dev-Branch als Standard-Branch für die Entwicklung gilt. Wenn nötig wird noch ein Hotfix-Branch hinzugenommen, der dann nachträglich in den dev und den master gemerged wird. Ein Merge wird nur per PR erlaubt.

Testing

Flutter bietet eine eigene mitgelieferte Test-Suite, die sich in CI/CD-Tools einbinden lässt. Ein Test-Driven-Development ist noch nicht sicher, daher wird in der ersten (und kritischen) Phase TDD ausprobiert und dann eine Entscheidung getroffen, ob es dauerhaft Teil des Projektes wird oder keinen Einzug findet.

Continous Build

Als CI-Tool wird Github Actions verwendet, zusammen mit dem Dart-Build-Workflow. Dieser enthält ein flutter analyze, flutter test und flutter build. Der Build wird bei jedem Push auf dev (für Web) und master (für Web, Android, iOS, Mac, Linux und Windows), sowie jedem PR von dev auf master ausgeführt.

Continous Deployment

Die Webversion wird via Github Pages mit dem Github Pages-Plugin deployed. Das Deployment wird bei jedem Push auf master und jedem PR in master ausgeführt. Der Server wird in einem späteren Verlauf genauer konzipiert und dann auf einen Cloud-Service deployed.

Clone this wiki locally