diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7f2c0c4..571ed0b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,14 +1,15 @@ stages: - - analyze - build + - analyze + analyze: stage: analyze image: cirrusci/flutter:latest before_script: - - cd "$CI_PROJECT_DIR/garden_planner" + - cd "$CI_PROJECT_DIR/" script: - flutter analyze --write=analyzer-output.txt artifacts: @@ -19,26 +20,26 @@ build: stage: build image: cirrusci/flutter:latest before_script: - - cd "$CI_PROJECT_DIR/garden_planner" + - cd "$CI_PROJECT_DIR/" script: - flutter packages get - flutter build apk artifacts: paths: - - garden_planner/build/app/outputs/apk/release/app-release.apk + - /build/app/outputs/apk/release/app-release.apk test: stage: build image: cirrusci/flutter:latest before_script: - - cd "$CI_PROJECT_DIR/garden_planner" + - cd "$CI_PROJECT_DIR/" - flutter packages get script: - flutter test --coverage artifacts: paths: - - garden_planner/coverage/lcov.info + - /coverage/lcov.info sonar: @@ -48,13 +49,13 @@ sonar: entrypoint: [""] variables: # Defines the location of the analysis task cache - SONAR_USER_HOME: "${CI_PROJECT_DIR}/garden_planner/.sonar" + SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar" # Shallow cloning needs to be disabled. # See https://docs.sonarqube.org/latest/analysis/gitlab-cicd/. GIT_DEPTH: 0 cache: key: "${CI_JOB_NAME}" paths: - - garden_planner/.sonar/cache + - .sonar/cache script: - sonar-scanner diff --git a/garden_planner/.metadata b/.metadata similarity index 100% rename from garden_planner/.metadata rename to .metadata diff --git a/CPD Idee.msg b/CPD Idee.msg deleted file mode 100644 index c94fc2e..0000000 Binary files a/CPD Idee.msg and /dev/null differ diff --git a/README.md b/README.md index 59a9bc3..624f83c 100644 --- a/README.md +++ b/README.md @@ -14,9 +14,11 @@ Das Beet kann gespeichert werden und wird beim starten geladen ## Funktionen -- Darstellung der Beetreihen und Pflanzenplatzierungen +- Optimiert für Tablets und Desktop +- Android Mobiltelefon Unterstützung ab 1.080 x 2.400 Pixel +- Darstellung der Beet reihen und Pflanzenplatzierungen - Drag-and-Drop zum Hinzufügen von Pflanzen -- Entfernung von gepflanzeten Pflanzen. +- Entfernung von gepflanzten Pflanzen. - Option zur Anzeige von Platzanforderungen für jede Reihe - Anzeige von wichtigen Informationen der Pflanzen über das ganze Jahr - Speichern des aktuellen Beets @@ -25,12 +27,13 @@ Das Beet kann gespeichert werden und wird beim starten geladen ### Zukünftige Funktionen - Anzeigen der Wassermengen der Einzelnen Pflanzen bzw. Rhein angezeigt werden. - Verwalten von mehreren Beeten +- Verbesserte Mobilansicht #### Installation -1. Flutter muss installiert sein -2. Die App befindet sich im Unterordener "garden_planner" -3. Öffnen Sie die Datei lib/constants.dart und stellen Sie sicher, dass die richtige API-URL eingetragen ist. - Wenn Sie die App lokal ausführen möchten, passen Sie die API-URL auf http://localhost:3000 an. -4. Lokale Backend-Dienste können über Docker-Compose gestartet werden damit http://localhost:3000 verfügbar ist - Befehl "docker-compose up --build" \ No newline at end of file +1. Flutter muss installiert sein +2. Öffnen Sie die Datei lib/constants.dart und stellen Sie sicher, dass die richtige API-URL eingetragen ist. + 1. Online Version [[https://cpd.vierling.cloud]) ](https://cpd.vierling.cloud) + 2. Eigen Gehostete Docker-Compose verfügbar unter [[Gitlab]) ](https://gitlab.vierling.cloud/Joerg/garden-planner-api) + 1. Wenn Sie die App lokal ausführen möchten, passen Sie die API-URL auf http://localhost:3000 an. + 2. Befehl zum starten der API docker-compose up --build in der Kommandozeile diff --git a/garden_planner/analysis_options.yaml b/analysis_options.yaml similarity index 100% rename from garden_planner/analysis_options.yaml rename to analysis_options.yaml diff --git a/garden_planner/android/.gitignore b/android/.gitignore similarity index 100% rename from garden_planner/android/.gitignore rename to android/.gitignore diff --git a/garden_planner/android/app/build.gradle b/android/app/build.gradle similarity index 100% rename from garden_planner/android/app/build.gradle rename to android/app/build.gradle diff --git a/garden_planner/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml similarity index 100% rename from garden_planner/android/app/src/debug/AndroidManifest.xml rename to android/app/src/debug/AndroidManifest.xml diff --git a/garden_planner/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml similarity index 100% rename from garden_planner/android/app/src/main/AndroidManifest.xml rename to android/app/src/main/AndroidManifest.xml diff --git a/garden_planner/android/app/src/main/kotlin/com/example/cpd_project/MainActivity.kt b/android/app/src/main/kotlin/com/example/cpd_project/MainActivity.kt similarity index 100% rename from garden_planner/android/app/src/main/kotlin/com/example/cpd_project/MainActivity.kt rename to android/app/src/main/kotlin/com/example/cpd_project/MainActivity.kt diff --git a/garden_planner/android/app/src/main/kotlin/com/example/garden_planner/MainActivity.kt b/android/app/src/main/kotlin/com/example/garden_planner/MainActivity.kt similarity index 100% rename from garden_planner/android/app/src/main/kotlin/com/example/garden_planner/MainActivity.kt rename to android/app/src/main/kotlin/com/example/garden_planner/MainActivity.kt diff --git a/garden_planner/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml similarity index 100% rename from garden_planner/android/app/src/main/res/drawable-v21/launch_background.xml rename to android/app/src/main/res/drawable-v21/launch_background.xml diff --git a/garden_planner/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml similarity index 100% rename from garden_planner/android/app/src/main/res/drawable/launch_background.xml rename to android/app/src/main/res/drawable/launch_background.xml diff --git a/garden_planner/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from garden_planner/android/app/src/main/res/mipmap-hdpi/ic_launcher.png rename to android/app/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/garden_planner/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from garden_planner/android/app/src/main/res/mipmap-mdpi/ic_launcher.png rename to android/app/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/garden_planner/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from garden_planner/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png rename to android/app/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/garden_planner/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from garden_planner/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/garden_planner/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from garden_planner/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png rename to android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/garden_planner/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml similarity index 100% rename from garden_planner/android/app/src/main/res/values-night/styles.xml rename to android/app/src/main/res/values-night/styles.xml diff --git a/garden_planner/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml similarity index 100% rename from garden_planner/android/app/src/main/res/values/styles.xml rename to android/app/src/main/res/values/styles.xml diff --git a/garden_planner/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml similarity index 100% rename from garden_planner/android/app/src/profile/AndroidManifest.xml rename to android/app/src/profile/AndroidManifest.xml diff --git a/garden_planner/android/build.gradle b/android/build.gradle similarity index 100% rename from garden_planner/android/build.gradle rename to android/build.gradle diff --git a/garden_planner/android/gradle.properties b/android/gradle.properties similarity index 100% rename from garden_planner/android/gradle.properties rename to android/gradle.properties diff --git a/garden_planner/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from garden_planner/android/gradle/wrapper/gradle-wrapper.properties rename to android/gradle/wrapper/gradle-wrapper.properties diff --git a/garden_planner/android/settings.gradle b/android/settings.gradle similarity index 100% rename from garden_planner/android/settings.gradle rename to android/settings.gradle diff --git a/api/Dockerfile b/api/Dockerfile deleted file mode 100644 index b9f36f7..0000000 --- a/api/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM node:latest - -WORKDIR /app -COPY package*.json ./ - -RUN npm install - -COPY . . -EXPOSE 3000 - -CMD ["node", "server.js"] \ No newline at end of file diff --git a/api/init.sql b/api/init.sql deleted file mode 100644 index 2dc10c4..0000000 --- a/api/init.sql +++ /dev/null @@ -1,113 +0,0 @@ --- CREATE TABLE -CREATE TABLE IF NOT EXISTS plants ( - id SERIAL PRIMARY KEY, - name VARCHAR(255), - description VARCHAR(255), - water_requirement REAL, - horizontal_space REAL, - vertical_space REAL, - image_path VARCHAR(255) -); - -CREATE TABLE IF NOT EXISTS plant_times ( - id SERIAL PRIMARY KEY, - plant_id INTEGER, - color VARCHAR(255), - description VARCHAR(255), - from_date DATE, - until_date DATE, - action_needed boolean, - FOREIGN KEY (plant_id) REFERENCES plants (id) ON DELETE CASCADE -); - -CREATE TABLE IF NOT EXISTS beets ( - id SERIAL PRIMARY KEY, - plant_id INTEGER, - position INTEGER, - beet_row INTEGER, - FOREIGN KEY (plant_id) REFERENCES plants (id) ON DELETE CASCADE -); - - -INSERT INTO plants (name, description, horizontal_space, vertical_space, water_requirement, image_path) -VALUES - ('Tomate', '', 0.6, 0.8, 0.8, 'lib/assets/plants/tomatoes-gc17bf34c6_640.jpg'), - ('Kopfsalat', 'Maikönig', 0.25, 0.25, 0.5, 'lib/assets/plants/salad-seedling-g46a52dd37_640.jpg'), - ('Radieschen', '', 0.15, 0.2, 0.4, 'lib/assets/plants/root-g27af04562_640.jpg'), - ('Himbeere', 'Nugana', 0.4, 0.6, 0.9, 'lib/assets/plants/raspberries-ge56ab3ffc_640.jpg'), - ('Himbeere', 'Glen Ample', 0.4, 0.6, 0.9, 'lib/assets/plants/raspberries-gce73a006c_640.jpg'), - ('Jostabeere', '', 2.5, 2.5, 1.2, 'lib/assets/plants/jostaberry-gdf8566383_640.jpg'), - ('Johannisbeere', '', 0.4, 0.6, 0.8, 'lib/assets/plants/currant-geaf055095_640.jpg'), - ('Brombeere', 'Navaho', 1, 1, 1.1, 'lib/assets/plants/blackberries-gae933f2d8_640.jpg'), - ('Karotte', '', 0.15, 0.2, 0.7, 'lib/assets/plants/carrot.jpg'), - ('Gurke', '', 0.4, 0.6, 0.6, 'lib/assets/plants/cucumber.jpg'), - ('Paprika', '', 0.3, 0.3, 0.5, 'lib/assets/plants/pepper.jpg'), - ('Erdbeere', '', 0.3, 0.3, 0.8, 'lib/assets/plants/strawberry.jpg'), - ('Basilikum', '', 0.2, 0.2, 0.3, 'lib/assets/plants/basil.jpg'); - -INSERT INTO plant_times (plant_id, from_date, until_date, description, action_needed, color) -VALUES - -- Tomate - (1, '2023-04-01', '2023-05-15', 'Aussaat', TRUE, '4294961979'), - (1, '2023-05-15', '2023-06-15', 'Wachstumsphase', FALSE, '438858537'), - (1, '2023-06-15', '2023-07-31', 'Erntezeit', FALSE, '4294198070'), - - -- Kopfsalat - (2, '2023-04-01', '2023-06-01', 'Aussaat', TRUE, '4294961979'), - (2, '2023-06-01', '2023-07-15', 'Wachstumsphase', FALSE, '438858537'), - (2, '2023-07-15', '2023-08-31', 'Erntezeit', FALSE, '4294198070'), - - -- Radieschen - (3, '2023-03-15', '2023-05-01', 'Aussaat', TRUE, '4294961979'), - (3, '2023-05-01', '2023-06-15', 'Wachstumsphase', FALSE, '438858537'), - (3, '2023-06-15', '2023-07-31', 'Erntezeit', FALSE, '4294198070'), - - -- Himbeere (Nugana) - (4, '2023-04-15', '2023-05-31', 'Aussaat', TRUE, '4294961979'), - (4, '2023-05-31', '2023-07-15', 'Wachstumsphase', FALSE, '438858537'), - (4, '2023-07-15', '2023-08-31', 'Erntezeit', FALSE, '4294198070'), - - -- Himbeere (Glen Ample) - (5, '2023-04-15', '2023-05-31', 'Aussaat', TRUE, '4294961979'), - (5, '2023-05-31', '2023-07-15', 'Wachstumsphase', FALSE, '438858537'), - (5, '2023-07-15', '2023-08-31', 'Erntezeit', FALSE, '4294198070'), - - -- Jostabeere - (6, '2023-03-01', '2023-05-01', 'Aussaat', TRUE, '4294961979'), - (6, '2023-05-01', '2023-07-01', 'Wachstumsphase', FALSE, '438858537'), - (6, '2023-07-01', '2023-09-15', 'Erntezeit', FALSE, '4294198070'), - - -- Johannisbeere - (7, '2023-03-15', '2023-05-01', 'Aussaat', TRUE, '4294961979'), - (7, '2023-05-01', '2023-07-01', 'Wachstumsphase', FALSE, '438858537'), - (7, '2023-07-01', '2023-08-31', 'Erntezeit', FALSE, '4294198070'), - - -- Brombeere (Navaho) - (8, '2023-04-15', '2023-06-01', 'Aussaat', TRUE, '4294961979'), - (8, '2023-06-01', '2023-07-31', 'Wachstumsphase', FALSE, '438858537'), - (8, '2023-07-31', '2023-09-30', 'Erntezeit', FALSE, '4294198070'), - - -- Karotte - (9, '2023-04-01', '2023-05-15', 'Aussaat', TRUE, '4294961979'), - (9, '2023-05-15', '2023-07-01', 'Wachstumsphase', FALSE, '438858537'), - (9, '2023-07-01', '2023-08-31', 'Erntezeit', FALSE, '4294198070'), - - -- Gurke - (10, '2023-04-15', '2023-06-01', 'Aussaat', TRUE, '4294961979'), - (10, '2023-06-01', '2023-08-01', 'Wachstumsphase', FALSE, '438858537'), - (10, '2023-08-01', '2023-09-30', 'Erntezeit', FALSE, '4294198070'), - - -- Paprika - (11, '2023-03-15', '2023-05-15', 'Aussaat', TRUE, '4294961979'), - (11, '2023-05-15', '2023-07-01', 'Wachstumsphase', FALSE, '438858537'), - (11, '2023-07-01', '2023-09-30', 'Erntezeit', FALSE, '4294198070'), - - -- Erdbeere - (12, '2023-03-01', '2023-05-01', 'Aussaat', TRUE, '4294961979'), - (12, '2023-05-01', '2023-07-01', 'Wachstumsphase', FALSE, '438858537'), - (12, '2023-07-01', '2023-08-31', 'Erntezeit', FALSE, '4294198070'), - - -- Basilikum - (13, '2023-03-15', '2023-04-30', 'Aussaat', TRUE, '4294961979'), - (13, '2023-04-30', '2023-06-15', 'Wachstumsphase', FALSE, '438858537'), - (13, '2023-06-15', '2023-08-15', 'Erntezeit', FALSE, '4294198070'); \ No newline at end of file diff --git a/api/package-lock.json b/api/package-lock.json deleted file mode 100644 index 628fef9..0000000 --- a/api/package-lock.json +++ /dev/null @@ -1,811 +0,0 @@ -{ - "name": "api", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "api", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "body-parser": "^1.20.2", - "cors": "^2.8.5", - "express": "^4.18.2", - "pg": "^8.11.0" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/buffer-writer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", - "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/express/node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/packet-reader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", - "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "node_modules/pg": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.0.tgz", - "integrity": "sha512-meLUVPn2TWgJyLmy7el3fQQVwft4gU5NGyvV0XbD41iU9Jbg8lCH4zexhIkihDzVHJStlt6r088G6/fWeNjhXA==", - "dependencies": { - "buffer-writer": "2.0.0", - "packet-reader": "1.0.0", - "pg-connection-string": "^2.6.0", - "pg-pool": "^3.6.0", - "pg-protocol": "^1.6.0", - "pg-types": "^2.1.0", - "pgpass": "1.x" - }, - "engines": { - "node": ">= 8.0.0" - }, - "optionalDependencies": { - "pg-cloudflare": "^1.1.0" - }, - "peerDependencies": { - "pg-native": ">=3.0.1" - }, - "peerDependenciesMeta": { - "pg-native": { - "optional": true - } - } - }, - "node_modules/pg-cloudflare": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.0.tgz", - "integrity": "sha512-tGM8/s6frwuAIyRcJ6nWcIvd3+3NmUKIs6OjviIm1HPPFEt5MzQDOTBQyhPWg/m0kCl95M6gA1JaIXtS8KovOA==", - "optional": true - }, - "node_modules/pg-connection-string": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.0.tgz", - "integrity": "sha512-x14ibktcwlHKoHxx9X3uTVW9zIGR41ZB6QNhHb21OPNdCCO3NaRnpJuwKIQSR4u+Yqjx4HCvy7Hh7VSy1U4dGg==" - }, - "node_modules/pg-int8": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", - "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/pg-pool": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.0.tgz", - "integrity": "sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ==", - "peerDependencies": { - "pg": ">=8.0" - } - }, - "node_modules/pg-protocol": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", - "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" - }, - "node_modules/pg-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", - "dependencies": { - "pg-int8": "1.0.1", - "postgres-array": "~2.0.0", - "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.4", - "postgres-interval": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pgpass": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", - "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", - "dependencies": { - "split2": "^4.1.0" - } - }, - "node_modules/postgres-array": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/postgres-bytea": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-date": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", - "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-interval": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", - "dependencies": { - "xtend": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - } - } -} diff --git a/api/package.json b/api/package.json deleted file mode 100644 index ab4a823..0000000 --- a/api/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "api", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "keywords": [], - "author": "", - "license": "ISC", - "dependencies": { - "body-parser": "^1.20.2", - "cors": "^2.8.5", - "express": "^4.18.2", - "pg": "^8.11.0" - } -} diff --git a/api/server.js b/api/server.js deleted file mode 100644 index b88e567..0000000 --- a/api/server.js +++ /dev/null @@ -1,126 +0,0 @@ -const express = require('express'); -const bodyParser = require('body-parser'); -const cors = require('cors'); -const { Pool } = require('pg'); - -const app = express(); -const PORT = 3000; - -app.use(cors()); // Enable CORS -app.use(bodyParser.json()); // Parse JSON request bodies - -const pool = new Pool({ - host: 'gardenplanner-db', - port: 5432, - database: 'gardenPlaner', - user: 'garden', - password: 'garden', -}); - -app.get('/plants/:id', (req, res) => { - const plantId = req.params.id; - - pool.query('SELECT * FROM plants WHERE id = $1', [plantId]) - .then((result) => { - const plant = result.rows[0]; - if (!plant) { - res.status(404).json({ error: 'Pflanze nicht gefunden' }); - return; - } - - pool.query('SELECT * FROM plant_times WHERE plant_id = $1', [plantId]) - .then((result) => { - const plantTimes = result.rows; - - const plantWithTimes = { - ...plant, - times: plantTimes - }; - - res.json(plantWithTimes); - }) - .catch((error) => { - console.error('Fehler beim landen der Zeiten', error); - res.status(500).json({ error: 'Fehler beim landen der Zeiten' }); - }); - }) - .catch((error) => { - console.error('Fehler beim landen der Zeiten:', error); - res.status(500).json({ error: 'Fehler beim landen der Zeiten' }); - }); -}); - -app.get('/plants', (req, res) => { - Promise.all([ - pool.query('SELECT * FROM plants'), - pool.query('SELECT * FROM plant_times') - ]) - .then(([plantsResult, plantTimesResult]) => { - const rawPlants = plantsResult.rows; - const plantTimes = plantTimesResult.rows; - - const plants = rawPlants.map((plant) => ({ - ...plant, - times: plantTimes.filter((time) => time.plant_id === plant.id) - })); - - res.json(plants); - }) - .catch((error) => { - console.error('Failed to fetch plants and plant times:', error); - res.status(500).json({ error: 'Failed to fetch plants and plant times' }); - }); -}); - -app.get('/beet', (req, res) => { - - pool.query('SELECT * FROM beets') - .then(( beetResult) => { - const beet = beetResult.rows; - - res.json(beet); - }) - .catch((error) => { - console.error('Failed to fetch plants and plant times:', error); - res.status(500).json({ error: 'Failed to fetch plants and plant times' }); - }); -}); - -app.post('/beet', (req, res) => { - const beetEntries = req.body; - - console.log(beetEntries); - - if (!beetEntries || !Array.isArray(beetEntries)) { - res.status(400).json({ error: 'falscher body' }); - return; - } - - const clearQuery = 'DELETE FROM beets'; - const insertQuery = 'INSERT INTO beets (plant_id, position, beet_row) VALUES ($1, $2, $3)'; - const values = beetEntries.map(({ plantId, position, beet_row }) => [plantId, position, beet_row]); - - pool - .connect() - .then((client) => { - return client - .query(clearQuery) // Clear the beets table - .then(() => - Promise.all( - values.map((params) => client.query(insertQuery, params)) - ) - ) - .finally(() => client.release()); - }) - .then(() => { - res.json({ message: 'Beet gespeichert' }); - }) - .catch((error) => { - console.error('Fehler beim speichern:', error); - res.status(500).json({ error: 'Fehler beim speichern' }); - }); -}); - -app.listen(PORT, () => { - console.log(`Server is running on port ${PORT}`); -}); diff --git a/docker-compose.yaml b/docker-compose.yaml deleted file mode 100644 index 9196fa2..0000000 --- a/docker-compose.yaml +++ /dev/null @@ -1,25 +0,0 @@ -version: '3' - -services: - gardenplanner-db: - image: postgres - restart: always - environment: - POSTGRES_USER: garden - POSTGRES_PASSWORD: garden - POSTGRES_DB: gardenPlaner - volumes: - - ./api/init.sql:/docker-entrypoint-initdb.d/init.sql - gardenplanner-api: - build: ./api - restart: always - depends_on: - - gardenplanner-db - ports: - - 3000:3000 - adminer: - image: adminer - restart: always - ports: - - 8080:8080 - diff --git a/garden_planner/lib/api/api_entities/beet_entry.dart b/lib/api/api_entities/beet_entry.dart similarity index 100% rename from garden_planner/lib/api/api_entities/beet_entry.dart rename to lib/api/api_entities/beet_entry.dart diff --git a/garden_planner/lib/api/garden_api.service.dart b/lib/api/garden_api.service.dart similarity index 100% rename from garden_planner/lib/api/garden_api.service.dart rename to lib/api/garden_api.service.dart diff --git a/garden_planner/lib/api/http_connection.dart b/lib/api/http_connection.dart similarity index 100% rename from garden_planner/lib/api/http_connection.dart rename to lib/api/http_connection.dart diff --git a/garden_planner/lib/assets/layout/height-64.png b/lib/assets/layout/height-64.png similarity index 100% rename from garden_planner/lib/assets/layout/height-64.png rename to lib/assets/layout/height-64.png diff --git a/garden_planner/lib/assets/layout/planting-64-white.png b/lib/assets/layout/planting-64-white.png similarity index 100% rename from garden_planner/lib/assets/layout/planting-64-white.png rename to lib/assets/layout/planting-64-white.png diff --git a/garden_planner/lib/assets/layout/planting-64.png b/lib/assets/layout/planting-64.png similarity index 100% rename from garden_planner/lib/assets/layout/planting-64.png rename to lib/assets/layout/planting-64.png diff --git a/garden_planner/lib/assets/layout/width-64.png b/lib/assets/layout/width-64.png similarity index 100% rename from garden_planner/lib/assets/layout/width-64.png rename to lib/assets/layout/width-64.png diff --git a/garden_planner/lib/assets/layout/width_square.png b/lib/assets/layout/width_square.png similarity index 100% rename from garden_planner/lib/assets/layout/width_square.png rename to lib/assets/layout/width_square.png diff --git a/garden_planner/lib/assets/plants/basil.jpg b/lib/assets/plants/basil.jpg similarity index 100% rename from garden_planner/lib/assets/plants/basil.jpg rename to lib/assets/plants/basil.jpg diff --git a/garden_planner/lib/assets/plants/blackberries-gae933f2d8_640.jpg b/lib/assets/plants/blackberries-gae933f2d8_640.jpg similarity index 100% rename from garden_planner/lib/assets/plants/blackberries-gae933f2d8_640.jpg rename to lib/assets/plants/blackberries-gae933f2d8_640.jpg diff --git a/garden_planner/lib/assets/plants/carrot.jpg b/lib/assets/plants/carrot.jpg similarity index 100% rename from garden_planner/lib/assets/plants/carrot.jpg rename to lib/assets/plants/carrot.jpg diff --git a/garden_planner/lib/assets/plants/cucumber.jpg b/lib/assets/plants/cucumber.jpg similarity index 100% rename from garden_planner/lib/assets/plants/cucumber.jpg rename to lib/assets/plants/cucumber.jpg diff --git a/garden_planner/lib/assets/plants/currant-geaf055095_640.jpg b/lib/assets/plants/currant-geaf055095_640.jpg similarity index 100% rename from garden_planner/lib/assets/plants/currant-geaf055095_640.jpg rename to lib/assets/plants/currant-geaf055095_640.jpg diff --git a/garden_planner/lib/assets/plants/horizontal-water-pipe-64.png b/lib/assets/plants/horizontal-water-pipe-64.png similarity index 100% rename from garden_planner/lib/assets/plants/horizontal-water-pipe-64.png rename to lib/assets/plants/horizontal-water-pipe-64.png diff --git a/garden_planner/lib/assets/plants/jostaberry-gdf8566383_640.jpg b/lib/assets/plants/jostaberry-gdf8566383_640.jpg similarity index 100% rename from garden_planner/lib/assets/plants/jostaberry-gdf8566383_640.jpg rename to lib/assets/plants/jostaberry-gdf8566383_640.jpg diff --git a/garden_planner/lib/assets/plants/pepper.jpg b/lib/assets/plants/pepper.jpg similarity index 100% rename from garden_planner/lib/assets/plants/pepper.jpg rename to lib/assets/plants/pepper.jpg diff --git a/garden_planner/lib/assets/plants/raspberries-gce73a006c_640.jpg b/lib/assets/plants/raspberries-gce73a006c_640.jpg similarity index 100% rename from garden_planner/lib/assets/plants/raspberries-gce73a006c_640.jpg rename to lib/assets/plants/raspberries-gce73a006c_640.jpg diff --git a/garden_planner/lib/assets/plants/raspberries-ge56ab3ffc_640.jpg b/lib/assets/plants/raspberries-ge56ab3ffc_640.jpg similarity index 100% rename from garden_planner/lib/assets/plants/raspberries-ge56ab3ffc_640.jpg rename to lib/assets/plants/raspberries-ge56ab3ffc_640.jpg diff --git a/garden_planner/lib/assets/plants/root-g27af04562_640.jpg b/lib/assets/plants/root-g27af04562_640.jpg similarity index 100% rename from garden_planner/lib/assets/plants/root-g27af04562_640.jpg rename to lib/assets/plants/root-g27af04562_640.jpg diff --git a/garden_planner/lib/assets/plants/salad-seedling-g46a52dd37_640.jpg b/lib/assets/plants/salad-seedling-g46a52dd37_640.jpg similarity index 100% rename from garden_planner/lib/assets/plants/salad-seedling-g46a52dd37_640.jpg rename to lib/assets/plants/salad-seedling-g46a52dd37_640.jpg diff --git a/garden_planner/lib/assets/plants/strawberry.jpg b/lib/assets/plants/strawberry.jpg similarity index 100% rename from garden_planner/lib/assets/plants/strawberry.jpg rename to lib/assets/plants/strawberry.jpg diff --git a/garden_planner/lib/assets/plants/tomatoes-gc17bf34c6_640.jpg b/lib/assets/plants/tomatoes-gc17bf34c6_640.jpg similarity index 100% rename from garden_planner/lib/assets/plants/tomatoes-gc17bf34c6_640.jpg rename to lib/assets/plants/tomatoes-gc17bf34c6_640.jpg diff --git a/garden_planner/lib/assets/plants/vertical-water-pipe-64.png b/lib/assets/plants/vertical-water-pipe-64.png similarity index 100% rename from garden_planner/lib/assets/plants/vertical-water-pipe-64.png rename to lib/assets/plants/vertical-water-pipe-64.png diff --git a/garden_planner/lib/constance.dart b/lib/constance.dart similarity index 100% rename from garden_planner/lib/constance.dart rename to lib/constance.dart diff --git a/garden_planner/lib/entities/beet.dart b/lib/entities/beet.dart similarity index 100% rename from garden_planner/lib/entities/beet.dart rename to lib/entities/beet.dart diff --git a/garden_planner/lib/entities/beet_entry_return.dart b/lib/entities/beet_entry_return.dart similarity index 100% rename from garden_planner/lib/entities/beet_entry_return.dart rename to lib/entities/beet_entry_return.dart diff --git a/garden_planner/lib/entities/beet_row.dart b/lib/entities/beet_row.dart similarity index 100% rename from garden_planner/lib/entities/beet_row.dart rename to lib/entities/beet_row.dart diff --git a/garden_planner/lib/entities/plant.dart b/lib/entities/plant.dart similarity index 100% rename from garden_planner/lib/entities/plant.dart rename to lib/entities/plant.dart diff --git a/garden_planner/lib/entities/plant_in_row.dart b/lib/entities/plant_in_row.dart similarity index 100% rename from garden_planner/lib/entities/plant_in_row.dart rename to lib/entities/plant_in_row.dart diff --git a/garden_planner/lib/entities/plant_time.dart b/lib/entities/plant_time.dart similarity index 100% rename from garden_planner/lib/entities/plant_time.dart rename to lib/entities/plant_time.dart diff --git a/garden_planner/lib/logic/beet.service.dart b/lib/logic/beet.service.dart similarity index 100% rename from garden_planner/lib/logic/beet.service.dart rename to lib/logic/beet.service.dart diff --git a/garden_planner/lib/logic/beet_row.service.dart b/lib/logic/beet_row.service.dart similarity index 100% rename from garden_planner/lib/logic/beet_row.service.dart rename to lib/logic/beet_row.service.dart diff --git a/garden_planner/lib/logic/date.helper.dart b/lib/logic/date.helper.dart similarity index 100% rename from garden_planner/lib/logic/date.helper.dart rename to lib/logic/date.helper.dart diff --git a/garden_planner/lib/logic/plant.service.dart b/lib/logic/plant.service.dart similarity index 100% rename from garden_planner/lib/logic/plant.service.dart rename to lib/logic/plant.service.dart diff --git a/garden_planner/lib/main.dart b/lib/main.dart similarity index 98% rename from garden_planner/lib/main.dart rename to lib/main.dart index ad9cff1..6b4a087 100644 --- a/garden_planner/lib/main.dart +++ b/lib/main.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; -import 'package:garden_planner/constance.dart'; import 'api/garden_api.service.dart'; import 'api/http_connection.dart'; +import 'constance.dart'; import 'logic/beet.service.dart'; import 'logic/beet_row.service.dart'; import 'logic/plant.service.dart'; diff --git a/garden_planner/lib/repositories/beet.repositories.dart b/lib/repositories/beet.repositories.dart similarity index 100% rename from garden_planner/lib/repositories/beet.repositories.dart rename to lib/repositories/beet.repositories.dart diff --git a/garden_planner/lib/widgets/content.dart b/lib/widgets/content.dart similarity index 100% rename from garden_planner/lib/widgets/content.dart rename to lib/widgets/content.dart diff --git a/garden_planner/lib/widgets/content_widgets/control_bar.dart b/lib/widgets/content_widgets/control_bar.dart similarity index 100% rename from garden_planner/lib/widgets/content_widgets/control_bar.dart rename to lib/widgets/content_widgets/control_bar.dart diff --git a/garden_planner/lib/widgets/content_widgets/dashboard.dart b/lib/widgets/content_widgets/dashboard.dart similarity index 100% rename from garden_planner/lib/widgets/content_widgets/dashboard.dart rename to lib/widgets/content_widgets/dashboard.dart diff --git a/garden_planner/lib/widgets/content_widgets/dashboard_widgets/plant_drop.dart b/lib/widgets/content_widgets/dashboard_widgets/plant_drop.dart similarity index 100% rename from garden_planner/lib/widgets/content_widgets/dashboard_widgets/plant_drop.dart rename to lib/widgets/content_widgets/dashboard_widgets/plant_drop.dart diff --git a/garden_planner/lib/widgets/content_widgets/dashboard_widgets/plant_element.dart b/lib/widgets/content_widgets/dashboard_widgets/plant_element.dart similarity index 100% rename from garden_planner/lib/widgets/content_widgets/dashboard_widgets/plant_element.dart rename to lib/widgets/content_widgets/dashboard_widgets/plant_element.dart diff --git a/garden_planner/lib/widgets/content_widgets/dashboard_widgets/plant_row.dart b/lib/widgets/content_widgets/dashboard_widgets/plant_row.dart similarity index 100% rename from garden_planner/lib/widgets/content_widgets/dashboard_widgets/plant_row.dart rename to lib/widgets/content_widgets/dashboard_widgets/plant_row.dart diff --git a/garden_planner/lib/widgets/content_widgets/dashboard_widgets/space/plant_row_horizontal_space.dart b/lib/widgets/content_widgets/dashboard_widgets/space/plant_row_horizontal_space.dart similarity index 100% rename from garden_planner/lib/widgets/content_widgets/dashboard_widgets/space/plant_row_horizontal_space.dart rename to lib/widgets/content_widgets/dashboard_widgets/space/plant_row_horizontal_space.dart diff --git a/garden_planner/lib/widgets/content_widgets/dashboard_widgets/space/plant_row_space.dart b/lib/widgets/content_widgets/dashboard_widgets/space/plant_row_space.dart similarity index 100% rename from garden_planner/lib/widgets/content_widgets/dashboard_widgets/space/plant_row_space.dart rename to lib/widgets/content_widgets/dashboard_widgets/space/plant_row_space.dart diff --git a/garden_planner/lib/widgets/content_widgets/dashboard_widgets/water/plant_row_horizontal_water.dart b/lib/widgets/content_widgets/dashboard_widgets/water/plant_row_horizontal_water.dart similarity index 100% rename from garden_planner/lib/widgets/content_widgets/dashboard_widgets/water/plant_row_horizontal_water.dart rename to lib/widgets/content_widgets/dashboard_widgets/water/plant_row_horizontal_water.dart diff --git a/garden_planner/lib/widgets/content_widgets/dashboard_widgets/water/plant_row_water.dart b/lib/widgets/content_widgets/dashboard_widgets/water/plant_row_water.dart similarity index 100% rename from garden_planner/lib/widgets/content_widgets/dashboard_widgets/water/plant_row_water.dart rename to lib/widgets/content_widgets/dashboard_widgets/water/plant_row_water.dart diff --git a/garden_planner/lib/widgets/content_widgets/footer.dart b/lib/widgets/content_widgets/footer.dart similarity index 100% rename from garden_planner/lib/widgets/content_widgets/footer.dart rename to lib/widgets/content_widgets/footer.dart diff --git a/garden_planner/lib/widgets/content_widgets/new_beet_row.dart b/lib/widgets/content_widgets/new_beet_row.dart similarity index 100% rename from garden_planner/lib/widgets/content_widgets/new_beet_row.dart rename to lib/widgets/content_widgets/new_beet_row.dart diff --git a/garden_planner/lib/widgets/header.dart b/lib/widgets/header.dart similarity index 100% rename from garden_planner/lib/widgets/header.dart rename to lib/widgets/header.dart diff --git a/garden_planner/lib/widgets/sidebar.dart b/lib/widgets/sidebar.dart similarity index 100% rename from garden_planner/lib/widgets/sidebar.dart rename to lib/widgets/sidebar.dart diff --git a/garden_planner/linux/.gitignore b/linux/.gitignore similarity index 100% rename from garden_planner/linux/.gitignore rename to linux/.gitignore diff --git a/garden_planner/linux/CMakeLists.txt b/linux/CMakeLists.txt similarity index 100% rename from garden_planner/linux/CMakeLists.txt rename to linux/CMakeLists.txt diff --git a/garden_planner/linux/flutter/CMakeLists.txt b/linux/flutter/CMakeLists.txt similarity index 100% rename from garden_planner/linux/flutter/CMakeLists.txt rename to linux/flutter/CMakeLists.txt diff --git a/garden_planner/linux/main.cc b/linux/main.cc similarity index 100% rename from garden_planner/linux/main.cc rename to linux/main.cc diff --git a/garden_planner/linux/my_application.cc b/linux/my_application.cc similarity index 100% rename from garden_planner/linux/my_application.cc rename to linux/my_application.cc diff --git a/garden_planner/linux/my_application.h b/linux/my_application.h similarity index 100% rename from garden_planner/linux/my_application.h rename to linux/my_application.h diff --git a/garden_planner/pubspec.yaml b/pubspec.yaml similarity index 100% rename from garden_planner/pubspec.yaml rename to pubspec.yaml diff --git a/garden_planner/test/api/api_entities/beet_entry_return_test.dart b/test/api/api_entities/beet_entry_return_test.dart similarity index 100% rename from garden_planner/test/api/api_entities/beet_entry_return_test.dart rename to test/api/api_entities/beet_entry_return_test.dart diff --git a/garden_planner/test/api/api_entities/beet_entry_test.dart b/test/api/api_entities/beet_entry_test.dart similarity index 100% rename from garden_planner/test/api/api_entities/beet_entry_test.dart rename to test/api/api_entities/beet_entry_test.dart diff --git a/garden_planner/test/api/garden_api_test.dart b/test/api/garden_api_test.dart similarity index 100% rename from garden_planner/test/api/garden_api_test.dart rename to test/api/garden_api_test.dart diff --git a/garden_planner/test/entities/beet_row_test.dart b/test/entities/beet_row_test.dart similarity index 100% rename from garden_planner/test/entities/beet_row_test.dart rename to test/entities/beet_row_test.dart diff --git a/garden_planner/test/entities/beet_test.dart b/test/entities/beet_test.dart similarity index 100% rename from garden_planner/test/entities/beet_test.dart rename to test/entities/beet_test.dart diff --git a/garden_planner/test/entities/plant_in_row_test.dart b/test/entities/plant_in_row_test.dart similarity index 100% rename from garden_planner/test/entities/plant_in_row_test.dart rename to test/entities/plant_in_row_test.dart diff --git a/garden_planner/test/entities/plant_test.dart b/test/entities/plant_test.dart similarity index 100% rename from garden_planner/test/entities/plant_test.dart rename to test/entities/plant_test.dart diff --git a/garden_planner/test/entities/plant_time_test.dart b/test/entities/plant_time_test.dart similarity index 100% rename from garden_planner/test/entities/plant_time_test.dart rename to test/entities/plant_time_test.dart diff --git a/garden_planner/test/helpers/beet_repository_generator.dart b/test/helpers/beet_repository_generator.dart similarity index 100% rename from garden_planner/test/helpers/beet_repository_generator.dart rename to test/helpers/beet_repository_generator.dart diff --git a/garden_planner/test/helpers/plant_generator.dart b/test/helpers/plant_generator.dart similarity index 100% rename from garden_planner/test/helpers/plant_generator.dart rename to test/helpers/plant_generator.dart diff --git a/garden_planner/test/logic/beet.service_test.dart b/test/logic/beet.service_test.dart similarity index 100% rename from garden_planner/test/logic/beet.service_test.dart rename to test/logic/beet.service_test.dart diff --git a/garden_planner/test/logic/beet_row.service_test.dart b/test/logic/beet_row.service_test.dart similarity index 100% rename from garden_planner/test/logic/beet_row.service_test.dart rename to test/logic/beet_row.service_test.dart diff --git a/garden_planner/test/logic/date.helper_test.dart b/test/logic/date.helper_test.dart similarity index 100% rename from garden_planner/test/logic/date.helper_test.dart rename to test/logic/date.helper_test.dart diff --git a/garden_planner/test/logic/plant.service_test.dart b/test/logic/plant.service_test.dart similarity index 100% rename from garden_planner/test/logic/plant.service_test.dart rename to test/logic/plant.service_test.dart diff --git a/garden_planner/test/main_test.dart b/test/main_test.dart similarity index 100% rename from garden_planner/test/main_test.dart rename to test/main_test.dart diff --git a/garden_planner/test/mock/mock_http_client.dart b/test/mock/mock_http_client.dart similarity index 100% rename from garden_planner/test/mock/mock_http_client.dart rename to test/mock/mock_http_client.dart diff --git a/garden_planner/test/test.sh b/test/test.sh similarity index 100% rename from garden_planner/test/test.sh rename to test/test.sh diff --git a/garden_planner/test/widgets/content_test.dart b/test/widgets/content_test.dart similarity index 100% rename from garden_planner/test/widgets/content_test.dart rename to test/widgets/content_test.dart diff --git a/garden_planner/test/widgets/content_widgets/control_bar_test.dart b/test/widgets/content_widgets/control_bar_test.dart similarity index 100% rename from garden_planner/test/widgets/content_widgets/control_bar_test.dart rename to test/widgets/content_widgets/control_bar_test.dart diff --git a/garden_planner/test/widgets/content_widgets/dashboard_test.dart b/test/widgets/content_widgets/dashboard_test.dart similarity index 100% rename from garden_planner/test/widgets/content_widgets/dashboard_test.dart rename to test/widgets/content_widgets/dashboard_test.dart diff --git a/garden_planner/test/widgets/content_widgets/dashboard_widgets/plant_drop_test.dart b/test/widgets/content_widgets/dashboard_widgets/plant_drop_test.dart similarity index 100% rename from garden_planner/test/widgets/content_widgets/dashboard_widgets/plant_drop_test.dart rename to test/widgets/content_widgets/dashboard_widgets/plant_drop_test.dart diff --git a/garden_planner/test/widgets/content_widgets/dashboard_widgets/plant_element_test.dart b/test/widgets/content_widgets/dashboard_widgets/plant_element_test.dart similarity index 100% rename from garden_planner/test/widgets/content_widgets/dashboard_widgets/plant_element_test.dart rename to test/widgets/content_widgets/dashboard_widgets/plant_element_test.dart diff --git a/garden_planner/test/widgets/content_widgets/dashboard_widgets/plant_row_test.dart b/test/widgets/content_widgets/dashboard_widgets/plant_row_test.dart similarity index 100% rename from garden_planner/test/widgets/content_widgets/dashboard_widgets/plant_row_test.dart rename to test/widgets/content_widgets/dashboard_widgets/plant_row_test.dart diff --git a/garden_planner/test/widgets/content_widgets/dashboard_widgets/space/plant_row_horizontal_space_test.dart b/test/widgets/content_widgets/dashboard_widgets/space/plant_row_horizontal_space_test.dart similarity index 100% rename from garden_planner/test/widgets/content_widgets/dashboard_widgets/space/plant_row_horizontal_space_test.dart rename to test/widgets/content_widgets/dashboard_widgets/space/plant_row_horizontal_space_test.dart diff --git a/garden_planner/test/widgets/content_widgets/dashboard_widgets/space/plant_row_space_test.dart b/test/widgets/content_widgets/dashboard_widgets/space/plant_row_space_test.dart similarity index 100% rename from garden_planner/test/widgets/content_widgets/dashboard_widgets/space/plant_row_space_test.dart rename to test/widgets/content_widgets/dashboard_widgets/space/plant_row_space_test.dart diff --git a/garden_planner/test/widgets/content_widgets/footer_test.dart b/test/widgets/content_widgets/footer_test.dart similarity index 100% rename from garden_planner/test/widgets/content_widgets/footer_test.dart rename to test/widgets/content_widgets/footer_test.dart diff --git a/garden_planner/test/widgets/content_widgets/new_beet_row_test.dart b/test/widgets/content_widgets/new_beet_row_test.dart similarity index 100% rename from garden_planner/test/widgets/content_widgets/new_beet_row_test.dart rename to test/widgets/content_widgets/new_beet_row_test.dart diff --git a/garden_planner/test/widgets/header_test.dart b/test/widgets/header_test.dart similarity index 100% rename from garden_planner/test/widgets/header_test.dart rename to test/widgets/header_test.dart diff --git a/garden_planner/test/widgets/sidebar_test.dart b/test/widgets/sidebar_test.dart similarity index 100% rename from garden_planner/test/widgets/sidebar_test.dart rename to test/widgets/sidebar_test.dart diff --git a/garden_planner/web/favicon.png b/web/favicon.png similarity index 100% rename from garden_planner/web/favicon.png rename to web/favicon.png diff --git a/garden_planner/web/icons/Icon-192.png b/web/icons/Icon-192.png similarity index 100% rename from garden_planner/web/icons/Icon-192.png rename to web/icons/Icon-192.png diff --git a/garden_planner/web/icons/Icon-512.png b/web/icons/Icon-512.png similarity index 100% rename from garden_planner/web/icons/Icon-512.png rename to web/icons/Icon-512.png diff --git a/garden_planner/web/icons/Icon-maskable-192.png b/web/icons/Icon-maskable-192.png similarity index 100% rename from garden_planner/web/icons/Icon-maskable-192.png rename to web/icons/Icon-maskable-192.png diff --git a/garden_planner/web/icons/Icon-maskable-512.png b/web/icons/Icon-maskable-512.png similarity index 100% rename from garden_planner/web/icons/Icon-maskable-512.png rename to web/icons/Icon-maskable-512.png diff --git a/garden_planner/web/index.html b/web/index.html similarity index 100% rename from garden_planner/web/index.html rename to web/index.html diff --git a/garden_planner/web/manifest.json b/web/manifest.json similarity index 100% rename from garden_planner/web/manifest.json rename to web/manifest.json diff --git a/garden_planner/windows/.gitignore b/windows/.gitignore similarity index 100% rename from garden_planner/windows/.gitignore rename to windows/.gitignore diff --git a/garden_planner/windows/CMakeLists.txt b/windows/CMakeLists.txt similarity index 100% rename from garden_planner/windows/CMakeLists.txt rename to windows/CMakeLists.txt diff --git a/garden_planner/windows/flutter/CMakeLists.txt b/windows/flutter/CMakeLists.txt similarity index 100% rename from garden_planner/windows/flutter/CMakeLists.txt rename to windows/flutter/CMakeLists.txt diff --git a/garden_planner/windows/runner/CMakeLists.txt b/windows/runner/CMakeLists.txt similarity index 100% rename from garden_planner/windows/runner/CMakeLists.txt rename to windows/runner/CMakeLists.txt diff --git a/garden_planner/windows/runner/Runner.rc b/windows/runner/Runner.rc similarity index 100% rename from garden_planner/windows/runner/Runner.rc rename to windows/runner/Runner.rc diff --git a/garden_planner/windows/runner/flutter_window.cpp b/windows/runner/flutter_window.cpp similarity index 100% rename from garden_planner/windows/runner/flutter_window.cpp rename to windows/runner/flutter_window.cpp diff --git a/garden_planner/windows/runner/flutter_window.h b/windows/runner/flutter_window.h similarity index 100% rename from garden_planner/windows/runner/flutter_window.h rename to windows/runner/flutter_window.h diff --git a/garden_planner/windows/runner/main.cpp b/windows/runner/main.cpp similarity index 100% rename from garden_planner/windows/runner/main.cpp rename to windows/runner/main.cpp diff --git a/garden_planner/windows/runner/resource.h b/windows/runner/resource.h similarity index 100% rename from garden_planner/windows/runner/resource.h rename to windows/runner/resource.h diff --git a/garden_planner/windows/runner/resources/app_icon.ico b/windows/runner/resources/app_icon.ico similarity index 100% rename from garden_planner/windows/runner/resources/app_icon.ico rename to windows/runner/resources/app_icon.ico diff --git a/garden_planner/windows/runner/runner.exe.manifest b/windows/runner/runner.exe.manifest similarity index 100% rename from garden_planner/windows/runner/runner.exe.manifest rename to windows/runner/runner.exe.manifest diff --git a/garden_planner/windows/runner/utils.cpp b/windows/runner/utils.cpp similarity index 100% rename from garden_planner/windows/runner/utils.cpp rename to windows/runner/utils.cpp diff --git a/garden_planner/windows/runner/utils.h b/windows/runner/utils.h similarity index 100% rename from garden_planner/windows/runner/utils.h rename to windows/runner/utils.h diff --git a/garden_planner/windows/runner/win32_window.cpp b/windows/runner/win32_window.cpp similarity index 100% rename from garden_planner/windows/runner/win32_window.cpp rename to windows/runner/win32_window.cpp diff --git a/garden_planner/windows/runner/win32_window.h b/windows/runner/win32_window.h similarity index 100% rename from garden_planner/windows/runner/win32_window.h rename to windows/runner/win32_window.h diff --git a/wireframes/Add_Plant.jpg b/wireframes/Add_Plant.jpg deleted file mode 100644 index f422af9..0000000 Binary files a/wireframes/Add_Plant.jpg and /dev/null differ diff --git a/wireframes/Common_Details.jpg b/wireframes/Common_Details.jpg deleted file mode 100644 index 68abe7b..0000000 Binary files a/wireframes/Common_Details.jpg and /dev/null differ diff --git a/wireframes/Main.jpg b/wireframes/Main.jpg deleted file mode 100644 index 38924e7..0000000 Binary files a/wireframes/Main.jpg and /dev/null differ diff --git a/wireframes/View_Space.jpg b/wireframes/View_Space.jpg deleted file mode 100644 index 09ddfa3..0000000 Binary files a/wireframes/View_Space.jpg and /dev/null differ