Zum Inhalt springen

Projektauftrag

Im zweiten Teil des Moduls baust du eine eigene Single Page Application. Die Idee wählst du selbst und das Framework auch. Wie das Projekt in die Modulnote eingeht, steht unter Leistungsbeurteilung.

Das Projekt ist eine Einzelarbeit. Zu zweit könnt ihr nach Absprache mit eurer Lehrperson arbeiten, dann muss das Projekt grösser sein. Du darfst Vue, React, Angular, Svelte oder ein anderes Framework verwenden, solange eine SPA mit clientseitigem Routing entsteht. Bewertet wird das Frontend. Ein eigenes Backend bringt Bonuspunkte, ist aber keine Pflicht. Daten darfst du auch von einer öffentlichen API holen oder mit einem Mock im Browser simulieren.

KI-Werkzeuge sind erlaubt, auch beim Programmieren. Du hältst im README fest, wofür du sie eingesetzt hast, und im Screencast zeigst du, dass du deinen Code verstehst. Bewertet wird deshalb vor allem, was du an deinem eigenen Projekt zeigen und erklären kannst.

Die Idee muss eigenständig sein. Eine nachgebaute Tutorial-App wie eine reine ToDo-Liste gibt deine Lehrperson nicht frei.

AnforderungEinzelarbeitZweierteam
User Stories mit Akzeptanzkriterien58
Routen, davon eine dynamische, dazu eine Seite für unbekannte Adressen und ein Guard46
eigene Komponenten, davon zwei mehrfach verwendet, mit Props und Events und mindestens einmal Slots oder Vergleichbarem610
globaler Zustand für einen sinnvollen Bereich oder ein begründeter Verzicht als Architekturentscheidjaja
Daten von einer API mit Lade-, Fehler- und Leerzustandjaja
Formulare mit Validierung12
automatisierte Tests36
Darstellung auf Handy und Desktop, Grundregeln der Barrierefreiheit, öffentliches Deployment, READMEjaja
erweiterte Anforderung, zum Beispiel Rollen, Offline-Betrieb, End-to-End-Tests oder mehrere Sprachen1
  1. Du schreibst die Projektskizze als erste Fassung deines README. Sie beschreibt Idee und Zielgruppe, die User Stories mit Akzeptanzkriterien, Wireframes der wichtigsten Ansichten, den Komponentenbaum, die Routen, das Konzept für den Zustand, die Datenquelle und deine Wahl des Frameworks mit Begründung.
  2. Deine Lehrperson gibt die Skizze frei oder verlangt Anpassungen. Die Skizze hat keine eigenen Punkte, ohne Freigabe beginnt die Umsetzung aber nicht.
  3. Du setzt das Projekt um und committest regelmässig. Das README wächst mit, und du hältst wichtige Entscheide fest, sobald du sie triffst.
  4. Du gibst ab, was die Lehrperson zu den genannten Terminen verlangt. Dazu gehören der Code mit dem Tag v1.0, das README, der Link zum veröffentlichten Produkt und der Screencast.

Termine, Abgabekanal und die Regeln bei Verspätungen nennt dir deine Lehrperson.

Das README ist die Dokumentation deines Projekts. Es enthält diese Teile:

  1. eine kurze Beschreibung des Projekts und seiner Zielgruppe
  2. die User Stories mit Akzeptanzkriterien und ihrem Stand, erfüllt, teilweise erfüllt oder offen, mit einer Begründung bei Abweichungen
  3. die Architektur mit Komponentenbaum, Routen, Konzept für den Zustand und Datenfluss
  4. wichtige Entscheide als kurze Architekturentscheide, jeweils mit Kontext, Entscheid und Folgen
  5. die Anleitung für Installation, Start, Tests und Deployment, mit einer Datei .env.example, falls die App Umgebungsvariablen braucht
  6. die KI-Deklaration
  7. eine kurze Reflexion über das, was gut ging, was schwierig war und was du beim nächsten Projekt anders machen würdest

In der KI-Deklaration steht für jedes Werkzeug, wofür du es eingesetzt hast, welche Teile des Projekts betroffen sind und was du am Ergebnis geprüft oder geändert hast. Eine ehrliche Deklaration kostet keine Punkte.

Der Screencast dauert höchstens zehn Minuten, was darüber hinausgeht, wird nicht bewertet. Ton ist Pflicht, die Kamera freiwillig. Du darfst schneiden, der Code muss aber gut lesbar sein. Lade den Screencast nur über den Kanal hoch, den deine Lehrperson nennt, nie auf eine öffentliche Plattform.

Der Ablauf ist für alle gleich.

  1. Produkt, etwa zwei Minuten. Du spielst eine wichtige User Story im veröffentlichten Produkt durch.
  2. Weg durch den Code, etwa drei Minuten. Du verfolgst dieselbe User Story im Code, vom Klick in der Komponente über Props, Events, Store oder Composables bis zur API und zurück in die Anzeige.
  3. Die drei Fragen, etwa vier Minuten.
  4. Eine Stelle, an der ein Vorschlag einer KI falsch oder schwächer war als deine Lösung, und wie du das gemerkt hast, etwa eine Minute.

Die drei Fragen lauten:

  1. Zeig den Fehler, der dich am längsten aufgehalten hat. Wo lag er, wie hast du ihn gefunden, und mit welchem Commit hast du ihn behoben?
  2. Zeig eine Entscheidung, bei der du zwischen zwei Lösungen gewählt hast, zum Beispiel Store oder lokaler Zustand. Was wäre mit der anderen Lösung anders, und wo im Code sähe man das?
  3. Lass deine App einen Fehler der API erleben, etwa indem du die Anfrage in den DevTools des Browsers blockierst. Zeig, was die Benutzerinnen und Benutzer dann sehen und welcher Code dafür sorgt.

Antworten zählen nur, wenn sie sich auf deinen Code beziehen und du die Stellen zeigst. Allgemeine Erklärungen, die zu jedem Projekt passen würden, geben keine Punkte.

BereichPunkte
Screencast35
Code25
Produkt25
Dokumentation15
Bonusbis 10

Die Note berechnet sich linear aus den Punkten, Note = Punkte / 100 × 5 + 1. Mit dem Bonus kannst du fehlende Punkte ausgleichen, höher als 6 wird die Note nicht.

BereichKriteriumPunkteVoll erfüllt, wenn
ScreencastProdukt5die User Story läuft vollständig und verständlich im veröffentlichten Produkt
ScreencastWeg durch den Code10jeder Schritt vom Klick bis zur Anzeige an der richtigen Stelle im Code gezeigt und richtig erklärt ist
Screencastdrei Fragen15jede Frage mit Bezug zum eigenen Code und mit den passenden Stellen beantwortet ist, je 5 Punkte
ScreencastKI-Stelle5die Stelle konkret ist und klar wird, wie der Fehler aufgefallen ist
CodeKomponenten5die Komponenten sinnvoll geschnitten sind und über Props, Events und Slots zusammenarbeiten
CodeRouting5alle Routen funktionieren, auch beim direkten Aufruf einer Adresse, mit dynamischer Route, Seite für unbekannte Adressen und Guard
CodeZustand und Daten5lokaler und globaler Zustand sinnvoll getrennt sind und Lade-, Fehler- und Leerzustände sauber behandelt werden
CodeQualität und Tests5ein Linter eingerichtet ist, Namen und Struktur verständlich sind, die Tests laufen und kein Secret im Code steht
CodeGit-Verlauf5regelmässig über die ganze Projektdauer committet wurde, mit Nachrichten, die sagen, was sich geändert hat
ProduktFunktionalität15alle User Stories ihre Akzeptanzkriterien erfüllen
ProduktOberfläche5die App auf Handy und Desktop gut bedienbar ist und die Grundregeln der Barrierefreiheit einhält
ProduktBetrieb5die veröffentlichte App läuft und sich nach dem README ohne Rückfragen lokal starten lässt
DokumentationBeschreibung und User Stories4jede User Story mit ihrem Stand aufgeführt und jede Abweichung begründet ist
DokumentationArchitektur und Entscheide5Komponentenbaum, Routen, Zustand und Datenfluss beschrieben und die wichtigen Entscheide festgehalten sind
DokumentationKI-Deklaration3für jedes Werkzeug Zweck, betroffene Teile und eigene Prüfung genannt sind
DokumentationReflexion3die Reflexion konkrete Erfahrungen aus dem Projekt nennt

Bonuspunkte gibt es für ein eigenes Backend (4), eine Authentifizierung (2), eine CI/CD-Pipeline (1), End-to-End-Tests (1), durchgehend TypeScript (1) und eine PWA mit Offline-Betrieb (1).

Ihr gebt Dokumentation, Code und Produkt gemeinsam ab, und die Punkte dafür gelten für beide. Im README steht, wer für welche User Stories verantwortlich ist. Ihr nehmt einen gemeinsamen Screencast von 15 bis 20 Minuten auf, in dem beide etwa gleich lang sprechen. Jede Person beantwortet die drei Fragen aus ihrer eigenen Arbeit, und die Punkte für den Screencast bekommt jede Person für ihren eigenen Teil.

Texte und Abbildungen stehen unter CC BY-SA 4.0, der Code unter der MIT-Lizenz und die Daten des Kurses unter CC0 1.0. Die Schrift der Abbildungen ist Kalam unter der SIL Open Font License 1.1. Die Quellen liegen auf GitHub.