Skip to content

Commit abc0578

Browse files
EdenBernhardPrussianBaronNicoolausGalacticCodeGambitHellocrafting
authored
Projektabschluss (#207)
* Added Algorithm, which returns a sorted list of recipes of an matching Ingridients List * Added Filtering * Tests für Database, passwort überprüfung und email überürufung wurden geschrieben. Die dazugehörigen Abhängigkeiten in requirements.txt angepasst. Sie werden in test_main.py aufgerufen. Namens faktorisierung ist schwer bei den Klassennamen da bei tests der pycharm Debugger eher auf klassen mit test_ vorne guckt. Deswegen leider test_ * ci pipeline abhägigkeit mit rein gemacht * Feat bei Ci yml entfernt * Delete project/data/LazyCookDB.sqlite3 * Feature: Forgot Password link in signin modal. Popup for Email Input. Konto deletion reactivation. * Feat/ci cd add lint (#142) * Rename models.py to Models.py * Rename auth.py to Auth.py * Rename Routes.py to routes.py * Added Refactoring Summary * Refactor documentation for code naming conventions * Fix spelling errors in refactoring documentation Corrected spelling of 'Refaktorisierung' and 'Frontend'. * Delete project/data/LazyCookDB.sqlite3 * AI Agent md's changed * Passwort und Email Änderung zu Popups geändert. und neugeordnet untereinander * Update README.md to mark tasks as completed for account management features * Add CI/CD pipeline and Super Linter configuration * Test für lint * Test ci/cd lint.yml * Test ci/cd lint.yml * Test ci/cd lint.yml * Test ci/cd lint.yml regex Filter * Test ci/cd lint.yml * Test ci/cd lint.yml * Test ci/cd lint.yml regex Filter angepasst * Tests für Database, passwort überprüfung und email überürufung wurden geschrieben. Die dazugehörigen Abhängigkeiten in requirements.txt angepasst. Sie werden in test_main.py aufgerufen. Namens faktorisierung ist schwer bei den Klassennamen da bei tests der pycharm Debugger eher auf klassen mit test_ vorne guckt. Deswegen leider test_ * ci pipeline abhägigkeit mit rein gemacht * Feat bei Ci yml entfernt * Update FILTER_REGEX_INCLUDE pattern in lint.yml * Update lint.yml * Enable validation for the entire codebase * Update lint.yml * Update lint.yml * Enable validation for all codebase in lint workflow * Remove Python Black and Markdown validation * Update lint workflow to include additional validations * Update FILTER_REGEX_INCLUDE to support YAML files * Update lint.yml * Update lint.yml * Refactor CI configuration to use Docker Compose v2 syntax and add GitHub Super Linter step * Test ci.yml * Update ci.yml * Enable Flake8 validation for Python files * Test ci.yml * Remove 'feat/*' branch from push trigger in CI configuration * Python black gelöst --------- Co-authored-by: Samuel Goebel <goebelsamuel@gmail.com> Co-authored-by: Eden Tabea Bernhard <105359952+EdenBernhard@users.noreply.github.com> Co-authored-by: Nicoolaus <162422307+Nicoolaus@users.noreply.github.com> Co-authored-by: Hellocrafting <alexanderfgroer@gmail.com> Co-authored-by: nicla <niclas.matzke@gmail.com> Co-authored-by: Hellocrafting <75727565+Hellocrafting@users.noreply.github.com> * update super-linter to version 8.6.0 in CI configuration * Test Linter * Test Linter * Feature: Email and Password change popup width changed * Separate linter configuration into its own workflow file (#149) * Separate linter configuration into its own workflow file Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Update README.md to reflect linter workflow separation and installation instructions --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Update Node.js version in Dockerfile-frontend to 24.1.0 * Tested the recipe algorithim * Feature: Fix problem with refresh token and include show Password * Feature: forgot password functionality works with redirection to homepage * added SaveInDB Methods * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Fix: Copilot review suggestion * Fix: Copilot review suggestion * Fix: Copilot review suggestion * Fix: Copilot review suggestion * Feat: forgot password functionality (#151) * Feature: Forgot Password link in signin modal. Popup for Email Input. Konto deletion reactivation. * Feature: Email and Password change popup width changed * Feature: Fix problem with refresh token and include show Password * Feature: forgot password functionality works with redirection to homepage * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Fix: Copilot review suggestion * fix: make password visibility toggle keyboard focusable Agent-Logs-Url: https://github.com/GalacticCodeGambit/LazyCook/sessions/bf26f4ce-caa3-43fa-b940-13d7be23d7bf Co-authored-by: EdenBernhard <105359952+EdenBernhard@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> * Feat: show top 5 incredients as options (#152) * Feature: Forgot Password link in signin modal. Popup for Email Input. Konto deletion reactivation. * Feature: Email and Password change popup width changed * Feature: Fix problem with refresh token and include show Password * Feature: forgot password functionality works with redirection to homepage * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Fix: Copilot review suggestion * Fix: Copilot review suggestion * Fix: Copilot review suggestion * Fix: Copilot review suggestion * Feat: Ingredients suggestions. Top 5 most typed shown in popup * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Feat: Ingredients suggestions. Top 5 most typed shown in popup --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Black used * Info: Standort von Impressum und Datenschutz * Added Review-Protokoll-01 * Clear participant roles in review protocol Removed participant names from the review protocol. * Update participants and review focus in documentation * Made the required RecipeSUCUK changes * Rename RecipeSucuk.py to RecipeSUCUK.py * rezepteanzeige für die rezepte * Python Black Formatierung umgesetzt * Fix typo in findRecipes function parameter name * Add import statement for Database module in RecipeSUCUK.py * Upgrade actions/checkout from v4 to v5 in CI configuration files * Correct directory name in README and update email variable for clarity * Improve grammar and punctuation in README description * Refactor CSS class names for consistency and clarity (#171) * Refactor CSS class names for consistency and clarity * Refactor CSS variables for improved readability and consistency * Remove unnecessary stylelint directive for cleaner CSS * Refactor variable names for consistency in recipe filtering functions * Fix css * Upgrade CodeQL action versions from v3 to v4 in CI configuration * Pin npm dependencies to specific versions for stability and update versions (#174) * Pin npm dependencies to specific versions for stability * Remove duplicate npm dependencies for cleaner package management * Rezeptanzeige ohne match. * Rezeptanzeige mit match aber auf english * Fix: Kein Plan * Add SonarCloud badge to README Added SonarCloud badge to README for quality metrics. * defined most of the overall Structure in ImportRecipe * rezepteanzeige für die rezepte * Fix: Kein Plan * suchleiste und direkte rezeptanzeige * Docs: Updaten des Status der Risiken * finished the ImportRecipes method (json still need to be read) + Change RecipeSUCUK return value to only return 12 * Refactor: Update class names for consistency in popup components * Refactor: Update class and CSS class names for consistency in change password popup * normalized the json data and fclompeted Import Recipes.py (there may be some issues adding Ingridients to recipes) * recipes_perfect added to project * Restrict SonarCloud workflow to main branch only * Restrict SonarCloud analysis to 'main' branch only * suchleiste und direkte rezeptanzeige mit allen changes von projektabschluss * rezepteanzeige mit popup für zubereitung * Docs: Upload ERM Diagramm * Docs: Delete old ERM Diagramm * Docs: Delete old ERM Diagramm * Test: New Backend Test for Database.py * Fix: Delete old RecipeSUCUK.py * Tests: New Test for RecipeSucuk.py * Fix: Sonarqube Warning * Fix: Security Hotspots * Fix: Some refactoring * Update of our famed Class Diagram * Oh sorry mate, here comes the fabulous Class Diagram * Docs: Klassendiagramm hinzugefügt * Docs: Klassendiagramm hinzugefügt * Rename "RecipeSucuk.py" to "RecipeSUCUK.py" * Remove placeholder text from Impressum page * Update: Upgrade @types/react to version 19.2.16 and react-markdown to version 10.1.0 * Update: Add default JWT_SECRET_KEY for local development in compose.yaml and README * Docs: Update UML-Diagramme * Fix UML diagram link in SRS document Updated UML diagram link for registration activity. * Fix UML activity diagram link in SRS Updated UML activity diagram image link in SRS document. * Docs: Update UML-Diagramme * Fix UML diagram links in SRS Updated UML diagram links in the SRS document. * Fix grammar and clarify impact on recipe suggestions Corrected grammatical errors and clarified the impact of ingredient and person count on recipe suggestions. * Fix: compose.yml * Revise recipe display decision and limits Updated the decision rationale for recipe display options and clarified the maximum number of recipes to be shown. * Update non-functional requirements in SRS Added priority for core functions and architectural principles. * Remove local development fallback comments from compose.yaml * Refactor: Update Datenschutz and Review-Protokoll documentation for clarity and consistency * Add Testbericht documenting testing scope and strategy for LazyCook * Update Testbericht with detailed code coverage metrics for backend tests * Update recipe display and API endpoints * Enhance documentation with new user scenarios Added scenarios for user logout and recipe search by title, including UML diagrams. * Update responsibilities and deadlines in review document * Update CodeReafktorisierungZusammenfassungen.md * Docs: CI/CD-Übersicht * Add Projekt-Retrospektive.png * Add Names * Update architectural decision to use SRP instead of LSP Changed architectural decision from Liskov Substitution Principle (LSP) to Single Responsibility Principle (SRP) for better separation of concerns and maintainability. * Update design principles from LSP to SRP * Update non-functional requirements to reflect design principles * Fix RecipeSUCUK test module references * Update JWT secret key default value in compose.yaml * Added missing space * Refactor: Umstellen der Codebasis auf SRP * Refactor: Umstellen der Codebasis auf SRP * Refactor: Umstellen der Codebasis auf SRP * Refactor: Umstellen der Codebasis auf SRP * Refactor: Umstellen der Codebasis auf SRP * Refactor: Umstellen der Codebasis auf SRP * Added missing space * Rename screenshots * Rename screenshots * Lint Python Code * Added Star History * Add files via upload Bilder, die aus dem Projects für die Abschlusspräsi gemacht wurden * import of recipes should work fine, but why destroy our backend qwq? * Update ADR05.md * Update ADR05.md * Datenbank mit Rezepten adden * Update: Klassendiagramm * Update: Softwarearchitekturdokument.md an neue Backendstruktur angepasst * Update: Handout fertig & zusätzliche Dokumente * Update: Aufräumen * Update Handout_LazyCook.md * Fix * Update Handout_LazyCook.md * Update README.md * Linting Python Black * Fix * neue json datei eingebunden und neu gemacht * Change Name to "Lint Code Base" * Fix * Fix * Rename CodeReafktorisierungZusammenfassungen.md to CodeRefaktorisierungZusammenfassungen.md * Update README.md * Update README.md * Update README.md * Update README.md * CI/CD Fix hopefully * CI/CD Fix hopefully * CI/CD Fix hopefully * CI/CD Fix hopefully * CI/CD Fix hopefully * Update Pictures * CI/CD Fix hopefully * es fucking funktioniert alles: wuhuuuuuuu * Update README.md * Update Pictures * Anpassung Klassendiagramm * Linter Python Black * Anpassung Tests * SonarQube Full Metrics Report * SonarQube Full Metrics Report --------- Co-authored-by: Samuel Goebel <goebelsamuel@gmail.com> Co-authored-by: nicla <niclas.matzke@gmail.com> Co-authored-by: F <150372421+GalacticCodeGambit@users.noreply.github.com> Co-authored-by: Nicoolaus <162422307+Nicoolaus@users.noreply.github.com> Co-authored-by: Hellocrafting <alexanderfgroer@gmail.com> Co-authored-by: Hellocrafting <75727565+Hellocrafting@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
1 parent 8bd8ba3 commit abc0578

13 files changed

Lines changed: 51 additions & 28 deletions

docs/Handout_LazyCook.md

Lines changed: 51 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -26,29 +26,30 @@
2626
![Stunden pro Person](statistics/Time.png)
2727

2828
| Person | Stunden (ca.) |
29-
|--------|--------------|
30-
| Samuel Göbel (GalacticCodeGambit) | ~37 h |
31-
| Eden Bernhard (EdenBernhard) | ~25 h |
32-
| Niclas Matzke (Nicoolaus) | ~18 h |
33-
| Alexander Groer (PrussianBaron) | ~10 h |
34-
| Frederik Behne (Hellocrafting) | ~6 h |
29+
|--------|---------------|
30+
| Samuel Göbel (GalacticCodeGambit) | ~31.69 h |
31+
| Eden Bernhard (EdenBernhard) | ~83 h |
32+
| Niclas Matzke (Nicoolaus) | ~40.46 h |
33+
| Alexander Groer (PrussianBaron) | ~13.46 h |
34+
| Frederik Behne (Hellocrafting) | ~89.82 h |
3535

3636
### Stunden pro Disziplin
3737

3838
![Disziplin: Zeit pro Sprint](statistics/Discipline-Time-per-Sprint.png)
3939

40-
Die Implementierung dominiert klar in Sprint 4 und 6 (~15 h/Sprint). Sprint 1 war anforderungslastig, danach verschob sich der Fokus auf Analyse & Entwurf und schließlich auf reine Implementierung.
40+
Die Implementierung dominiert klar in Sprint 4 und 6 (~15 h/Sprint). Sprint 1 war anforderungslastig, danach verschob sich der Fokus auf Analyse & Entwurf und schließlich auf reine Implementierung und Testing.
4141

4242
### Stunden pro Phase (Milestone)
4343

4444
![Milestone: Zeit pro Sprint](statistics/Milestone-Time-Per-Sprint.png)
4545

46-
| Phase | Schwerpunkt-Sprints |
47-
|-------|---------------------|
48-
| 1. Anforderungsdefinition | Sprint 1–2 |
49-
| 2. Planung & Entwurf | Sprint 1–3, Sprint 6 |
50-
| 3. Implementierung | Sprint 4–6 (Kern) |
51-
| 5. Deployment | Sprint 7–9 |
46+
| Phase | Schwerpunkt-Sprints |
47+
|-------|------------------------------------------|
48+
| 1. Anforderungsdefinition | Sprint 1–2 |
49+
| 2. Planung & Entwurf | Sprint 1–9 |
50+
| 3. Implementierung | Sprint 4–6 (3 Monate Pause) Sprint 10-20 |
51+
| 4. Testing & Qualitätssicherung | Sprint 13 |
52+
| 5. Deployment | Sprint 19-20 |
5253

5354
---
5455

@@ -75,7 +76,7 @@ Die Demo zeigt den vollständigen Nutzerflow:
7576
3. **Rezeptfilterung (SUCUK)** – Echtzeitfilterung der Datenbank; Rezepte werden nach Übereinstimmungsgrad sortiert und als 3×4-Matrix angezeigt
7677
4. **Mehr laden** – Über „Mehr anzeigen" können bis zu 96 Rezepte nachgeladen werden (ADR03)
7778
5. **Rezeptsuche nach Name** – Freitextsuche im Suchfeld findet Rezepte mit ähnlichem Titel
78-
6. **Profilverwaltung** – E-Mail ändern, Passwort ändern, Konto löschen
79+
6. **Profilverwaltung** – E-Mail ändern, Passwort ändern, Konto löschen mit ausgehender Bestätigungsemail
7980

8081
---
8182

@@ -261,13 +262,13 @@ Push / PR → main
261262
| Kategorie | Wert |
262263
|-----------|------|
263264
| Automatisierte Testfälle | 74 |
264-
| Code-Coverage gesamt | **48,3 %** |
265-
| Line Coverage | **50,8 %** |
266-
| Branch Coverage | **34,6 %** |
267-
| Coverable Lines | 711 |
268-
| Gedeckte Zeilen | 361 |
269-
| Coverable Branches | 130 |
270-
| Gedeckte Branches | 45 |
265+
| Code-Coverage gesamt | **53,7 %** |
266+
| Line Coverage | **54,9 %** |
267+
| Branch Coverage | **45,1 %** |
268+
| Coverable Lines | 677 |
269+
| Gedeckte Zeilen | 372 |
270+
| Coverable Branches | 102 |
271+
| Gedeckte Branches | 46 |
271272

272273
---
273274

@@ -279,12 +280,12 @@ SonarCloud misst drei Kernmetriken kontinuierlich: **Coverage**, **Zyklomatische
279280

280281
| Metrik | Wert | Bewertung |
281282
|--------|------|-----------|
282-
| **Line Coverage** | 50,8 % (361 / 711 Zeilen) | Kern-Logik gut abgedeckt; E-Mail-/Route-Layer bewusst ausgenommen |
283-
| **Branch Coverage** | 34,6 % (45 / 130 Branches) | Niedrig durch untestbare `except`-Pfade (SMTP, Logging) |
283+
| **Line Coverage** | 54,9 % (372 / 677 Zeilen) | Kern-Logik gut abgedeckt; E-Mail-/Route-Layer bewusst ausgenommen |
284+
| **Branch Coverage** | 45,1 % (46 / 102 Branches) | Niedrig durch untestbare `except`-Pfade (SMTP, Logging) |
284285
| **Zyklomatische Komplexität** | Ø niedrig pro Datei | Durch Dateiaufteilung deutlich gesunken; Einzelfälle ≤ 6 akzeptiert |
285286
| **Code-Duplikate** | Minimal (1 bekannter 4-Zeiler) | Verbindungslogik zentralisiert; verbleibende Duplikate bewusst belassen |
286287
| **Testfälle gesamt** | 74 | 6 Module, 0 bekannte Fehler |
287-
| **Coverable Lines** | 711 | davon 350 ungedeckt (hauptsächlich EmailService + Routes) |
288+
| **Coverable Lines** | 677 | davon 305 ungedeckt (hauptsächlich EmailService + Routes) |
288289

289290
---
290291

@@ -299,8 +300,8 @@ Coverage misst, welcher Anteil des Codes tatsächlich durch Tests ausgeführt wi
299300

300301
| Metrik | Wert |
301302
|--------|------|
302-
| Line Coverage | **50,8 %** (361 von 711 Zeilen gedeckt) |
303-
| Branch Coverage | **34,6 %** (45 von 130 Branches gedeckt) |
303+
| Line Coverage | **54,9 %** (372 von 677 Zeilen gedeckt) |
304+
| Branch Coverage | **45,1 %** (46 von 102 Branches gedeckt) |
304305

305306
**Gut abgedeckte Bereiche**
306307

@@ -337,7 +338,7 @@ with patch("services.EmailService.sendPasswordResetEmail"):
337338
...
338339
```
339340

340-
Die `except`-Zweige in den Routen, die E-Mail-Fehler abfangen, bleiben dadurch ungetestet – das erklärt die niedrige Branch Coverage von 34,6 %. Da diese Branches nur Logging auslösen (kein kritischer Pfad), ist das vertretbar.
341+
Die `except`-Zweige in den Routen, die E-Mail-Fehler abfangen, bleiben dadurch ungetestet – das erklärt die noch niedrige Branch Coverage von 45,1 %. Da diese Branches nur Logging auslösen (kein kritischer Pfad), ist das vertretbar.
341342

342343
```python
343344
# routes/AuthRoutes.py – der except-Branch wird in Tests nie ausgelöst
@@ -515,7 +516,7 @@ SonarCloud flaggt diesen 4-Zeilen-Block als Duplikat. **Kein Refactoring nötig*
515516
| 4 | **Backend-Paketarchitektur** | Klare Schichten: `core/` · `dao/` · `domain/` · `routes/` · `services/` – jede Datei hat eine Verantwortung |
516517
| 5 | **5 dokumentierte ADRs** | Jede Schlüsselentscheidung mit Kontext, Alternativen und Konsequenzen dokumentiert |
517518
| 6 | **74 automatisierte Tests** | Risikobasierte Teststrategie: Unit-Tests, DB-Integrationstests, Mock-Tests, CI-Smoketest |
518-
| 7 | **SonarCloud Quality Gate** | Kontinuierliche Qualitätsmessung: 48,3 % Coverage, 0 bekannte Bugs im getesteten Umfang |
519+
| 7 | **SonarCloud Quality Gate** | Kontinuierliche Qualitätsmessung: 53,7 % Coverage, 0 bekannte Bugs im getesteten Umfang |
519520
| 8 | **Docker-Deployment** | Reproduzierbares Setup mit `docker compose up` – Frontend und Backend vollständig containerisiert |
520521

521522
---
@@ -530,4 +531,26 @@ SonarCloud flaggt diesen 4-Zeilen-Block als Duplikat. **Kein Refactoring nötig*
530531

531532
---
532533

534+
## Screenshots der Webanwendung
535+
536+
![Anmelden](Images/AnmeldeScreen.png)
537+
538+
![Registrieren](Images/RegistrierenScreen.png)
539+
540+
![Homepage](Images/ShowHomepageScreen.png)
541+
542+
![AddIngredients](Images/AddIngredientsScreen.png)
543+
544+
![FilterRecipes](Images/FilterRecipeScreen.png)
545+
546+
![SearchRecipes](Images/SearchRecipeScreen.png)
547+
548+
![ShowProfile](Images/ProfileScreen.png)
549+
550+
![ChangeEmail](Images/ChangeEmailScreen.png)
551+
552+
![ChangePassword](Images/ChangePasswordScreen.png)
553+
554+
555+
533556
*Handout erstellt für die Abschlusspräsentation · DHBW Karlsruhe · Juni 2026*
153 KB
Loading

docs/Images/AnmeldeScreen.png

21.3 KB
Loading

docs/Images/ChangeEmailScreen.png

39 KB
Loading
45.2 KB
Loading

docs/Images/FilterRecipeScreen.png

134 KB
Loading

docs/Images/ProfileScreen.png

31.2 KB
Loading

docs/Images/RegistrierenScreen.png

38.4 KB
Loading

docs/Images/SearchRecipeScreen.png

61.1 KB
Loading

docs/Images/ShowHomepageScreen.png

133 KB
Loading

0 commit comments

Comments
 (0)