-
Notifications
You must be signed in to change notification settings - Fork 0
Developer Guidelines
- Aufsetzen der Projektumgebung
- Definition of Done
- Verwendete Werkzeuge und Bibliotheken
- Code Konventionen
- Struktur des Repos
- NPM Scripts
- Github Workflows
- Die angebenen Anforderungen an die Funktionalität ist erreicht.
- Der Code ist ausreichend dokumentiert.
- Clean Code Kriterien sind eingehalten.
- Falls eine kritische Funktion für die Anwendung implementiert wird, muss diese ebenfalls ausreichend durch Unit Tests abgedeckt sein.
Die wichtigsten verwendeten Werkzeuge sind:
- Husky ist zuständig für das Ausführen der Pre-Commit Hooks und ist daher unerlässlich für die lokale Entwicklung. Es wird automatisch initialisiert, wenn die Projektumgebung aufgesetzt wird.
- ESLint wird für das Linten vom Code verwendet.
- Prettier wird für die automatische Formatierung des Codes verwendet.
- commit-lint wird für die automatische Überprüfung der Commit Messages verwendet.
Die wichtigsten verwendeten Bibliotheken sind:
- Vue 3 ist das Framework, welches für die Entwicklung der Anwendung verwendet wird.
- Leaflet ist für die Kartenfunktionalität zuständig und stellt viel Funktionalität für die Interaktion mit Markern bereit.
- Mapbox stellt die Directions und Geocoding API bereit. Die Directions API wird dazu verwendet, indiviuelle Routen (z.B. eines E-Scooters) zur Laufzeit anzufragen und zu cachen. Die Geocoding API wird benutzt, um den Start- und Zielort von Trips von LatLngs in eine Straße umzuwandeln (Reverse Geocoding).
Nachfolgend werden die wichtigsten Code Conventions aufgelistet, auf die wir uns im Team geinigt haben und deshalb die für die Entwicklung der Anwendung gelten.
Die Commit-Messages müssen den commit Konventionen folgen. Dies wird automatisch von Commitlint geprüft und bei Fehlern blockiert.
Die Benennung von Variablen folgt den generellen Typescript-Empfehlungen. Variablen und Funktionen werden in camelCase geschrieben. Dabei unterscheiden wir noch zwischen wirklichen Konstanten, die einmal definiert und nicht mehr geändert werden. Diese werden in UPPER_CASE definiert. Hierbei kann es etwas zu Verwirrung kommen, da in Typescript Variablen mit let und const initialisiert werden können, ESLint jedoch const preferiert. Daher soll laut ESLint auch ein Array, dessen Elemente sich ändern dürfen, mit const initialisiert werden.
Klassen, Interfaces, Enums und Types werden in PascalCase geschrieben. Die Elemente von Enums werden ebenfalls in PascalCase geschrieben.
Die Formatierung des Codes wird von Prettier übernommen und bei jedem Commit automatisch ausgeführt.
Das Repository ist folgt aufgebaut:
-
Generelle Konfigurationsdateien wie
package.jsonodertsconfig.jsonliegen im Root des Repos. -
In
publicbefinden sich unter anderem die vordefinierten Daten wie Trips, Fahrzeuge oder Benutzer.public └── data ├── risk ├── trips.json ... └── vehicles.json -
Unter
srcbefinden sich alle Quelldateien der Anwendung. Diese sind in folgende Ordner aufgeteilt: Hier sind besondersbackendsowiecomponentsundviewsinteressant. Alle Ornder die nicht unterbackendliegen, sind Frontend-bezogen.componentsenthält alle wiederverwendbaren Vue-Komponenten, die in den Views eingesetzt werden.viewsenthält die einzelnen Views wie z.B.DefaultView.vue, die vom Vue-Router angesteuert werden können.In
localeswerden die Übersetzungen in JSON-Dateien gespeichert.src ├── animation ├── backend │ ├── __tests__ │ ├── dataFields │ ├── dataModules │ ├── riskManager │ ├── utils │ ├── DataLoader.ts │ ├── DataManager.ts │ ... │ └── TripAnimator.ts ├── components │ ├── MainComponent.vue │ ... │ └── MapComponent.vue ├── locales ├── router ├── utils ├── views │ ├── dataViewer │ │ ├── DefaultView.vue │ │ ├── VehicleDataView.vue │ │ ... │ │ └── WelcomeView.vue │ └── DataView.vue ├── App.vue ├── i18n.ts ... └── main.ts
Die folgenden NPM Scripts sind verfügbar:
Installiere die Dependencies vorab mittels npm install bzw. npm i.
Dieser Modus aktualisiert Änderungen automatisch, sodass dieser Befehl nicht nach jeder Änderung neu ausgeführt werden muss.
npm run devnpm run buildMan kann den Produktions-Build per
npm run previewlokal testen.
Hinweis: Im Gegensatz zu npm run dev muss nach jeder Änderung wieder
npm run build && npm run previewausgeführt werden, um diese im Browser zu sehen.
npm run check-lint
npm run lintLetztes behebt die (behebaren) Fehler direkt in der Datei.
npm run check-format
npm run formatnpm run typechecknpm run test:unit
# or
npm run coverageDie Pre-Commit Hooks werden direkt mit npm i installiert. Manuell können diese mittels npm run prepare aktualisiert werden.
Die Pre-Commits Hooks sind:
-
lint(staged-only) -
format(staged-only) -
typecheck(auf allen Files) - commit-lint: Überprüft die Commit-Messages auf die commit Konventionen.
Es werden alle Workflows gestartet, wenn ein Push auf den Main Branch erfolgt.
- Linting und Check auf Formatierung
- Build und Tests durchführen
- Deployment auf Github Pages
Wenn der Push nicht auf den Main Branch erfolgt, sondern ein auf Feature-Branch, werden nicht immer alle Workflows gestartet.
-
Hat der Branch keine offene Pull-Request, wird nur der Code nur gelintet und auf Formatierung überprüft.
-
Wenn der Branch bereits eine Pull Request geöffnet hat, dann wird zusätzlich bei jedem Push der Build und die Tests durchgeführt.
Visualisierung vertraulicher Daten in Mobilitätssystemen (SS 2022) | Confidentiality Visualizer