Skip to content

Commit

Permalink
sort learnings
Browse files Browse the repository at this point in the history
  • Loading branch information
BennerLukas committed Feb 20, 2021
1 parent b725e1d commit 3145072
Showing 1 changed file with 61 additions and 49 deletions.
110 changes: 61 additions & 49 deletions doc/learnings.md
Original file line number Diff line number Diff line change
@@ -1,91 +1,103 @@
# Projektprozess
# Learnings

Für Learnings im Bereich Businessmodell & Konzeption siehe im Bereich Business.
## gelernte Technologien

## Untersuchte, Evaluierte Technologien
__auch verwendet:__

- Typescript / JavaScript
- Entwickeln mit TypeScript (TS) und JavaScript (JS)
- Typescript
- JavaScript
- Deno
- Vue
- MySQL / MariaDB

__in finaler Version nicht verwendet:__

- Angular
- Docker
- Datenbank auf Blockchain
- Zu kostspielig für ein nicht finanziertes OS-Projekt
- Krypto und Anwendung für Developer -> leider unpassend für Tracer.

-----

- Frontend:
## Frontend

- Angular
- simple Tests / get started -> Vue hat uns aber besser gefallen.
- simple Tests / get started -> Vue erschien uns aber sympathischer.
- Anfangs Frontend von Tracer mit Vue -> kleinere Anpassungen am normalen Vue Template
- Wir verstanden nicht die grundsätzliche Struktur von Vue z.B. Position von Komponenten ändern etc.
- Daher wechsel auf Angular -> probieren mit vorgefertigtem Template
- Zu Beginn Schwierigkeiten mit grundsätzlicher Struktur von Vue z.B. Position von Komponenten ändern etc.
- Daher erneut Angular ausprobiert -> Jedoch bei Vue geblieben.

- Vue
- Vue hat doch etwas besser zugesagt, obwohl wir es nicht ganz verstanden haben
- Endgültige Entscheidung auf Vue -> suchten zuerst den schnellsten weg eine schöne Frontend-Anwendung zu bauen
- Ionic Tabs Template -> sah sehr gut aus und sagte vom Grundaufbau mit drei Tabs sehr gut zu
- Jedoch Probleme das Projekt auf mehreren Clients zum Laufen zu bekommen
- Lange Zeit probierten wir am Template herum -> Entschluss Vue Projekt von Grund auf selbst aufbauen
- Aufbau Components -> Zuerst Standard Buttondesign aus Mockup
-> dann „Confirmation Button“ usw.
- Nach und nach ersten Plugins: z.B. QR-Scanner und QR Generator
- Ab gewissem Zeitpunkt nicht mehr zufrieden mit dem Aussehen der App -> auf ein Framework einigen
- Die Wahl viel auf Vuetify -> viele Components vorgefertigt -> Risikobewertung als „v-card“
- Tab Konzept aus Ionic Vorlage -> ebenfalls als v-buttom-navigation umgesetzt
- Vue hat doch etwas besser zugesagt, obwohl es Startschwierigkeiten gab
- gewählt wurde Vue da simple und moderne App gewünscht.
- Vue UI
- vuetify
- ionic (getestet aber nicht verwendet)
- Endgültige Entscheidung auf Vue -> da schnelle und dynamische Entwicklung möglich
- Ionic Tabs Template
- Template -> professinelle Oberfläche und passender Aufbaus
- Probleme: Lief nich Fehlerfrei auf allen Plattformen und nicht einfach eigene Anpassungen zu machen
- Daher: Vue Projekt von Grund auf selbst aufbauen
- Eigenes Frontend
- Aufbau Components
- Standard Buttondesign aus Mockup
- Confirmation Button
- Plugins
- QR-Scanner
- QR Generator
- Vuetify
- Ab gewissem Zeitpunkt nicht mehr zufrieden mit dem Aussehen der App -> auf ein Framework einigen
- Die Wahl viel auf Vuetify da:
- viele Components vorgefertigt
- Risikobewertung als „v-card“
- Tab Konzept aus Ionic Vorlage -> ebenfalls als v-buttom-navigation umgesetzt
- weitere Learnings
- Vue UI -> Dashboard zum Entwickeln
- Analysieren anderer Projekte und Templates
- tiefergehendes Verständnis für HTML und CSS

- Progressive Web App (PWA)
- damit auch in erster Linie Mobile User die App verwenden können
- Umsetztung mit Vue
- Umsetztung mit Vue (Plugin)
- Als Components und Seiten fertig waren -> Versuch händisch das Projekt zu einer PWA zu konvertieren -> sehr viele Probleme -> einfachere Lösung: Vue UI
- In Vue UI: Plugins des Vue Projekts verwalten -> PWA Plugin installieren -> funktionierte

## Backend

- Deno als Backend (oder Node.js)
- TypeScript und Javascript überschneiden sich stark, typesafety erspart aber auf langer sicht Kopfschmerzen
- TypeScript und Javascript überschneiden sich stark, typesafety erspart aber auf langer sicht Kopfschmerzen
- JavaScript packages funktionieren ebenfalls in Deno
- da Deno ziemlich neu ist, sind viele Probleme noch undokumentiert
- Errors müssen händisch gefixt werden, keine copy&paste quickfixes aus StackOverflow


- Projektorganisation
- Git (auch tiefergehende Möglichkeiten)
- Github (KANBAN-Board, Issues, Aufgabenverteilung, License)
- README und Markdown
- Branches für paralleles Arbeiten
- gitignore
- flüssiges Zusammenarbeiten (wichtiges Learning für ggf. spätere (OpenSource) Projekte)
- Projektstruktur (Ordnerstruktur)

- Errors müssen händisch gefixt werden, keine copy&paste quickfixes aus StackOverflow

- Datenbanken und Datenspeicher
- Für das gesamte Projekt waren zunächst nur einige JSON Files vorgesehen
- Es stellte sich heraus, dass man als Client nicht auf .JSON Files zugreifen kann
- Zudem wäre ein solcher Speicher nur bei bestehender Internetverbindung funktionsfähig
- Im Backend wurde für eine kurze Zeit ein .JSON File zum Speichern benutzt, das Abfragen erwies sich jedoch als unnötig kompliziert
- Cookies sind nicht persistent und somit nicht zuverlässig
- Nach langer Recherche erwies sich Localbase als best performer:
- Nach langer Recherche erwies sich Localbase als best performanter:
- Es erfüllt alle Anforderungen: Persistent, leicht zu bedienen und abzufragen, offline funktionalität

- Pseudonymisierung
- Zunächst war geplant, allen usern einen zufälligen Hash als ID zu geben
- Zunächst war geplant, allen usern einen zufälligen Hash als ID zu geben
- Zwei Probleme: Kollisionen sind möglich & so gibt es keine binäre Suche
- Mit der Bibliothek CUID konnten beide Probleme gelöst werden
- Mit der Bibliothek CUID konnten beide Probleme gelöst werden

- Docker
- Dockerize und Dockerfile
- Dockercontainer -> Evaluierung der Umsetzung
## Projektorganisation

- Git (auch tiefergehende Möglichkeiten)
- Github (KANBAN-Board, Issues, Aufgabenverteilung, License)
- README und Markdown
- Branches für paralleles Arbeiten
- gitignore
- flüssiges Zusammenarbeiten (wichtiges Learning für ggf. spätere (OpenSource) Projekte)
- Projektstruktur (z.B. Ordnerstruktur)

## Business

- Schreiben von Businessplänen
- Erstellen Pitch-Decks
- Erstellen Businessmodel Canvas und Value Proposition Canvas
- Logodesign
- Mockups & Wireframes erstellen

- Business
- Schreiben von Businessplans
- Erstellen Pitch-Decks
- Erstellen Businessmodel Canvas und Value Proposition Canvas
- Logodesign
- Mockups & Wireframes erstellen
weitere Learnings und Informationen können aus unserer [README](https://github.com/michael-spengler/Tracer-wwi19dsa) entnommen werden.

0 comments on commit 3145072

Please sign in to comment.