# SEP Projekt: Vorprojekt "Love Letters"
## Tech stack
- IDE: IntelliJ
- Git Client: Github Desktop
- Issue tracking: Gitlab
- Kommunikation: Gitlab (async), Discord (sync), WhatsApp
## Road map
- Lokale Version von u01 läuft
- Erfolgreiche TCP Kommunikation
- u01 abgeschlossen
## Next steps
- IDE installieren
- Github Kenntnisse vertiefen (merge, reset)
- Love Letters: Regeln verstehen
- Zu Javadocs und ihre Verwendung in IntelliJ recherchieren
- Zu unit tests in IntelliJ recherchieren
## Treffen am 8.11.
- Alle über Fortschritte unterrichten
- Merge request für den ersten Code erstellen, reviewen und annehmen
- Sonstige Fortschritte besprechen
- Nächste Schritte planen
- Entwicklungsumgebung bei allen konfigurieren
## Struktur
1. Schritt:
- Klasse für Server (aber lokal)
- Server kann input über command line erhalten
- Server kann output über command line drucken
- Server führt Liste mit Namen
- Man kann sich über die command line "anmelden", server überprüft, ob der eigene Nutzername schon vergeben ist
- Server sendet nach Anmeldung Willkommensnachricht
- Server sendet Fehlermeldung, falls der Name schon vergeben ist
2. Klasse für Client
- Es gibt eine extra Klasse "Client", die den Input vom Nutzer bekommt und direkt an den Server weiterreicht, der Output vom server wird an den Client gereicht und von dort dem Nutzer angezeigt
3. Multi-Clients
- Server kann inputs von mehreren Clients bekommen
- Server verwaltet die Sessions (=namensliste)
- Server sendet Message an andere Clients, wenn sich ein neuer Client einloggt
- Mit "bye" kann sich ein Client ausloggen
4. Multithreading
- Brauchen wir das?
6. Serialisierung
- Client serialisiert Input via JSON, bevor er es an den Server weiterreicht
- Server kann JSON entserialisieren und behandelt den enthaltenen Input genau so, als ob er direkt auf der command line des Servers eingegeben worden wäre
- Evtl. clientseitige Inputüberprüfung? (Nur recherchieren...) (ABER: Welches pattern für Input-Überprüfung? MVC oder MVVM?)
7. TCP Kommunikation zwischen Client und Server
- Client und Server können per TCP kommunizieren und JSON-files austauschen