Stefan Franke · Daniel Schiffner

Entwicklung interaktiver Softwareanwendungen

SoSe 2026

PH Weingarten

Übersicht

  • Wiederholung (was war vor 14 Tagen...)
  • Basics & Begriffe von Serveranwendungen
  • WarmUp: AI Tandem Lab
  • Übung: Website-Projekt
  • Versionsverwaltung mit Git
  • Dynamik durch JavaScript
    • DOM-Manipulation

Wiederholung: Was war vor 14 Tagen?

  • Einführung in Terminal & Kommandozeile
  • Anlegen einer eigenen Verzeichnisstruktur (EIS26)
  • Erstellung eines SSH-Schlüsselpaares (Public / Private Key)
  • Verbindung zum Server via SSH (Port 2222)
    Nur über das eigene WLAN mbm möglich – nicht über eduroam, da Port 2222 dort blockiert ist.
  • Aufbau einer eigenen einfachen Landing Page (HTML, CSS)
  • Erste eigene Dateien auf dem Server im Verzeichnis /home/isa##/public_html
  • Verständnis der Serververbindung, Ordnerstrukturen und Dateibearbeitung mit nano

Rückblick & Herausforderungen

  • Keine SSH-Verbindung möglich:
    → Ursache: AllowUsers in /etc/ssh/sshd_config war nicht für neue Benutzer angepasst.
  • Instabile WLAN-Verbindung:
    → Der mobile Router (Vodafone SIM) hatte Verbindungsabbrüche – ggf. Standort optimieren oder alternative SIM prüfen.

Was hat gut geklappt? Wo gab es weitere Schwierigkeiten?

Wie kamen Sie mit dem Tutorial zurecht? War es verständlich, zu einfach oder zu komplex?

Basics & Begriffe von Serveranwendungen

Zentrale Begriffe aus Sitzung 1

  • Terminal
  • PowerShell
  • Verzeichnisstruktur
  • cd, ls, pwd
  • mkdir, cp, mv, rm
  • nano
  • SSH
  • Public / Private Key
  • scp
  • IP-Adresse
  • Port (2222)
  • URL
  • HTML / CSS / JavaScript
  • Landing Page
  • Ubuntu Server
  • Webserver
  • NGINX
  • SSL / HTTPS
  • Routing
Begriffe im Zusammenhang – Webserver

Begriffe im Überblick (kompakt erklärt)

  • Terminal: Kommandozeilenprogramm unter macOS/Linux zur Eingabe von Befehlen.
  • PowerShell: Windows-Äquivalent zum Terminal, mit eigener Syntax und Erweiterungen.
  • Verzeichnisstruktur: Aufbau von Ordnern und Unterordnern auf einem System.
  • cd, ls, pwd: Navigation (cd), Anzeige von Inhalten (ls), aktueller Pfad (pwd).
  • mkdir, cp, mv, rm: Ordner erstellen, Dateien kopieren, verschieben, löschen.
  • nano: Einfacher Texteditor in der Kommandozeile (z. B. für HTML-Dateien).
  • SSH: Sicheres Protokoll zur Verbindung mit einem Server über das Netzwerk.
  • Public / Private Key: Schlüsselpaar für sichere Authentifizierung ohne Passwort.
  • scp: Befehl zum sicheren Kopieren von Dateien über SSH.
  • IP-Adresse: Eindeutige Netzwerkadresse eines Geräts (z. B. 89.58.62.146).
  • Port (2222): Spezieller Kommunikationskanal – wir nutzen Port 2222 für SSH.
  • URL: Adresse einer Webseite, z. B. https://isa17.edumake.de.
  • HTML / CSS / JavaScript: Struktur, Stil und Funktion einer Website.
  • Landing Page: Eigene Startseite auf dem Server im Ordner ~/public_html.
  • Ubuntu Server: Betriebssystem für Server – läuft auf unserem Testserver.
  • Webserver: Software, die Webseiten ausliefert (z. B. Apache oder NGINX).
  • NGINX: Leistungsstarker Webserver und Reverse Proxy.
  • SSL / HTTPS: Verschlüsselung für sichere Webseitenzugriffe.
  • Routing: Steuerung, welche URL auf welche Datei oder Funktion zeigt.

WarmUp: AI Tandem Lab

Terminal-Workflows mit KI analysieren

Arbeitsphase
10 min

Terminal-Verlauf mit KI-Tool analysieren

Tandemphase
10 min

Erkenntnisse austauschen

Ihr braucht: ein KI-Tool (ChatGPT, Claude, Gemini, ...)

Ablauf

2. Warteraum

Warten auf alle

3. Arbeitsphase

Terminal-Verlauf im KI-Tool analysieren & nachfragen

4. Tandemphase

Ergebnisse austauschen (5 min pro Person)

Timer läuft automatisch – immer im Blick behalten!

Heutige Session

franke-lab.de/ai-tandem-lab

Gruppe A
Datei hochladen & Server erkunden
$ scp notizen.txt isa5@edumake.de:~/
$ ssh isa5@edumake.de
$ ls ~/public_html
$ du -sh ~/public_html/*
$ grep -r "Willkommen" ~/...
$ find ~/public_html -name "*.html"
Gruppe B
Bild hochladen & Website ändern
$ scp foto.jpg isa5@edumake.de:~/...
$ ssh isa5@edumake.de
$ cp index.html index.html.bak
$ nano index.html
$ diff index.html.bak index.html
$ chmod 644 index.html
Aufgabe: Terminal-Verlauf ins KI-Tool geben → Was passiert hier? Erkläre jeden Befehl.

Jetzt beitreten!

franke-lab.de/ai-tandem-lab

EIS26_2_Zoom
Zoom-Teilnehmende
EIS@Zoom
EIS26_2_OnSite
Präsenz-Teilnehmende
EIS@OnSite

Übung: Website-Projekt

Projektstruktur – Best Practice


/home/isa##/public_html/
├── index.html              ← Startseite
├── kontakt.html            ← Kontaktformular
├── ueber_uns.html          ← Projektbeschreibung
├── eis_projekt.html        ← Teamprojektseite
├── css/                    ← Stylesheets
│   └── style.css
├── js/                     ← JavaScript-Dateien
│   └── script.js
├── img/                    ← Bilder, Logos, Icons
│   ├── gruppenbild.jpg
│   └── logo.svg
└── assets/                 ← Downloads (PDFs, ZIPs, etc.)
    └── projektinfo.pdf
				  

Trennung nach Dateitypen: erleichtert Wartung, Erweiterung und saubere Verlinkung im HTML.

Später: Umstrukturierung für Flask

Aufgabe 1: Website-Projekt – Zwischenstand

Alle Tandems haben die Grundstruktur bereits angelegt:

  • 5 HTML-Seiten vorhanden (index, kontakt, ueber_uns, eis_projekt, impressum)
  • Die meisten nutzen css/style.css und js/script.js korrekt

Was bei vielen noch fehlt:

  • Bilder & Fotogalerie – Ordner img/ mit Bildern anlegen, Galerie in einer Unterseite einbinden
  • PDF-Download – eine PDF-Datei in assets/ ablegen und verlinken
  • Dateistruktur aufräumen – einige haben Dateien am falschen Ort:
    • style.css und script.js gehören in css/ bzw. js/
    • .save-Dateien und Duplikate löschen
    • Keine HTML-Dateien im css/-Ordner!

Bringt euer Projekt auf den Stand der Best-Practice-Struktur (vorheriger Slide), bevor wir mit Git starten.

Versionsverwaltung mit Git

Problem 1: Versionierung

  • Kennt ihr das?
    • index.html
    • index_v2.html
    • index_v2_final.html
    • index_v2_final_WIRKLICH_FINAL.html
  • Was, wenn ihr eure index.html kaputt macht?
  • Wie kommt ihr zur letzten funktionierenden Version zurück?

Problem 2: Zusammenarbeit

  • Beide Partner ändern die gleiche Datei auf dem Server
  • Wer zuletzt speichert, überschreibt die Änderungen des anderen
  • Keine Möglichkeit zu sehen, was der Partner geändert hat
  • Keine Möglichkeit, Änderungen zusammenzuführen

Beide Probleme löst Git.

Was ist Git?

  • Ein Logbuch für euer Projekt
  • Git merkt sich jede Version eurer Dateien
  • Ihr könnt jederzeit zu einer früheren Version zurückspringen
  • Git erkennt Konflikte und hilft beim Zusammenführen

Wichtig: Git ≠ GitHub ≠ Forgejo
Git = das Werkzeug (lokal auf eurem Rechner)
Forgejo / GitHub = Online-Plattform zum Teilen von Git-Projekten

Drei Orte, ein Projekt

💻
Euer Laptop
Werkstatt

Dateien lokal bearbeiten

push →
← pull
🔒
Forgejo
Tresor

git.md-phw.de
Zentraler Speicher

pull →
← push
🌐
Server
Schaufenster

edumake.de
Website ist live

git clone – Erste Kopie vom Tresor holen

Die wichtigsten Befehle

git add DATEIDatei zum Versand vormerken (einpacken)
git commit -m "..."Paket zukleben und beschriften
git pushPaket an Forgejo abschicken
git pullNeueste Version abholen
git clone URLProjekt zum ersten Mal herunterladen
git statusWas hat sich geändert?

Der tägliche Workflow

  1. git pull – Neueste Version holen
  2. Dateien bearbeiten
  3. git add – Geänderte Dateien vormerken
  4. git commit -m "..." – Änderungen speichern
  5. git push – An Forgejo senden

Deployment: Auf dem Server per SSH einloggen und git pull ausführen – fertig!

Git installieren

Windows

  • Installer von git-scm.com herunterladen
  • Standardeinstellungen beibehalten
  • Git Bash wird mitinstalliert
  • Alternativ: PowerShell verwenden

macOS

  • Terminal öffnen
  • git --version eingeben
  • Xcode Command Line Tools werden automatisch angeboten
  • Installation bestätigen

Prüfen: git --version im Terminal / Git Bash

Forgejo – Projektplattform der PH

Forgejo Logo

git.md-phw.de

Was ist Forgejo?

  • Open-Source-Plattform zur Projektverwaltung
  • Wie GitHub – aber selbst gehostet an der PH
  • Alle Daten bleiben bei uns (Datenschutz!)
  • Nicht nur für Code – für alle Arten von Projekten
  • Registrierung mit PH-Mailadresse

Repositories – nicht nur Code

  • Beliebige Dateien ablegen und versionieren:
    • PDF-Dokumente, Berichte, Abschlussarbeiten
    • Messdaten, Tabellen, Forschungsdaten
    • Bilder, Präsentationen, Office-Dateien
    • Webseiten, Code, Skripte
  • Jede Änderung wird protokolliert – nichts geht verloren
  • Upload per Drag & Drop im Browser

Alles im Browser

  • Dateien hochladen – Drag & Drop, kein Terminal nötig
  • Dateien bearbeiten – Markdown, Text, HTML direkt online
  • Vorschau – Markdown wird formatiert angezeigt
  • Verlauf – Jede Änderung nachvollziehen und rückgängig machen
  • Download – Gesamtes Projekt als ZIP herunterladen

Für Fortgeschrittene: Git-Befehle im Terminal (push, pull, clone)

Wiki, Issues & Kanban

Wiki

  • Dokumentation pro Projekt
  • Markdown-basiert
  • Im Browser editierbar
  • Verlinkte Seiten

Issues & Kanban

  • Aufgaben erstellen
  • Labels & Meilensteine
  • Zuweisungen an Mitarbeiter
  • Kanban-Board (To Do → Done)

Organisationen & Teams

  • Organisation = Sammlung von Repositories (z. B. für einen Kurs)
  • Teams = Gruppen mit eigenen Berechtigungen
    • „Studierende“ – Schreibzugriff auf eigene Repos
    • „Betreuer“ – Admin-Zugriff auf alle Repos
  • Ideal für Seminare, Forschungsgruppen, Abteilungen

Beispiel: Organisation eis-sose26 mit je einem Repo pro Tandem

Showcase: projects.md-phw.de

  • git.md-phw.de – Projekte verwalten (intern)
  • projects.md-phw.de – Projekte präsentieren (extern)
  • Öffentliche Repos mit README.md und Coverbild erscheinen automatisch
  • Studierendenprojekte und Forschung sichtbar machen

Dynamik durch JavaScript

Was ist JavaScript?

  • Skriptsprache für Webseiten
  • Ermöglicht Dynamik und Interaktivität
  • Wird direkt im Browser ausgeführt
  • Arbeitet mit HTML und CSS zusammen

Warum JavaScript verwenden?

  • Elemente reagieren auf Nutzereingaben
  • Inhalte ohne Neuladen ändern
  • Formulare prüfen und steuern
  • Animationen und Effekte erzeugen

JavaScript, HTML und CSS

  • HTML: Struktur und Inhalte
  • CSS: Gestaltung und Layout
  • JavaScript: Steuerung und Dynamik
  • Zugriff und Veränderung über DOM (Document Object Model)
Statische vs. dynamische Webseiten

Bedeutung heute

  • Standard in der Webentwicklung
  • Grundlage für Frameworks (React, Vue, Angular)
  • Serverseitige Entwicklung mit Node.js möglich
  • Fast jede moderne Website nutzt JavaScript

Beliebtheit von JavaScript

Statista: Beliebteste Programmiersprachen weltweit

Aufgabe 2 – JavaScript Einstieg

  • 2.1 Erste eigene JavaScript-Skripte schreiben → z. B. einfache Berechnungen, Ausgabe von Text, Verwendung von Bedingungen und Funktionen
  • 2.2 Arbeiten mit dem DOM → Texte dynamisch einfügen, Inhalte verändern, Formulareingaben auslesen, auf Klicks reagieren
  • Ziel: JavaScript verstehen als Sprache, die Webseiten lebendig macht
  • HTML bleibt die Struktur, CSS sorgt für das Aussehen – JavaScript steuert das Verhalten
  • Fokus liegt auf dem Zusammenspiel von Code, Nutzerinteraktion und sichtbarer Veränderung im Browser

Aufgaben

  1. Arbeiten mit und auf dem Server
    Aufgabe 1: HTML wiederholen, Struktur anlegen & Inhalte ergänzen
  2. Versionsverwaltung mit Git
    Aufgabe 2: Git einrichten, versionieren & im Tandem arbeiten
    Optional: Forgejo-Projektplattform kennenlernen
  3. JavaScript Einstieg – Grundlagen verstehen
    Aufgabe 3.1: JS-Intro (Variablen, Funktionen, logisches Denken)
  4. DOM & Interaktivität auf der Website
    Aufgabe 3.2: JS-DOM (Text einfügen, auf Klick reagieren)