|
1 |
| -# Frontend-Entwicklungsprojekt mit JavaScript - Abgabe |
| 1 | +# Abgabe Frontend-Entwicklungsprojekt mit JavaScript |
2 | 2 |
|
3 | 3 | ## Wähle deine Sprache
|
4 | 4 |
|
5 | 5 | - 🇺🇸 [Englisch](README.md)
|
6 | 6 | - 🇪🇸 [Spanisch](README.es.md)
|
7 | 7 |
|
8 |
| -## Behandelte Themen |
| 8 | +<!-- ------------------------------------------------------------------------------------------- --> |
| 9 | +## Projektziel |
| 10 | + |
| 11 | +Zur Übung und Demonstration des im Online-Unterricht erworbenen Wissens besteht dieses Projekt darin, eine Webanwendung ähnlich wie Wallapop zu entwickeln. Die Verwendung von JavaScript-Bibliotheken oder -Frameworks ist nicht erlaubt, allerdings dürfen externe CSS-Utilities verwendet werden. |
| 12 | +Zusätzlich muss eine `db.json`-Datei für das Backend bereitgestellt werden, die die notwendigen Beispieldaten für die Korrektur enthält. |
| 13 | + |
| 14 | +<!-- ------------------------------------------------------------------------------------------- --> |
| 15 | +## Erlerntes und Angewandtes Wissen |
9 | 16 |
|
10 | 17 | - Grundlegende Funktionsweise eines Browsers.
|
11 | 18 | - Browser Object Model (BOM):
|
12 | 19 | - Navigation
|
13 | 20 | - Location
|
14 | 21 | - Window
|
15 | 22 | - Document Object Model (DOM), seine Knoten und Elemente.
|
16 |
| -- Auswahl von Knoten. |
| 23 | +- Auswahl von DOM-Knoten. |
17 | 24 | - Erstellen und Entfernen von DOM-Elementen.
|
18 |
| -- Bearbeiten von DOM-Attributen sowie deren Styles und CSS-Klassen. |
19 |
| -- Umgang mit DOM-Ereignissen. |
| 25 | +- Manipulation von Attributen, Stilen und CSS-Klassen im DOM. |
| 26 | +- Umgang mit DOM-Events. |
20 | 27 | - Standardverhalten von HTML-Komponenten.
|
21 |
| -- *Event Bubbling* und *Capturing*. |
22 |
| -- Promises und ihre Zustände: *pending*, *fulfilled* und *rejected*. |
| 28 | +- Event-Bubbling und Capturing. |
| 29 | +- Promises und ihre Zustände: *pending*, *fulfilled*, *rejected*. |
23 | 30 | - HTTP-Anfragen mit `fetch`.
|
24 | 31 | - `localStorage` und `sessionStorage`.
|
25 | 32 | - Lokale Datenspeicherung in HTML5: Cookies, Storage und IndexedDB.
|
26 | 33 |
|
27 |
| -## Projektbeschreibung |
28 |
| - |
29 |
| -Ziel dieses Projekts ist es, das im virtuellen Unterricht erworbene Wissen zu üben und zu demonstrieren. Es soll eine Webanwendung entwickelt werden, die ähnlich wie Wallapop funktioniert. Die Verwendung von JavaScript-Bibliotheken oder -Frameworks ist nicht erlaubt, jedoch dürfen externe CSS-Utilities genutzt werden. |
30 |
| -Zusätzlich muss eine Datei `db.json` bereitgestellt werden, die Beispieldaten für die Korrektur enthält. |
31 |
| - |
32 |
| -### 1. Beitrag-Übersicht |
33 |
| - |
34 |
| -- Jeder Beitrag soll ein Bild (falls vorhanden), einen Namen, eine Beschreibung, einen Preis und die Angabe "Kauf" oder "Verkauf" anzeigen. |
35 |
| -- Die Beiträge sollen über einen API-Endpunkt abgerufen werden. |
36 |
| -- Die Benutzeroberfläche muss alle Zustände verwalten: |
| 34 | +<!-- ------------------------------------------------------------------------------------------- --> |
| 35 | +## Projektdetails |
37 | 36 |
|
38 |
| - - **Leer** (keine Beiträge vorhanden). |
39 |
| - - **Fehler** (beim Laden der Beiträge). |
40 |
| - - **Ladevorgang** (während des Ladens). |
41 |
| - - **Erfolg** (Beiträge wurden erfolgreich geladen). |
| 37 | +### 1. Post-Übersicht |
42 | 38 |
|
43 |
| -- Beim Klicken auf einen Beitrag gelangt man zur Detailansicht. |
44 |
| -- Wenn der Benutzer angemeldet ist, soll ein Button zur Beitragserstellung angezeigt werden. |
| 39 | +- Jeder Post soll ein Bild (falls vorhanden), Name, Beschreibung, Preis und ob es sich um Kauf oder Verkauf handelt anzeigen. |
| 40 | +- Die Posts müssen über einen *Endpoint* geladen werden. |
| 41 | +- Die Übersichtsseite muss alle UI-Zustände handhaben: |
| 42 | + - **Leer** (keine Posts vorhanden). |
| 43 | + - **Fehler** (beim Laden der Posts). |
| 44 | + - **Ladevorgang** (während die Posts geladen werden). |
| 45 | + - **Erfolg** (Posts erfolgreich geladen). |
| 46 | +- Beim Klicken auf einen Post soll die Detailseite geöffnet werden. |
| 47 | +- Wenn der Benutzer eingeloggt ist, soll ein Button zum Erstellen neuer Posts angezeigt werden. |
45 | 48 |
|
46 |
| -### 2. Beitrags-Details |
| 49 | +### 2. Post-Detailansicht |
47 | 50 |
|
48 |
| -- Es sollen Bild (falls vorhanden), Name, Beschreibung, Preis und Kauf/Verkauf angezeigt werden. |
49 |
| -- Die Benutzeroberfläche muss alle Zustände verwalten: |
50 |
| - |
51 |
| - - **Leer** (Beitrag existiert nicht). |
| 51 | +- Zeigt Bild (falls vorhanden), Name, Beschreibung, Preis und ob Kauf oder Verkauf. |
| 52 | +- Muss alle UI-Zustände behandeln: |
| 53 | + - **Leer** (Post existiert nicht). |
52 | 54 | - **Fehler** (beim Laden der Daten).
|
53 |
| - - **Ladevorgang** (während des Ladens). |
54 |
| - - **Erfolg** (Informationen wurden erfolgreich geladen). |
| 55 | + - **Ladevorgang** (während Daten geladen werden). |
| 56 | + - **Erfolg** (Daten erfolgreich geladen). |
| 57 | +- Wenn der Benutzer angemeldet ist und der Besitzer des Posts ist, soll ein Lösch-Button mit Bestätigung angezeigt werden. |
| 58 | + |
| 59 | +### 3. Erstellung eines Posts |
| 60 | + |
| 61 | +- Muss ein Formular mit folgenden Feldern enthalten: |
| 62 | + - **Foto** (optional). |
| 63 | + - **Name** (Pflichtfeld). |
| 64 | + - **Beschreibung** (Pflichtfeld). |
| 65 | + - **Preis** (Pflichtfeld). |
| 66 | + - **Kauf/Verkauf** (Pflichtfeld). |
| 67 | +- Beim Absenden des Formulars wird ein Request an das Backend gesendet, um den Post zu speichern. |
| 68 | +- Die UI-Zustände müssen behandelt werden: |
| 69 | + - **Fehler** (beim Speichern). |
| 70 | + - **Ladevorgang** (beim Speichern). |
| 71 | + - **Erfolg** (Post erfolgreich gespeichert). |
| 72 | +- Nur eingeloggte Benutzer haben Zugriff auf diese Seite. Andernfalls erfolgt eine Weiterleitung zur Übersicht mit Hinweis. |
| 73 | + |
| 74 | +### 4. Login |
55 | 75 |
|
56 |
| -- Ist der Benutzer authentifiziert und Eigentümer des Beitrags, soll ein Löschbutton mit Bestätigung angezeigt werden. |
| 76 | +- Zeigt ein Formular mit Benutzername und Passwort. |
| 77 | +- Beim Absenden wird der Benutzer über das Backend authentifiziert und ein JWT-Token empfangen. |
| 78 | +- UI-Zustände: Laden, Fehler, Erfolg. |
57 | 79 |
|
58 |
| -### 3. Beitrag erstellen |
| 80 | +### 5. Registrierung |
59 | 81 |
|
60 |
| -- Ein Formular mit folgenden Feldern muss vorhanden sein: |
61 |
| - - **Foto** (optional) |
62 |
| - - **Name** (Pflichtfeld) |
63 |
| - - **Beschreibung** (Pflichtfeld) |
64 |
| - - **Preis** (Pflichtfeld) |
65 |
| - - **Kauf/Verkauf** (Pflichtfeld) |
| 82 | +- Ähnlich wie die Login-Seite. |
| 83 | +- Registriert den Benutzer im Backend. |
| 84 | +- UI-Zustände: Laden, Fehler, Erfolg. |
66 | 85 |
|
67 |
| -- Beim Absenden soll der Beitrag über eine API-Anfrage im Backend gespeichert werden. |
68 |
| -- Die Benutzeroberfläche muss folgende Zustände behandeln: |
| 86 | +### 6. Optionale Ziele |
69 | 87 |
|
70 |
| - - **Fehler** (beim Speichern). |
71 |
| - - **Ladevorgang** (während des Speicherns). |
72 |
| - - **Erfolg** (Beitrag wurde erfolgreich gespeichert). |
| 88 | +- Paginierung der Posts in der Übersicht (API liefert standardmäßig nur 10). |
| 89 | +- Post-Suchfunktion. |
| 90 | +- Bearbeitung von Posts (nur wenn Benutzer Eigentümer ist). |
| 91 | +- Filterung nach statischen *Tags*. |
| 92 | +- Dynamische *Tags* ermöglichen. |
73 | 93 |
|
74 |
| -- Diese Seite ist nur für angemeldete Benutzer zugänglich. Andernfalls wird man zur Übersicht umgeleitet und informiert. |
| 94 | +<!-- ------------------------------------------------------------------------------------------- --> |
| 95 | +## Verwendete Technologien |
75 | 96 |
|
76 |
| -### 4. Login |
| 97 | +### Sprachen |
77 | 98 |
|
78 |
| -- Es soll ein Formular mit Benutzername und Passwort angezeigt werden. |
79 |
| -- Beim Absenden soll der Benutzer über das Backend authentifiziert werden und ein JWT-Token erhalten. |
80 |
| -- Die Zustände „Laden“, „Fehler“ und „Erfolg“ müssen verwaltet werden. |
| 99 | +- **HTML**: Strukturierung des Inhalts und Aufbau der Seitenstruktur. |
| 100 | +- **CSS**: Design und visuelle Gestaltung der Seite für ein ansprechendes Nutzererlebnis. |
| 101 | +- **JavaScript**: Interaktivität und dynamische Funktionalitäten wie Formularvalidierung, Animationen und Event-Handling. |
81 | 102 |
|
82 |
| -### 5. Registrierung |
| 103 | +### Abhängigkeiten |
83 | 104 |
|
84 |
| -- Ähnlich wie der Login-Bildschirm. |
85 |
| -- Der Benutzer soll über das Backend registriert werden. |
86 |
| -- Die Zustände „Laden“, „Fehler“ und „Erfolg“ müssen verwaltet werden. |
| 105 | +Keine |
87 | 106 |
|
88 |
| -## Optional |
| 107 | +<!-- ------------------------------------------------------------------------------------------- --> |
| 108 | +## Installations- und Nutzungshinweise |
89 | 109 |
|
90 |
| -- Paginierung der Beiträge in der Übersicht (API liefert standardmäßig nur 10). |
91 |
| -- Suchfunktion für Beiträge. |
92 |
| -- Bearbeitung von Beiträgen (nur durch den Eigentümer). |
93 |
| -- Filterung nach statischen Tags. |
94 |
| -- Dynamische Tags implementieren. |
| 110 | +### Softwareanforderungen |
95 | 111 |
|
96 |
| -## REST-API zur Projektunterstützung |
| 112 | +- **[Git](https://git-scm.com/downloads)** (getestet mit Version **2.47.1.windows.1**) |
| 113 | +- **[Visual Studio Code](https://code.visualstudio.com/)** (getestet mit Version **1.99.0**) |
| 114 | +- **[Sparrest (REST-API)](https://github.com/kasappeal/sparrest.js)** (entwickelt von **Alberto Casero** – **KeepCoding**) |
| 115 | +- **Live Server** (VS Code Add-on, *optional*) |
97 | 116 |
|
98 |
| -Zur Simulation einer Datenbank wird **sparrest.js** verwendet — eine vom Dozenten Alberto Casero (KeepCoding) erstellte REST-API, basierend auf `json-server`. |
| 117 | +### Repository-Klonen |
99 | 118 |
|
100 |
| -### Repository klonen |
| 119 | +API REST Sparrest |
101 | 120 |
|
102 | 121 | ```bash
|
103 | 122 | git clone https://github.com/kasappeal/sparrest.js.git
|
104 | 123 | ```
|
105 | 124 |
|
| 125 | +Projekt |
| 126 | + |
106 | 127 | ```bash
|
107 |
| -git clone https://github.com/PabloSch26/keepcoding-frontend-javascript-submission-5.git |
| 128 | +git clone https://github.com/PabloSch26/keepcoding-05-frontend-javascript.git |
108 | 129 | ```
|
109 | 130 |
|
110 | 131 | 
|
111 | 132 |
|
112 |
| -Dies startet den Server und stellt die REST-API bereit, sodass du mit der simulierten Datenbank interagieren kannst. |
| 133 | +### Schritte zur Nutzung des Projekts |
113 | 134 |
|
114 |
| -## Verwendete Technologien |
| 135 | +Der Server muss gestartet werden, um die REST-API zu aktivieren und mit der simulierten Datenbank zu interagieren. |
115 | 136 |
|
116 |
| -- **HTML**: Für die Strukturierung der Inhalte und des Seitenlayouts. |
117 |
| -- **CSS**: Für das visuelle Design und die Benutzeroberfläche, um ein konsistentes und attraktives Nutzererlebnis zu bieten. |
118 |
| -- **JavaScript**: Für die Hinzufügung von Interaktivität und dynamischen Funktionen auf der Webseite, wodurch die Benutzererfahrung mit Funktionen wie Formularvalidierung, Animationen und Ereignisbehandlung verbessert wird. |
| 137 | +1. Lade das Projekt als ZIP-Datei von GitHub herunter oder klone es mit SourceTree. |
| 138 | +2. Füge es in Visual Studio Code zu deinem Workspace hinzu. |
| 139 | +3. Nachdem du Sparrest heruntergeladen hast, installiere die Abhängigkeiten. Ersetze dann die generierte `db.json` durch die Datei aus diesem Projekt. |
119 | 140 |
|
120 |
| -## Installations- und Nutzungshinweise |
121 |
| - |
122 |
| -### Softwareanforderungen |
123 |
| - |
124 |
| -- **Visual Studio Code** (getestet mit Version 1.99.0) |
125 |
| -- **Live Server** (VS Code-Erweiterung, optional) |
126 |
| - |
127 |
| -### Programmbeschreibung |
128 |
| - |
129 |
| -- **Visual Studio Code**: Integrierte Entwicklungsumgebung (IDE) zur Projektausführung. Achte darauf, Version 1.99.0 zu verwenden, um Kompatibilitätsprobleme zu vermeiden. |
130 |
| -- **Live Server**: Erweiterung für VS Code, die eine lokale HTML-Vorschau im Browser mit Live-Reload ermöglicht. |
131 |
| - |
132 |
| -### Schritte zur Verwendung des Projekts |
133 |
| - |
134 |
| -1. Lade die Projektdateien als ZIP von GitHub herunter oder klone das Repository mit SourceTree. |
135 |
| - |
136 |
| -2. Öffne das Projekt anschließend in deinem Arbeitsbereich in Visual Studio Code. |
| 141 | +Zum Starten der Datenbank führe folgenden Befehl im Sparrest-Verzeichnis aus: |
137 | 142 |
|
138 |
| -3. Nach dem Herunterladen von Sparrest aktualisiere die Abhängigkeiten. Um die in diesem Projekt verwendete Datenbank zu nutzen, kopiere die Datei `db.json` aus dem Projektordner und ersetze die automatisch generierte Datei in Sparrest. |
139 |
| - |
140 |
| -Starte die Datenbank mit folgendem Befehl im Sparrest-Verzeichnis: |
141 |
| - |
142 |
| -```bash |
143 | 143 | npm start
|
144 |
| -``` |
145 | 144 |
|
146 | 145 | ### Hinweise
|
147 | 146 |
|
148 |
| -- Die Datei `db.json` enthält drei Benutzerkonten und 14 Beiträge. Folgende Zugangsdaten können verwendet werden, um sich anzumelden und bestehende Beiträge zu bearbeiten: |
| 147 | +- Die Datei `db.json` enthält drei Benutzerkonten und 14 Posts. Hier sind die Zugangsdaten, um sich anzumelden und vorhandene Posts zu bearbeiten: |
149 | 148 |
|
150 | 149 | - [pablsch.it@gmail.com](mailto:pablsch.it@gmail.com) / Passwort: 123456
|
151 | 150 | - [Pedro.it@gmail.com](mailto:Pedro.it@gmail.com) / Passwort: 123456
|
152 | 151 | - [jose.JJ@gmail.com](mailto:jose.JJ@gmail.com) / Passwort: 123456
|
153 | 152 |
|
154 |
| -## Keine Beiträge oder Lizenzen |
155 |
| - |
156 |
| -Dieses Projekt hat derzeit keine externen Beiträge oder eine Lizenz. |
157 |
| - |
| 153 | +<!-- ------------------------------------------------------------------------------------------- --> |
158 | 154 | ## Projektvorschau
|
159 | 155 |
|
160 |
| -### Home |
| 156 | +### Startseite |
161 | 157 |
|
162 | 158 | 
|
163 | 159 |
|
164 |
| -### Home Mobile |
| 160 | +### Startseite Mobil |
165 | 161 |
|
166 | 162 | 
|
167 | 163 |
|
168 |
| -### Create Post |
| 164 | +### Post erstellen |
169 | 165 |
|
170 | 166 | 
|
171 | 167 |
|
172 |
| -### Post Detail |
| 168 | +### Post-Detail |
173 | 169 |
|
174 | 170 | 
|
175 | 171 |
|
176 |
| -### Edit Post |
| 172 | +### Post bearbeiten |
177 | 173 |
|
178 | 174 | 
|
| 175 | + |
| 176 | +<!-- ------------------------------------------------------------------------------------------- --> |
| 177 | +## Beiträge und Lizenz |
| 178 | + |
| 179 | +Dieses Projekt enthält keine externen Beiträge und steht unter keiner Lizenz. |
0 commit comments