diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6254064..6949965 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,6 +29,10 @@ jobs: # remove stale containers/volumes from previous runs that can cause compose to read invalid metadata docker compose -f project/compose.yaml down --remove-orphans --volumes || true docker compose -f project/compose.yaml up -d + env: + GMAIL_USER: ${{ secrets.GMAIL_USER }} + GMAIL_PASSWORD: ${{ secrets.GMAIL_PASSWORD }} + JWT_SECRET_KEY: ${{ secrets.JWT_SECRETS_KEY }} - name: Wait for frontend on :8000 run: | @@ -54,4 +58,9 @@ jobs: - name: Run backend tests run: | - docker compose -f project/compose.yaml exec -T backend-dev sh -c "python -m pytest tests/ -v" + docker compose -f project/compose.yaml run --rm backend-dev sh -c "python -m pytest tests/ -v" + + env: + GMAIL_USER: ${{ secrets.GMAIL_USER }} + GMAIL_PASSWORD: ${{ secrets.GMAIL_PASSWORD }} + JWT_SECRET_KEY: ${{ secrets.JWT_SECRETS_KEY }} \ No newline at end of file diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 817a815..651fac7 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,4 +1,4 @@ -name: "Lint code base" +name: "Lint Code Base" on: pull_request: @@ -11,7 +11,7 @@ permissions: jobs: linter: - name: Lint code base + name: Lint Code Base runs-on: ubuntu-latest steps: - name: Checkout code diff --git a/.github/workflows/sonarqube-main.yml b/.github/workflows/sonarqube-main.yml index 8bb652b..86592b5 100644 --- a/.github/workflows/sonarqube-main.yml +++ b/.github/workflows/sonarqube-main.yml @@ -2,7 +2,7 @@ name: SonarCloud Full Metrics (main branch) on: push: - branches: [main, master] + branches: [main] workflow_dispatch: permissions: @@ -311,4 +311,4 @@ jobs: if [ "${QG_STATUS}" != "PASSED" ]; then echo "::error::SonarCloud Quality Gate ist FAILED – siehe Job Summary." exit 1 - fi \ No newline at end of file + fi diff --git a/.github/workflows/sonarqube.yml b/.github/workflows/sonarqube.yml index e760e9c..6ad0011 100644 --- a/.github/workflows/sonarqube.yml +++ b/.github/workflows/sonarqube.yml @@ -2,7 +2,7 @@ name: SonarCloud Analysis on: pull_request: - branches: [main, master] + branches: [main] workflow_dispatch: permissions: diff --git a/.gitignore b/.gitignore index e198633..1bb32b7 100644 --- a/.gitignore +++ b/.gitignore @@ -32,9 +32,9 @@ dist/ build/ # Project data / local databases -project/data/*.sqlite3 -project/data/*.sqlite -project/data/*.db +#project/data/*.sqlite3 +#project/data/*.sqlite +#project/data/*.db # Logs *.log diff --git a/README.md b/README.md index 951dc34..93a643a 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,31 @@ # LazyCook [![ci.yml](https://github.com/GalacticCodeGambit/LazyCook/actions/workflows/ci.yml/badge.svg)](https://github.com/GalacticCodeGambit/LazyCook/actions/workflows/ci.yml) [![lint.yml](https://github.com/GalacticCodeGambit/LazyCook/actions/workflows/lint.yml/badge.svg)](https://github.com/GalacticCodeGambit/LazyCook/actions/workflows/lint.yml) +[![SonarCloud Full Metrics (main branch)](https://github.com/GalacticCodeGambit/LazyCook/actions/workflows/sonarqube-main.yml/badge.svg)](https://github.com/GalacticCodeGambit/LazyCook/actions/workflows/sonarqube-main.yml) LazyCook soll eine Webanwendung sein, die es ermöglicht, vorhandene Zutaten einzutragen. Darauf basierend soll LazyCook mögliche Rezepte/Gerichte vorschlagen, die du aus diesen Zutaten machen kannst. + +## Star History + + + + + + Star History Chart + + + ## Features - [x] [#23](https://github.com/GalacticCodeGambit/LazyCook/issues/23) Zutaten hinzufügen können - [x] [#24](https://github.com/GalacticCodeGambit/LazyCook/issues/24) Zutaten entfernen können -- [ ] [#25](https://github.com/GalacticCodeGambit/LazyCook/issues/25) Rezepte/Gerichte automatisch vorgeschlagen bekommen auf Grundlage der eingetragenen Zutaten -- [ ] [#30](https://github.com/GalacticCodeGambit/LazyCook/issues/30) Personenzahl hinzufügen können und vorgeschlagene Rezept/Gericht Größe automatisch anpassen +- [x] [#25](https://github.com/GalacticCodeGambit/LazyCook/issues/25) Rezepte/Gerichte automatisch vorgeschlagen bekommen auf Grundlage der eingetragenen Zutaten +- [x] [#201](https://github.com/GalacticCodeGambit/LazyCook/issues/201) Personenzahl hinzufügen können und vorgeschlagene Rezept/Gericht Größe automatisch anpassen - [x] [#27](https://github.com/GalacticCodeGambit/LazyCook/issues/27) Als User mit Konto anmelden können - [x] [#26](https://github.com/GalacticCodeGambit/LazyCook/issues/26) Als User mit neuem Konto registrieren können ### Optionale Features - [ ] KI-basierte Rezeptvorschläge Einbindung -- [ ] [#33](https://github.com/GalacticCodeGambit/LazyCook/issues/33) Alle gespeicherten Zutaten aus der Datenbank, sollen auf einer Seite angezeigt werden und Suchbar sein z.B. nach Gerichtname "Pizza". +- [x] [#33](https://github.com/GalacticCodeGambit/LazyCook/issues/33) Alle gespeicherten Zutaten aus der Datenbank, sollen auf einer Seite angezeigt werden und Suchbar sein z.B. nach Gerichtname "Pizza". - [ ] Auf der Zutaten-Seite, werden grundlegende Zutaten wie z.B. Tomaten, Mehl, Salz und Milch automatisch vorgeschlagen. Diese sollen hinzufügbar oder ignorierbar sein. - [x] [#46](https://github.com/GalacticCodeGambit/LazyCook/issues/46) Konto löschen/bearbeiten können - [ ] Fehlende Zutaten werden von einem Rezept in einer Einkaufliste aufgelistet @@ -21,34 +33,43 @@ LazyCook soll eine Webanwendung sein, die es ermöglicht, vorhandene Zutaten ein - [x] [#47](https://github.com/GalacticCodeGambit/LazyCook/issues/47) Der Nutzer kann bereits hinzugefügte Zutaten bearbeiten, wie z.B. Menge, Einheit - [x] [#45](https://github.com/GalacticCodeGambit/LazyCook/issues/45) Passwörter "sicher" in Datenbank Abspeichern als Hash und vom Frontend/Backend "sicher" behandeln - ## Installation und Setup -1. Klonen das Repository: + ## Setup +### Anforderungen +- Docker + +### Installation +1. Kopiere das Repository auf deinen lokalen Rechner:
`git clone https://github.com/GalacticCodeGambit/LazyCook.git` -2. Navigieren zum Projektverzeichnis: +2. (Optional) `.env`-Datei erstellen:
+ Für die Funktion [#115](https://github.com/GalacticCodeGambit/LazyCook/issues/115) von Email Versenden/Empfangen muss im Ordner `project/` eine `.env` Datei mit den folgenden Variablen angelegt werden: + ``` + GMAIL_USER= + GMAIL_PASSWORD= + JWT_SECRET_KEY= + ``` + Hinweis: `JWT_SECRET_KEY` sollte in produktiven Umgebungen immer gesetzt und einzigartig sein. Für lokale Tests nutzt `compose.yaml` einen Dev-Default, damit der erste Start nicht abbricht. + +3. Navigieren zum Projektverzeichnis:
`cd LazyCook/project` -3. Starten der Anwendung mit: Docker Compose: +4. Starten der Anwendung mit: Docker Compose:
`docker compose up --build -d` Die Anwendung sollte jetzt unter `http://localhost:8000` erreichbar sein. -Für die Funktion [#115](https://github.com/GalacticCodeGambit/LazyCook/issues/115) von Email Versenden/Empfangen muss im Ordner `project/` eine `.env` Datei mit den folgenden Variablen angelegt werden: -``` -GMAIL_USER= -GMAIL_PASSWORD= -``` - ## Verwendete Technologien - Frontend: HTML, CSS, TypeScript/React - Backend: Python - DB: SQLite - Tests: Pytest - CI/CD: GitHub Actions +- Linting: Super-Linter +- Metriken Analyse: SonarQube Cloud - Containerization: Docker - Projekt Management: GitHub Projects -### Code-Quality / Linting +### Linting - Der Workflow `.github/workflows/lint.yml` prüft das Projekt mit **GitHub Super-Linter**. -- Dabei werden u.a. Python-, TypeScript-, JavaScript-, YAML- und Dockerfile-Dateien validiert. +- Dabei werden u.a. Python-, TypeScript-, JavaScript-, GitHub-Action-, YAML- und Dockerfile-Dateien validiert.