Connect - Mitarbeiterverwaltung (Angular Ionic)
Datum: Dezember 2021
Lesedauer: 30 Minuten
Vorwort
Diese Dokumentation beschreibt den Weg von der Ideenfindung bis zur fertigen App. Sie ist folgendermassen strukturiert.
Vorerst beschreibe ich, meine ersten Gedankensprünge und erkläre, welche Idee ich umsetzen werde. Ich überlege mir, wie man die App erweitern kann und was in diesem ÜK umgesetzt werden kann.
Danach gehe ich auf das Konzept ein. Ich analysiere die Möglichkeiten sowie Sensoren, Datenbanken und Entwicklungsumgebungen. Zudem designe ich hier das Mockup und den
Anschliessend formuliere ich, wie ich das Projekt aufgesetzt habe, und für welche Sensoren und Datenbanken ich mich entschied. In diesem Kapitel zeige ich auf, wie ich dieses Projekt umsetzen werde.
Nachfolgende definiere ich die Testfälle und führe diese durch.
Zum Schluss erkläre ich, wie ich das Projekt aufgebaut und umgesetzt habe.
Idee
Zu Beginn überlegte ich mir Applikationen, welche ich implementieren könnte. Dabei standen drei Ideen zur engeren Auswahl.
Kundenverwaltung
Als Mitarbeiter eines Unternehmens ist es wichtig, dass man mit den Kunden in Kontakt treten kann. Jedoch ist dies manchmal etwas schwierig, wenn die Kontaktdaten nicht auffindbar sind. Deshalb könnte eine App einen Überblick bieten.
Neben den Kontaktdaten könnte man auch Informationen wie den Standort, das Geburtsdatum oder Lieblingsrestaurants festhalten. Die Möglichkeiten wären fast grenzenlos.
Mitarbeiterverwaltung
Mindestens genau so interessant wäre eine Mitarbeiterverwaltung.
Ich arbeite in einer Firma, welche tausende von Mitarbeitern beschäftigt. Allein in St. Gallen arbeiten ca. 200 Personen. Suche ich eine Person aus einer bestimmten Abteilung so kann das mühsam werden. Deshalb könnte eine solche App Unterstützung bieten.
Jeder Mitarbeiter könnte ein persönliches Profil anlegen. In einer Übersicht sieht dann ein Nutzer alle Personen. Mithilfe eins Suchfeldes kann er dann die entsprechenden Leute finden.
Produktverwaltung
Eine Produktverwaltung für Sneaker fände ich auch ein spannendes Projekt. Jedoch kann man nur eine begrenzte Menge an Bildern in einer DB Speichern. Deshalb entschied ich mich schnell gegen diese Idee.
Entscheidung
Letztendlich entschied ich mich für die Mitarbeiterverwaltung, da ich einen Mehrwert in einer solchen App sehe. Zudem mag ich Software, welche ein Problem löst.
Ausserdem gäbe es viele Erweiterungsmöglichkeiten, die ich nach diesem ÜK umsetzen könnte:
- Die Profile könnten mit Fotos versehen werden, damit die Applikation persönlicher wird. Diese könnten beim Erstellen eines Profils ausgewählt oder durch die Kamera aufgenommen werden.
- Gerade auch wegen der aktuellen Covid-19 Situation wäre es nützlich zu sehen, wer wo sitzt. So könnten die entsprechenden Arbeitskollegen bei einem positiven Fall kontaktiert werden.
- Für diese Projekt habe ich vor, den Namen, die Fähigkeiten (Abteilung) und die Telefonnummer einzuspeichern. Man könnte aber auch den Standort, das Stockwerk, Hobbys, Soziale Netzwerke und vieles mehr speichern.
Konzept
Möglichkeiten
Es gibt drei gängige Arten einer App. Diese habe ich mir hier genauer angeschaut.
Webapp
Eine Webapp ist nicht lokal auf dem Gerät eines Benutzers installiert. Die Datenverarbeitung findet auf dem Webserver statt.
Hybrid
Eine Hybrid-App ist ebenfalls eine Browseranwendung. Sie basiert auf Webtechnologien aber kann trotzdem auf die nativen APIs und Funktionen der jeweiligen Betriebssysteme zugreifen. Deshalb wirkt eine solche Applikation wie eine native App.
Native
Native Apps werden für ein spezifisches Betriebssystem entwickelt. Der Code wird also für einen bestimmten Prozessor geschrieben.
Vergleich
Da ich nun wusste, was es für Typen gibt, war es für mich an der Zeit, diese zu vergleichen. Dies tat ich mithilfe einer tabellarischen Darstellung.
Art der App | Webapp | Hybrid | Native |
---|---|---|---|
Entwicklungszeit | 🟩 | 🟩 | 🟥 |
Portabilität | 🟩 | 🟩 | 🟥 |
Geschwindigkeit | 🟨 | 🟥 | 🟩 |
Funktionen | 🟥 | 🟨 | 🟩 |
Native erstellbar | 🟥 | 🟩 | 🟩 |
Veröffentlichung | 🟥 | 🟩 | 🟩 |
Erweiterbarkeit | 🟥 | 🟩 | 🟩 |
Legende: 🟩 = gut, 🟨 = mittel 🟥 = schlecht
Fazit
In diesem ÜK haben wir eine Hybride App zu realisieren. Darüber bin ich aufgrund folgender Dinge froh:
- Hybrid schnitt in meinem Vergleich am besten ab.
- Ich finde es ein interessantes Thema, da ich mich schon oft mit Webtechnologien auseinandergesetzt habe.
Konkurrenz
Als ich meine Idee dokumentiert habe, schaute ich mich nach Konkurrenzprodukten um.
Xing verwaltet berufliche Kontakte. Betrieben wird die Firma von New Work SE.
LinkedIn ist ein webbasiertes soziales Netzwerk, welche die Pflegung und Knüpfung von Geschäftskontakten ermöglicht. Mit 660 Millionen Anwendern, 24 Sprache und 193 Ländern ist die kalifornische Software sehr populär.
USP
Eine App, welche ich in 5 Tagen umsetze, kann schwer mit LinkedIn oder Xing mithalten.
Aber was zeichnet jetzt meine App aus? Was ist mein Unique Selling Point (Alleinstellungsmerkmal)?
Mein App zeichnet sich durch folgende Punkte aus:
- Sie ist sehr simple und deshalb schnell erlernbar
- Sie ist kostenlos und enthält keinerlei Werbung
- Sie ist an die Wünsche meines Lehrbetriebs anpassbar
Geschäftsmodel
Es gibt drei grundlegende Varianten, um mit einer App einen Gewinn abzuwerfen.
Werbung
Firmen bezahlen Geld, damit ihre Werbung in der App geschalten wird. Zudem könnte man Geld vom User verlangen, um diese Werbung zu entfernen.
Preis
Eine Möglichkeit wäre auch, einen Preis für den Download festzulegen.
Meine App
Werbung würde unprofessionell wirken und den Workflow stören. Zudem will ich auch kein Geld verlangen, da die App für interne Zwecke verwendet werden sollte.
Sensoren
In meiner App muss ich einen Sensor ansprechen. Deshalb habe ich mir überlegt, welche es gibt und wie ich diese ansprechen kann.
Übersicht
Dies ist eine Übersicht der Sensoren und Aktoren, welche für mich in Frage kamen.
Sensor/Aktor | Überlegung |
---|---|
Leiser | Man könnte die Taste nicht nur zum Verringern der Lautstärke, sondern auch als Shortcut verwenden. Dies finde ich aber aus Usability Sicht keine gute Idee. |
Lauter | Auch diese Taste könnte man nicht nur zur Erhöhung der Lautstärke, sondern auch als Shortcut verwenden. Dies finde ich aber aus Usability Sicht keine gute Idee. |
Zurück | Auf Android-Handys gibt es eine Zurück-Taste. Diese könnte ich einbinden, damit der User mit einem Kick wieder auf die Startseite gelangt. Dies fände ich aber nicht so spannend umzusetzen. Zudem plane ich eine übersichtliche, leicht bedienbare Navigation. |
Schütteln | Ich könnte auch Sensoren ansprechen, welche ein Schütteln erkennen. Darüber könnte ich dann eine Funktion einbauen, die den User wieder auf die Home Seite bringt. Aber auch diese Idee finde ich aus Usability Sicht etwas suboptimal. Die meisten User sind nicht mit einer solchen Geste vertraut. Zudem könnte es so auch vorkommen, dass ein User ungewollt in der App herumspringt. |
Unique Device Identifier | Bei der Mitarbeiterverwaltung soll jeder nur sein eigenes Profil bearbeiten können. Um zu wissen, welches dies ist, muss ich die entsprechenden Daten dazu speichern. Deshalb kann ich mir gut vorstellen, dass ich diese Id speichere. |
Kamera | Die Kamera könnte genutzt werden, um ein Profilbild zu erstellen. Jedoch will ich vorerst keine Bilder auf der Datenbank speichern. |
Fingerprint | Zur Authentifizierung könnte man einen Fingerabdrucksensor ansprechen. |
Mikrofon | Um Mitarbeiter schneller zu finden, will ich ein Suchfeld einbauen. Dabei könnte man das Mikrofon einsetzen, damit der Text eingesprochen werden kann. Der Nutzen dieses Features wäre nicht riesig. Die Idee aber eine Überlegung wert. |
GPS-Sensor | Mithilfe eines GPS-Sensors könnte man den Standort der Mitarbeiter bestimmen. Da dies aber aus Datenschutzrechtlichen Gründen nicht ideal wäre, setze ich dies nicht um. |
Vibrationsmotor | Warnungen könnten mithilfe einer Vibration verdeutlicht werden. Mich persönlich würde das aber eher stören. |
Akkustand | Ich könnte auch den Akkustand anzeigen. Dies fände ich aber zu simpel. |
Plugins
Angular stellt 2 Plugins zum Ansprechen der Nativen APIs an.
Entscheidung
Ich entschied mich dazu, den Unique Device Identifier auszulesen, da ich diesen zwingend benötige, um den Besitzer der Daten zu identifizieren.
Unique Device Id: https://ionicframework.com/docs/native/unique-device-id (opens in a new tab)
Zudem entschloss ich, das Capacitor Plugin zu verwenden, da dieses von Ionic empfohlen wird.
Datenbank
Als Nächstes habe ich mich über verschiedene Datenbanken schlau gemacht.
Alle diese Datenbanken unterscheiden sich ein wenig voneinander. Jede bietet eigene Möglichkeiten.
Mehr Informationen über die jeweilige Datenbank findet man auf der verlinkten Webseite.
Fazit
Ich werde Firebase verwenden. Mir gefällt nicht so, dass die Datenbank nicht relational ist. Jedoch scheint es, als wäre diese Datenbank leicht aufzusetzen und zu verwenden. Zudem wird sie vom Kurs vorgeschlagen.
Persistenz der Daten
Firebase unterstützt die Offline-Datenpersistenz. Es handelt die lokalen Daten automatisch und synchronisiert diese wieder, wenn eine Verbindung besteht.
Somit ist die App jederzeit mit allen CRUD Funktionen lauffähig.
Entwicklungsumgebung
Bevor ich mich für ein Framework entschied, musste ich die einzelnen abwägen.
Mobile Angular
Release: 2010
Entwickler: Google
Website: https://angular.io/ (opens in a new tab)
Projekte: Google, Wix, ...
Angular ist ein Open-Source Frontend Framework, welches primär für Single-Page-Applikationen verwendet wird. Dabei wird die Logik mit TS oder JS geschrieben.
In Angular werden Projekte in modules
, components
und services
unterteilt. Jede Applikation hat mindestens eine root component
und ein root module
.
Die Komponenten bestehen aus HTML mit einer Angular Template Syntax. Somit können Daten empfangen und Elemente gerendert werden.
Das einzigartige an Angular ist die Separierung von den UI Komponenten und der JS Logik.
Zu den Eigenschaften zählen:
- Viele Features
- Alles ist eingebaut
- TS
- HTML und TS ist separiert
React
Release: 2013
Entwickler: Facebook
Website: https://reactjs.org/ (opens in a new tab)
Projekte: Facebook, Instagram, WhatsApp, Uber, ...
React bezeichnet sich selbst als eine JS Frontend Library. Genutzt wird React meistens, um Web und Mobile Applikationen zu entwickeln.
React ist eine UI Library, welche keine spezifische Struktur vorschreibt.
Eine Applikation besteht aus Elementen und Komponenten. Elemente sind mächtiger als DOM-Elemente, da sie bei Änderungen effizient geupdatet werden. Eine Komponente ist ein grösserer Block, welcher Inputs akzeptieren, und Elemente produzieren kann.
Zu den Eigenschaften zählen:
- Minimalistisch
- Features müssen möglicherweise in community packages gesucht werden
- Es ist eine Library und kein Framework
- Der JS/JSX Code beschreibt, was im DOM gerändert wird
- Der gleiche Code ist für das Verhalten und UI zuständig
Vue
Release: 2014
Entwickler: Evan You
Website: https://vuejs.org/ (opens in a new tab)
Projekte: Alibaba, Grammarly, GitLab, ...
Vue ist ein Open-Source JS Framwork zur Erstellung von UI's und single page applications.
Hinter Vue steckt keine Firma sondern ein ehemaliger Google Mitarbeiter.
Das Framework ist so aufgebaut, dass das Gerüst mit HTML und die Logik mit JS geschrieben wird. In JS können Komponenten erstellt werden, welche man dann wiederum im HTML einsetzen kann.
Zu den Eigenschaften zählen:
- Um Vue zu verwenden, muss man das Framework nur importieren
- Das Framework ist simple
- Ein paar wichtige Features sind eingebaut
- Vanilla JS wird für die Logik verwendet
Ionic
Release: 2013
Entwickler: Drifty Co
Website: https://ionicframework.com/ (opens in a new tab)
Projekte: MarketWatch, StockPlan, McLaren, …
Ionic ist ein UI Toolkit, mit welchem man Hybrid-Apps und Progressive-Web-Apps schreiben kann. Hat man es installiert, kann man die Komponenten verwenden. Dadurch kann man mit relativ wenig Aufwand eine gut gestaltete Applikation entwerfen.
Die Dokumentation des Frameworks ist sehr präzise.
Flutter
Release: 2017
Entwickler: Google LLC
Website: https://flutter.dev (opens in a new tab)
Projekte: Google Ads, Klaster Me, Hamilton, …
Flutter ist ein Entwicklungs-Kit von Google. Die Anleitung ist sehr gut. Jedoch wird in diesem Kurs dieses Framework nicht empfohlen, da die App unter Umständen nicht sicher läuft.
Apache Cordova
Release: 2011
Entwickler: Adobe Systems (Nitobi)
Website: https://cordova.apache.org (opens in a new tab)
Projekte: Citigroup, Siemens, ADP, …
Das Cordova Framework wird in diesem Kurs empfohlen, da man HTML, CSS und JS Code schreiben kann.
Solar2D (Corona)
Release: 2009
Entwickler: Corona Labs Inc. (Seit 2020: Vlad Shcherban)
Website: https://solar2d.com (opens in a new tab)
Projekte: Viele private aber keine bekannten
Das Framework Solar2d, welches ursprünglich Corona hiess, hilft einem beim Programmieren von zweidimensionalen Games.
Die Dokumentation ist ansprechend. Zudem gibt es eine lange Liste an Sensoren, welche angesprochen werden können.
Fazit
Vor meiner Recherche kannte ich React, Vue und Angular. Jedoch habe ich noch keines der genannten Frameworks verwendet.
Im Betrieb schlage ich mich im Frontend mit JavaScript, SCSS und Handlebars herum. Deshalb denke ich, dass ich Cordova sehr schnell verstanden hätte. Da ich aber schon immer mal Angular kennenlernen wollte, sehe ich diesen ÜK als Chance dazu. Deshalb werde ich die Herausforderung annehmen und die Applikation mit Angular Ionic schreiben.
Als Entwicklungsumgebung verwende ich Visual Studio Code, da dies eine meiner liebsten IDEs ist. Gerade da ich jetzt mit einem, mir unbekanntem, Framework versuche, will ich sonst keine zusätzliche Laste auf mich nehmen. Zudem kenne ich auch die nötigen Shortcuts von VSC.
Usability
Bei der Usability geht es darum, dass ein Benutzer ein bestimmtes Ziel effektiv, effizient und zufriedenstellend erreicht. Um dies zu erreichen, muss man als Entwickler auf gewisse ergonomische Standards achten.
Grundsätze und Richtlinien der Software-Ergonomie (ISO-9241-10)
Aufgabenangemessenheit
Die Software unterstützt den Nutzer, indem sie Informationen und Funktionen in geeigneter Form und Reihenfolge bietet.
Selbstbeschreibungsfähigkeit
Die Dialogschritte sind durch die Rückmeldungen verständlich. Versteht ein User etwas nicht, so wird es ihm auf Anfrage erklärt.
Steuerbarkeit
Benutzer können den Ablauf starten und die Richtung und Geschwindigkeit beeinflussen, damit er das Ziel erreicht.
Erwartungskonformität
Die Dialoge sind konsistent und entsprechen den Kenntnissen aus anderen Anwendungen.
Fehlertoleranz
Unbeabsichtigtes soll ohne grossen Aufwand rückgängig gemacht werden können. Zudem muss das System Fehlereingaben aushalten.
Individualisierbarkeit
Die Software sollte nach Vorlieben angepasst werden können.
Lernförderlichkeit
Der User wird beim Erlernen der Software unterstützt.
Auf was achtet ein User?
Unsere ÜK-Gruppe hat gemeinsam Punkte gesammelt, auf welche ein User beim Verwenden einer App achtet.
- Cross Plattform
- Design
- Beanspruchter Speicherplatz
- Funktionalität
- Preis
- Bewertung im Store
- Bedienbarkeit
- Wie viel Zugriff die App auf das System braucht
- Open Source
Padlet: https://padlet.com/mheizmann/7o29sf29b99i3342 (opens in a new tab)
Auf was achtet ein Entwickler?
Danach haben wir gemeinsam notiert, was ein Entwickler nicht ausser Acht lassen darf.
- Aufwand
- Kundenwünsche
- Sicherheit
- Entwicklungskosten
- Darstellung der App im Store
- Werbung (keine oder gut platzierte)
- Kundenwünsche
Padlet: https://padlet.com/mheizmann/4wedoedoopav9ods (opens in a new tab)
Zielplattform
Ich entschloss mich dafür, den Fokus bei der Erstellung der App auf Android zu legen. Da ich aber die App mit Ionic entwickle, sollte die Darstellung auch auf iOS ansprechend sein.
Mein App soll schlussendlich mindestens die folgenden Versionen bedienen.
Version | Jahr |
---|---|
Android 11 | 2020 |
Android 10 | 2019 |
Android 9.0 | 2018 |
Android 8.0-8.1 | 2017 |
Android 7.0-7.1.2 | 2016/2017 |
Android 6.0-6.0.1 | 2015 |
Android 5.0-5.1.1 | 2014/2015 |
iOS 15.1 | 2021 |
iOS 12.5.1 | 2021 |
iOS 10.3.4 | 2019 |
Dabei lege ich einen besonderen Fokus auf die Geräte von folgenden Herstellern.
- Samsung
- Apple
- Huawei
Tests
Nun habe ich mir überlegt, welche Testverfahren ich kenne.
Funktionale Tests
Beim funktionalen Testen geht es darum, die Funktion einer Komponente zu testen. Man schreibt einen Test, der immer bestanden werden muss. Nach einer Änderung im Code, kann dieser Test wieder ausgeführt werden. Dann sieht man, ob die Komponente noch den Erwartungen entspricht.
Cypress
Cypress ist ein Tool, welches einen solchen Test ermöglicht.
Das Framework stellt Funktionen zur Verfügung, welche das Testen erleichtern.
visit
.click()
.dblclick()
.rightclick()
.type()
.clear()
.check()
.uncheck()
.select()
.trigger()
Visuelle Tests
Beispiel:
Ich habe eine fertige Webseite. Nun will ich eine kleine Änderung im Code vornehmen. Diese soll sich aber nicht auf das Aussehen der Webseite auswirken. Nach dieser Änderung kann man einen solchen Test durchführen. Somit sieht man, ob sich etwas verändert hat.
Aber die Änderungen sieht man doch auch ohne einen solchen Test, oder?
Ein Test macht Bilder einer Seite und gleicht diese mit der Referenz ab. Die Software kann minimale Unterschiede feststellen. Dies auch auf verschiedenen Grössen. Zudem spart man Zeit, da man nicht manuell über jede einzelne Seite navigieren muss.
Backstop
Mit Backstop kann ein solcher Visueller Test ausgeführt werden.
Führt man einen Test aus, so erkennt man, was verändert wurde.
Da diese Tests mit Docker ausgeführt werden, liefern sie auf allen Systemen dieselben Ergebnisse. Mit Docker kann man nämlich Programme isoliert ausführen. Die Umgebung ist mit einer VM zu vergleichen. Mit Docker kann aber eine ganze Umgebung bereitgestellt werden und es wird weniger Speicher benötigt.
Usability Methoden
Es gibt empfohlene Methoden, mit welchen man die User Experience (UX) eines Produktes überprüfen kann.
- Best-Practice-Analyse
- Card Sorting
- Eyetracking
- Fragebögen
- Heuristische Evaluation
- Interviews & Umfragen
- Kriterienkataloge
- Personas
- Usability Tests
- Walkthrough-Verfahren
Ich entschied, dass ich meinen Prototyp zum Testen ausliefere und Feedback über eine Microsoft Forms Umfrage einhole.
Manuell
In diesem Projekt werde ich aus zeitlichen Gründen hauptsächlich manuell testen. Würde das Projekt länger als 5 Tage dauern, wären Scripts wohl die bessere Wahl. Auf kurze Sicht kann ich so aber etwas Zeit einsparen.
Um zu testen werde ich meistens den Android Studio und den Xcode Simulator verwenden. In der Entwicklung werde ich aber auch die Ansicht im Browser verwenden.
Wenn die App fertig ist, werde ich das Handy von Lars verwenden, um die App zu testen.
Veröffentlichung
Um die App zu veröffentlichen, muss man folgende Schritte befolgen.
Google Developer
Vorerst muss man ein Google Konto erstellen.
- Webseite besuchen (https://accounts.google.com (opens in a new tab))
- Konto erstellen
- Formular ausfüllen
- Konto aktivieren
Danach kann man ein Developer Konto erstellen.
- Webseite besuchen (https://play.google.com/apps/publish/signup/ (opens in a new tab))
- AGBs akzeptieren
- Kreditkartendaten angeben
- Unternehmensdaten eingeben
App signieren
Nun muss man die App signieren. Dazu muss man sich die Signatur aus der Google Play Console besorgen.
Dieses Signaturzertifikat kann nun die App integriert werden.
{
"android": {
"apk": {
"keystore": "IhreAPP.keystore",
"storePassword": "IhrPasswort",
"alias": "IhreAPP",
"password": "IhrPasswort",
"keystoreType": "",
"packageType": "apk"
},
"release": {
"keystore": "IhreAPP.keystore",
"storePassword": "IhrPasswort",
"alias": "IhreAPP",
"password": " IhrPasswort",
"keystoreType": "jks",
"packageType": "bundle"
}
}
}
Bei Angular können diese Konfigurationen in die environment Files gepackt werden.
App erstellen
Danach kann man einen APK-Export der App builden.
Build hochladen
Dieses File kann dann hochgeladen werden. Dabei unterscheidet man zwischen einem Test und einem Release.
Ebenfalls noch wichtig ist, dass man zuvor sieben bis zehn Fotos im Hoch- und Querformat erstellt. Entscheidend dabei sind auch die, mindestens zwei, Bilder im Tablet Format. Diese machen die App dem User schmackhaft.
Resultate begutachten
Nun kann man sich die Daten und das Feedback der App ansehen.
Stores
Doch was ist der Google Play Store und gibt es Alternativen?
Google Play Store
Seit dem 22. Oktober 2008 steht die Nutzung des Stores zur Verfügung. Entwickelt wurde dieser von Google.
App Store
Ebenfalls im Jahre 2008 wurde der App Store als digitale Vertriebsplattform für Anwendersoftware veröffentlicht. Apple bietet somit auch eine Plattform für Mobile Apps.
F-Droid
Eine Alternative zum App Store bietet F-Droid. Die Plattform bietet ausschliesslich Android Software an, welche Gratis ist.
Amazon App Store
Auch der Amazon App Store bietet Android Apps an. Er zeichnet sich durch die Prüfung der Anwendungen vor der Aufnahme aus.
APK-Datei
Die Applikation kann auch in eine APK-Datei verpackt werden. Aus dieser kann dann ein User die App entpacken.
Planung
Projektname
Der Name meines Projekts lautet Connect-Mitarbeiterverwaltung.
Das Ziel der App ist es, dass Mitarbeiter untereinander "connecten" können.
Beschreibung
Die App soll alle Mitarbeiter mit den entsprechenden Informationen anzeigen. Auf jedem Device kann ein Profil eingerichtet werden. Dieses kann auch vom Ersteller bearbeitet und gelöscht werden. Zu den anzuzeigenden Informationen gehören:
- Vorname
- Name
- Job Titel
- Telefonnummer
Datum | Tätigkeiten |
---|---|
Donnerstag, 02.12.2021 | Angular Ionic installieren; Github einrichten; Anforderungen anschauen; Struktur der Dokumentation erstellen |
Freitag, 03.12.2021 | Pages und Tabs erstellen; Firebase Datenbank erstellen; Datenbankanbindung; Sensoren ansprechen |
Montag, 06.12.2021 | CRUD Funktionalitäten implementieren; Sensoren ansprechen; Simulatoren aufsetzen |
Donnerstag, 09.12.2021 | Tests durchführen; Dokumentieren; App refaktorisieren; Usability Umfrage durchführen |
Freitag, 10.12.2021 | Dokumentation fertigstellen; Letzte Testfälle durchführen; Export erstellen |
Storyboard
Zur Erstellung des gesamten Designs verwendete ich den Vektorgrafik-Editor Figma. Ich entschied mich für Figma, da ich das Tool schon gut kannte.
Version 2.0
Titel: Connect Mitarbeiterverwaltung - Storyboard
Datum: 02.10.2021
Ersteller: Kay Wild
Display: iPhone 13 (W: 375, H: 812)
Link: https://www.figma.com/file/WSLuXTx5BCzuYU4I1Qi24Q/%C3%9CK?node-id=0%3A1 (opens in a new tab)
Hierbei ist angedacht, dass das Design auf Dunkel umstellt, wenn der Dark Mode auf dem Device aktiviert ist.
Mockups
Meine Mockups sind in der Low oder Middle Fidelity Stufe gezeichnet. Dies liegt daran, dass die Bilder und Texte noch aus Beispieldaten bestehen. Die Screens will ich aber so umsetzen.
Handy Portrait
Version 2.0
Titel: Connect Mitarbeiterverwaltung - Mockup
Datum: 02.10.2021
Ersteller: Kay Wild
Display: iPhone 13 (W: 375, H: 812)
Link: https://www.figma.com/file/WSLuXTx5BCzuYU4I1Qi24Q/%C3%9CK?node-id=0%3A1 (opens in a new tab)
Handy Landscape
"Apps should only be programmed to use multiple orientations if they would be useful in multiple orientations."
Ich befolge diesen Ratschlag, da ich in diesem Fall keine Vorteile in einer Landscape App sehe.
Tablet Portrait
Die Zielgruppe meiner App sind Handy User. Trotzdem wäre es schön, wenn die App auch mit einem iPad bedienbar wäre. Da ich die App mit Ionic umsetze, sollte dies der Fall sein. Jedoch lege ich kein Augenmerk darauf und mache auch keine separaten Anpassungen.
Version 2.0
Titel: Connect Mitarbeiterverwaltung - Mockup
Datum: 02.10.2021
Ersteller: Kay Wild
Display: iPad Pro (W: 834, H: 1194)
Link: https://www.figma.com/file/WSLuXTx5BCzuYU4I1Qi24Q/%C3%9CK?node-id=0%3A1 (opens in a new tab)
Tablet Landscape
Auch beim Tablet sollte der Landscape Modus gesperrt werden.
Systemdokumentation
Umgebung Einrichten
Wie ich meine Umgebung eingerichtet habe, kann man mithilfe der untenstehenden Tabelle ansehen. Dabei ist wichtig, dass man die Installationen sauber durchführt und auch jeweils die korrekte Version herunterlädt, sodass es nicht zu Konflikten kommt.
Software | Installation |
---|---|
Homebrew ist der perfekte Packet Manager für macOS. Man kann ihn verwenden, um weitere Tools zu installieren. | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" |
Android Studio muss installiert werden, um die App zu builden. Darin muss dann auch die korrekte Java JDK Version ausgewählt werden. | brew install --cask android-studio |
Gradle brauche ich, um meine App zu builden, damit ich diese in Android Studio zu testen. | brew install gradle |
Xcode kann aus dem App Store heruntergeladen werden, um die App auf den iOS Simulatoren zu testen. | Xcode kann von hier heruntergeladen werden: https://apps.apple.com/us/app/xcode/id497799835?mt=12 |
Node.js ist eine Open-Source-JavaScript-Laufzeitumgebung. Sie ermöglicht das Ausführen von JS Code ausserhalb des Browsers. In diesem Projekt benötige ich es, um eine Browser Applikation zu builden. | curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash |
Ionic CLI wird benötigt, um das Projekt zu builden. | npm install -g @ionic/cli |
Ionic iOS Simulator wird verwendet, um die App im iOS Simulator starten zu können. | sudo gem install cocoapods ; npm install -g ios-sim ; brew install ios-deploy |
Ionic Android Platform braucht man, um die Software im Android Simulator testen zu können. | ionic capacitor add android |
Visual Studio Code kann als IDE installiert werden. | brew install --cask visual-studio-code |
Projekt Setup
Um mein Projekt zu verwenden, müssen andere Entwickler lediglich mein Repository klonen. Dies können sie mit folgendem Befehl tun: gh repo clone kayjw/connect-mitarbeiterverwaltung
Alternativ kann man auch den Ordner von https://github.com/kayjw/connect-mitarbeiterverwaltung.git (opens in a new tab) herunterladen und entpacken.
Daraufhin kann man mit npm install
die nötigen Pakete installieren.
Projekt im Browser starten
Um das Projekt im Browser zu starten, dient folgender Befehl: npm start
Projekt im Simulator starten
Das Projekt kann aber auch im Android Simulator gestartet werden.
ionic capacitor add android
ionic capacitor copy android
- Android Studio: JDK Version 11 auswählen
- Neues Device anlegen
ionic capacitor open android
- In Android Studio auf Play drücken
In meinem package.json
befindet sich aber auch ein Befehl, der diese Schritte vereinfacht:
npm run emulate:android
Sensor/Aktor
Die Capacitor Device Geräte-API stellt interne Informationen über das Gerät, wie z. B. das Modell und die Betriebssystemversion, sowie Benutzerinformationen wie eindeutige Kennungen zur Verfügung.
Das Packet wird immer beliebter.
Mehr Informationen findet man in der Dokumentation: https://capacitorjs.com/docs/apis/device (opens in a new tab)
Wie verwendet Sie die Datenbank
Struktur
Die Struktur meiner Datenbank sieht folgendermassen aus:
Zugriffsrechte
Dabei sind die Zugriffsrechte so definiert, dass man die Daten nur mit einem exakten Pfad ändern kann.
Will jemand also einfach alle Daten holen, so wird er abgelehnt.
Einbindung
Firebase kann in elf Schritten eingebunden werden.
- Webseite besuchen: https://console.firebase.google.com/ (opens in a new tab)
- Projekt erstellen
- App erstellen
- App Name vergeben
- Firebase Konfiguration sichern
- Unter
Develop
->Database
->Create Database
eine neue Datenbank erstellen - Die im vorherigen Kapitel beschriebenen Regeln definieren
- Firebase im Projekt installieren
npm install firebase @angular/fire --save
- Die gesicherte Konfiguration unter
src
in die zweienvironment
Dateien hereinkopieren - Firebase in den nötigen Files importieren
employees.service.ts
import { FirebaseApp, initializeApp } from 'firebase/app'; import { getDatabase, ref, onValue, push, set, remove, update, query, equalTo, get, orderByChild, child, } from 'firebase/database'; import { Database, DatabaseReference, DataSnapshot, Unsubscribe, } from 'firebase/database';
- Die App initialisieren, damit man mit der DB arbeiten kann.
employees.service.ts
this.firebaseApp = initializeApp(environment.firebase); this.database = getDatabase(this.firebaseApp);
Wie stellen Sie eine Persistenz der Daten sicher?
Wie bereits beschrieben wird die Offline-Datenpersistenz von Firebase unterstützt. Jedoch habe ich trotzdem eine Meldung eingebaut, welche dem User mitteilt, dass er nicht mehr mit dem Internet verbunden ist.
Möglichkeiten, die App zu testen
Die Testverfahren habe ich weiter oben beschrieben. Aus den notierten Gründen teste ich die App manuell in Android Studio.
Simulationsumgebungen
Ich verwendete während dieses Projektes drei Simulatoren.
Browser | iOS | Android Studio |
---|---|---|
Während fast der gesamten Entwicklung arbeitete ich im Browser. So konnte ich Elemente inspecten und sah jeweils die Fehlermeldungen in der Konsole. | Den iOS Simulator verwendete ich nur kurz, um sicherzustellen, ob die App auch dort lauffähig ist. | Android Studio kam bei mir hauptsächlich während den letzten zwei Tagen zum Einsatz. So konnte ich die App testen. |
Bedienungsanleitung
Home
Startet man die App, so landet man im Mitarbeiter Bereich. Dort windet man eine Übersicht mit allen Arbeitskollegen. Die Ansicht kann bei Bedarf mit einer Wisch Geste nach unten aktualisiert werden.
Suchfeld
Das Suchfeld ermöglich eine Filterung nach Vornamen, Nachname, Job Bezeichnung oder Telefonnummer. Dadurch können die gewünschten Personen schnell gefunden werden.
Profil
In der Tab Navigation kann man zum persönlichen Profil wechseln.
Hinzufügen
Hat man noch kein Profil erstellt, so kann man hier eines hinzufügen. Man muss folgende Daten angeben:
- Vorname
- Nachname
- Job Titel
- Telefonnummer
Editieren
Über den Button Profil bearbeiten
kann mein seine eingegebenen Daten ändern.
Löschen
Das eigene Profil kann man über dasselbe Modal auch wieder löschen.
Testdokumentation
Wie weiter oben beschrieben, werde ich diese Tests manuell durchführen.
Die Testfälle wurden grösstenteils vor der Entwicklung erstellt.
Bei der Durchführung verwendete ich unter anderem den Pixel 5 API 30 Emulator und ein Huawei Handy.
Software-Tests
ID | Was | Wie | Wann | Erwartung | Resultat | Weiteres Vorgehen |
---|---|---|---|---|---|---|
1 | Entspricht die App den Usability Standard | Ich führe ein Usability Umfrage aus, welche ich mit Microsoft Forms erstellt habe. | 10.12.2021 | Ich will mindestens eine Bewertung von 4/5 Punkten erhalten. | Ich hatte 4 Teilnehmer. Der Schnitt aller Resultate liegt bei 4.58 Punkten. Zudem lag kein einzelner Wert unter 4. | - |
2 | Cross-Plattform | Ich werde die App im iOS und Android Simulator ausführen. | 09.12.2021 | Die App funktioniert auf beiden Plattformen einwandfrei. | Ganz der Erwartung entsprechend | - |
3 | Code Qualität | Ich lass den ESLint über das Projekt laufen und bekomme so ein Feedback zur Syntax. | 09.12.2021 | ESLint hat keine Verbesserungsvorschläge. | 97 Probleme und 55 Errors. | Code Refaktorisieren; 39 Problem und 31 Errors (09.12.2021); 0 Probleme und 0 Errors (10.12.2021) |
4 | Meldungen in der Konsole | Mit npm start führe ich die App im Browser aus. In der Konsole suche ich dann nach Ausgaben. | 10.12.2021 | Wenn ich die App im Browser starte, bekomme ich keine console.logs und Fehler. | Ein Error kommt noch. | Dieser Error kann mir egal sein, da ich die Ursache kenne. Die App kann die Screenorientation im Browser nicht auslesen. Ich weiss aber, dass es in der App funktioniert. |
5 | Loading Screen | Ich öffne die App. | 09.12.2021 | Der Loading Screen zeigt das Logo meiner App. | Ganz der Erwartung entsprechend | - |
6 | Home Seite | Ich öffne die App und warte, bis der Loading Screen verschwunden ist. | 09.12.2021 | Der Titel und das Suchfeld werden richtig dargestellt. | Ganz der Erwartung entsprechend | - |
7 | Laden der Personen | Ich schaue den geladenen Homescreen an. | 09.12.2021 | Entweder werden Personen angezeigt. Ist dies nicht der Fall, muss ich die Seite nach unten ziehen. Somit sollten nun Mitarbeiter dargestellt werden. | Ganz der Erwartung entsprechend | - |
8 | Funktionalität des Suchfeldes | Ich gebe verschiedene Namen, Texte, Job Titel und Telefonnummern im Feld ein. Die Ergebnisse vergleiche ich dann mit den Daten, welche dargestellt werden sollten. | 09.12.2021 | Ich bekomme immer die gewünschten Mitarbeiter. | Ganz der Erwartung entsprechend | - |
9 | Navigation auf Profil | Ich klicke auf das rechte Icon in der Navigation. | 09.12.2021 | Es wechselt zu der Profil Seite. | Ganz der Erwartung entsprechend | - |
10 | Navigation auf Home | Ich klicke auf das linke Icon in der Navigation. | 09.12.2021 | Es wechselt zu der Home Seite. | Ganz der Erwartung entsprechend | - |
11 | Anzeige Button | Ich öffne die Profil Seite. Da sollte ein Button angezeigt werden. (Dieser wird nur angezeigt, wenn noch kein persönliches Profil erstellt wurde.) | 09.12.2021 | Ein blauer Button mit dem Text "Profil erstellen" wird angezeigt. | Ganz der Erwartung entsprechend | - |
12 | Öffnung Modal | Ich klicke auf den Button, um ein Profil zu erstellen. | 09.12.2021 | Ein Modal geht auf. | Ganz der Erwartung entsprechend | - |
13 | Schliessung Modal | Ich klicke auf den "zurück" Button. | 09.12.2021 | Das Modal wird geschlossen. | Ganz der Erwartung entsprechend | - |
14 | Profil hinzufügen | Ich fülle das Modal aus und klicke auf "speichern" | 09.12.2021 | Das Modal wird geschlossen und das Profil wird dargestellt. | Ganz der Erwartung entsprechend | - |
15 | Validierung bei leeren Feldern | Ich versuche eine Person hinzuzufügen, ohne Daten einzugeben. | 09.12.2021 | Es kommt eine Meldung, die mir zeigt, welche Felder noch leer sind. | Ganz der Erwartung entsprechend | - |
16 | Validierung bei zu vielen Zeichen | Ich versuche, bei den Input Felder mehr als 15 Zeichen einzutippen. | 09.12.2021 | Es ist nicht möglich. Wenn bereits 15 Zeichen getippt wurden, werden weitere Tastenanschläge ignoriert. | Ganz der Erwartung entsprechend | - |
17 | Validierung von falschen Daten | Ich gebe bei der Telefonnummer einen Text ein. | 09.12.2021 | Es erscheint eine rote Linie unterhalb des Input Feldes. | Funktioniert bei der Telefonnummer noch nicht. Es zeigt sie immer als falsch an, da sie im US-Format eingegeben werden müsste. | Eigenes Regex Pattern schreiben; Funktioniert (10.12.2021) |
18 | Validierung von bösartigem Input | Ich füge JS und HTML Code in die Input Felder ein. | 10.12.2021 | Die Applikation kann damit umgehen. Sie gibt interpretiert keine HTML Tags und im Backend wird nichts zerstört. | Ganz der Erwartung entsprechend | - |
19 | Telefonnummer Input | Ich klicke auf das Input Feld, um die Telefonnummer einzugeben. | 10.12.2021 | Es kommt keine Tastatur, sondern Zahlen, die man eingeben kann. | Ganz der Erwartung entsprechend | - |
20 | Modal bei Profil bearbeiten | Ich klicke auf "Profil bearbeiten". | 09.12.2021 | Ein Modal öffnet sich. Dieses ist mit den korrekten Daten abgefüllt. | Ganz der Erwartung entsprechend | - |
21 | Profil bearbeiten | Ich ändere Daten eines bestehenden Profils. | 09.12.2021 | Auf der Profil Seite werden die Erneuerungen dargestellt. | Ganz der Erwartung entsprechend | - |
22 | Profil löschen | Im Modul klicke ich auf "löschen". | 09.12.2021 | Das Profil wird entfernt und der Button "Profil hinzufügen" ist wieder sichtbar. | Ganz der Erwartung entsprechend | - |
23 | Sperrung Querformat | Ich rotiere das Smartphone und teste, ob sich die Applikation dreht. | 09.12.2021 | Die App bleibt im Hochformat. | Ganz der Erwartung entsprechend | - |
24 | Icon wird angezeigt | Ich sehe mir die App in einer Android Studio Simulation an. | 09.12.2021 | Das Logo wird als App Icon angezeigt. | Ganz der Erwartung entsprechend | - |
25 | Offline-Meldung | Ich deaktiviere die Netzwerkverbindung auf dem Simulator. | 09.12.2021 | Ohne Internet kommt folgende Meldung: "Es besteht keine Internetverbindung. Deine Daten werden gesichert, wenn du wieder online bist." | Ganz der Erwartung entsprechend | - |
26 | Darkmode | App im Browser starten und mein MacBook in den Darkmode versetzen. | 10.12.2021 | Die App wechselt ebenfalls in den Darkmode. | Ganz der Erwartung entsprechend | - |
Usability-Tests
Um die Usability zu testen, habe ich eine Microsoft Forms Umfrage erstellt. Ich bat meine Schulkammeraden diese nach dem Testen meiner App auszufüllen. Dabei konnten sie zwischen einem und fünf Punkte vergeben. Dies sind die Ergebnisse.
Zudem gab es drei Feedbacks:
- "Dunkles Design gefällt mir"
- "Elemente der App sind mir bekannt, da ich privat iOS nutze"
- "Gut Navigierbar"
Implementation
Umsetzung des Sensors, Aktors und Probleme
Ohne Unique Device Identifier, könnte ich nicht jedem Gerät ein persönliches Profil zuordnen. Deshalb habe ich das Capacitor Device Plugin installiert.
npm install @capacitor/device
npx cap sync
Dieses Plugin kann ich dann in einem meiner Services importieren.
import { Device } from '@capacitor/device';
Danach kann ich mithilfe der getId()
Methode die ID des jeweiligen Gerätes auslesen.
Device.getId();
Diesen Service verwende ich dann, um die ID in die Datenbank zu speichern. So kann jeder nur sein eigenes Profil erstellen, bearbeiten und löschen.
Probleme
Es sind weder bei der Installation noch bei der Verwendung Probleme aufgetreten. Natürlich brauchte ich etwas Zeit, um mich einzulesen. Jedoch war die Dokumentation sehr akkurat.
Umsetzung Datenbank und Probleme
Die Datenbank hat mir am meisten Probleme bereitet. Ich verbrachte einen ganzen ÜK-Tag und das gesamte Wochenende mit der Einbindung.
Vorerst funktioniert das Setup weder mit der normalen Firebase Installation noch mit dem angularfire2
Paket.
Deshalb war ich s ehr erleichtert, als ich endlich Daten manipulieren konnte.
Backup der Datenbank Dummy Daten
{
"employees": {
"0": {
"firstName": "Olive",
"lastName": "Yew",
"jobTitle": "Senior Frontend Engineer",
"phoneNumber": "+41 79 000 00 00",
"profile": "8417fe3e-d2f0-4704-b511-7c2345f0f2v2"
},
"1": {
"firstName": "Aida",
"lastName": "Bugg",
"jobTitle": "Talent Manager",
"phoneNumber": "+41 79 000 00 00",
"profile": "8417fe3e-d2f0-4704-b511-7c2345f0f2v3"
},
"2": {
"firstName": "Maureen",
"lastName": "Biologist",
"jobTitle": "Junior Java Developer",
"phoneNumber": "+41 79 000 00 00",
"profile": "8417fe3e-d2f0-4704-b511-7c2345f0f2v4"
},
"3": {
"firstName": "Teri",
"lastName": "Dactyl",
"jobTitle": "Senior PHP Developer",
"phoneNumber": "+41 79 000 00 00",
"profile": "8417fe3e-d2f0-4704-b511-7c2345f0f2v5"
},
"4": {
"firstName": "Peg",
"lastName": "Legge",
"jobTitle": "Social Media Marketing",
"phoneNumber": "+41 79 000 00 00",
"profile": "8417fe3e-d2f0-4704-b511-7c2345f0f2v6"
}
}
}
Projekt erstellen
Um ein Angular Projekt aufzusetzen, muss man folgenden Befehl ausführen:
ionic start
Genauere Informationen zu den weiteren Informationen sind weiter oben beschrieben.
Dateien
In folgender Tabelle zeige ich, welche Ordner welche Dateien beherbergen.
Verzeichnis | Inhalt |
---|---|
android | Der Android Ordner muss nicht beachtet werden. Er ist dazu da, den Simulator laufen zu lassen. |
e2e | Der e2e Ordner kann zu end to end testing Zwecken verwendet werden. Wie aber schon beschrieben, habe ich für dieses Projekt noch keine Funktionalen Tests angelegt. |
node_modules | In diesem Folder befinden sich die Pakete, welche mit npm install installiert wurden. |
recources | Hier befinden sich generierte Icons. Diese werden zur Darstellung des Logos beansprucht. |
src | app: In diesem Ordner gibt es Models, welche eine Datenstruktur abbilden. Es gibt Pages und Tabs. Darin befinden sich die Seiten. Zudem gibt es noch Services, welche einen Dienst erbringen.; assets: In diesem Ordner findet man die Bilder, welche in diesem Projekt benötigt werden.; environments: Hier findet man 2 Konfigurationsdateien. Eine ist für die App in der Entwicklung. Die andere gilt beim Produktionsmodus. In diesen Dateien wird z.B. die Firebase Konfiguration festgehalten.; theme: Das variable.scss befindet sich hier. Es definiert die Farben. |
root | Im root findet man wichtige Dateien für das Projekt. Das .nvmrc File definiert die Node Version. Im package.json werden die benötigten Pakete samt Versionen festgehalten. Das readme beschreibt die Software. |
Einstellungen
Same-Origin-Policy
Das Sicherheitskonzept untersagt Skriptsprachen wie JS oder CSS auf Objekte zuzugreifen, welche von einer anderen Seite stammen.
Da ich diese Arbeit mit Ionic durchführe, muss und sollte ich hier nichts überschreiben. Dies wird von Ionic übernommen.
Icon
Zur Erstellung der Icons musste ich zwei Files anlegen.
icon.png
Dieses Icon musste ich unter resources
mit der Grösse 1024x1024 Pixel anlegen.
splash.png
Dieses Icon musste ich unter resources
mit der Grösse 2732x2732 Pixel anlegen.
Script
Danach führte ich ein Script aus, welches die nötigen Dateien generiert und in resources
ablegt.
Umfang der APP
Doch was keine meine App jetzt?
Meine App zeigt alle Personen eines Betriebs an. Somit können Informationen über die einzelnen Mitarbeiter gewonnen werden.
Zudem hilft sie beim Finden von Personen. Wenn man ein Problem mit dem Laptop hat und jemanden aus ITS-Abteilung sucht, so muss man nur nach "ITS" suchen. Nun hat man die Kontaktdaten der gewünschten Person.
Wenn man neu in der Firma arbeitet und eine Person kennenlernt, so findet man dank der App auch schnell heraus, was die Person macht.
Jede Arbeitskraft der Firma hat die Möglichkeit, ein Profil zu erstellen. Somit wird sie dann von den anderen Personen wahrgenommen. Dieses Profil kann bearbeitet und bei Bedarf auch gelöscht werden.
Zukunftsaussichten
Momentan verwende ich ein Dummy Bild als Profilbild. Dieses könnte aber auch vom User ausgewählt werden können. Somit würde die App noch etwas persönlicher werden. Zudem ist das Profil erweiterbar. Man könnte also in weiteren Versionen beliebig viele Daten, wie z.B. den Standort, die Fähigkeiten, Hobbys, … hinzufügen.
Programmaufbau
Ich setzte meine Applikation komponentenbasiert um. Eine Page besteht jeweils aus mindestens vier Files.
In der HTML-Datei ist die Struktur dargestellt.
Im SCSS File wird die Seite gestyled. Sass ist eine Stylesheet Sprache, welche die Pflege von grossen Stylesheets durch ihre Funktionen erleichtert. Darin kann aber auch normales CSS geschrieben werden.
Die spec.ts
Datei kann jeweils einen Unit Test für den Komponenten enthalten.
Die von Microsoft entwickelte Programmiersprache Typescript wird im TS-File verwendet. Darin findet man die Logik der Komponente.
Neben Pages gibt es aber auch noch Models. Diese enthalten die Strukturierung der Daten.
Services habe ich drei. Durch den device-auth
Service bekommt man die Geräte ID. Der employees
Service führt die CRUD Operationen aus und is-online
kann einen Toast ausgeben, wenn keine Internetverbindung besteht.
Codequalität
ESLint
Die Codequalität habe ich mit ESLint sichergestellt. Dies ist in den Testfällen dokumentiert.
Prettier
Zur Formatierung verwendete ich Prettier.
Fazit
Auf diesen ÜK habe ich mich sehr gefreut, da ich noch nie zuvor eine App programmiert habe. Handys dominieren in der heutigen Welt immer mehr den Markt. Deshalb finde ich es wichtig, dass man bei der Softwareentwicklung auf diese Geräte abzielt.
Besonders Spass hat mir das Programmieren mit Angular Ionic gemacht. Denn in diesen 5 Tagen habe ich enorm viel gelernt.
Einfach fand ich die Erstellung der Mockups und Prototypen, da ich mich gut mit Figma auskenne.
Etwas schwieriger fand ich, die Simulatoren zum Laufen zu bringen. Besonders aufreibend war das Einbinden von Firebase. Daran sass ich einen Grossteil meines Wochenendes.
Das nächste Mal würde ich den ÜK wieder mit Angular Ionic absolvieren. Dies ist aufwändiger. Jedoch hat sich der Einsatz, meiner Meinung nach, gelohnt. Denn ich habe viel über Angular, Ionic, npm, Entwicklungsumgebungen, Plugins und Testvarianten gelernt.
Zudem bin ich erstaunt, wie schnell man eine simple App programmieren kann.