# Einarbeitungstool
## Vorbereitungen
Für das Projekt müssen wir erstmal ein Gitlab Projekt anlegen.
Da dies kein Projekt im Mittwald 2023 Eventsourcing kontext ist, werden wir das Projekt nicht unterhalb von coab0x7e7 ablegen,
sondern innerhalb deines eigenen Namespaces (also einfach ein neues Projekt anlegen).
Hierbei solltest du dich direkt an die Mittwald standards halten und mit Branches arbeiten.
Also für den Master branch das Pushen verbieten und für Änderungen einen feature oder bugfix branch erstellen.
CLI:
```bash
git checkout -b <bugfix|task|feature>/<nameforbranch>
git add ...
git commit -m "commit name"
...
git push
```
Wenn fuck installiert ist:
```
fuck
```
ansonsten einfach den Befehl eingeben, der im Terminal angezeigt wird.
wenn der Branch gepushed ist, wird direkt im Terminal ein link angezeigt, um einen neuen Merge Request zu erstellen.
Fürs Erste arbeiten wir mit Docker und Docker-Compose im lokalen Kontext.
Später für das Deployment werden noch Kubernetes Integrationen benötigt.
Vorerst können diese aber vernachlässigt werden.
Wenn NodeJS verwendet wird, verwenden wir auch immer TypeScript, daher sollte das auch berücksichtigt werden.
Für die einfache Generierung eines Barebone Projekts können wir die Project Base verwenden. Hierbei handelt es sich um ein Yeoman CLI Tool zum erstellen von Projekten.
https://gitlab.mittwald.it/coab-0x7e7/tools/project-base
Das Frontend kann mit einem beliebigen Framework gemacht werden, da es nicht in das Nexus (Mitarbeiter Oberfläche) oder den Stream (Kunden Oberfläche) integriert werden muss. Wäre das der Fall, muss React verwendet werden und auch dafür ist die https://gitlab.mittwald.it/coab-0x7e7/tools/project-base zum Generieren eines Grundgerüsts zu empfehlen.
Wenn ein anderes Component Framework verwendet werden soll, kann man ein eigenes Projekt erstellen.
## Ziel des Projekts
MVP:
Ein Tool soll entworfen werden, in dem man einfach Einarbeitungs/Lernaufgaben erstellen kann. Für diese soll eine ungefähre Zeitschätzung definiert werden können und sie sollen kategorisiert (vorschlag Tags) werden können in die einzelnen Fähigkeiten und Technologien, die diese vermitteln sollen.
Aufgaben sollten auch in eine Schwierigkeitsgruppe eingeteilt werden können.
Zur einfachen Erstellung der Aufgaben würde ich dringend eine einfache aber mächtige Dokumentationssyntax empfehlen wie Markdown
Optional:
Stories: Eine Gruppe von kleineren Aufgaben, die ein großes und ganzes Abbilden.
Aktive Aufgaben: Nutzer können Aufgaben starten und andere Nutzer können eine Beurteilung des Ergebnisses sowie die benötigte Zeit angeben (zur Verbesserung der Zeitschätzung)
## Komponenten
- Fähigkeit
- Anforderungen
- Ziel
- Nutzer
- Name
- Status (Facharbeiter, Azubi, Neuling, Senior, ...)
- Fähigkeiten
- erledigte Aufgaben
- Story
- Tags
- Beschreibung
- Aufgaben
- Aufgabe
- Sprachen / Technologien (Tags)
- Schwierigkeitsgrad
- Bewertung der Aufgabe selbst
- Fähigkeiten (Was wird verbessert?)
- Ziel
- Zeiteinschätzung (approximierend)
- Aufgabenstellung (Markdown)
- Aufgabeninstanz (Abgabe)
- Aufgabe
- Bearbeiter
- Kontrolleur
- Benötigte Zeit
- Qualität der Lösung (evtl nach Kategorie)
- Kommentar