# SpiceManagementSystem
Dieses Projekt ermöglicht das Verwalten von Grundzutaten und Gewürzmischungen über ein Web-Panel.
Um die lokale Entwicklungsumgebung zu starten, müssen zunächst alle Abhängigkeiten per composer install nachinstalliert werden.
Ist das geschehehn, muss zudem MariaDB installiert werden.
Anschließend muss die Datenbank migriert werden - siehe Datenbankstruktur.
Um den lokalen Entwicklungsserver zu starten folgendes eingeben:
````
php artisan serve
````
## Vision
Dashboard:
- Füllstandsanzeigen (Rohstoffe)
- Produkte im Lager (Inventar)
- Produkt Sales in Zeitspanne (Todo: Warenausgang DB Tabelle)
**FOKUS: Warenwirtschaft (Lager, etc.)**
Todo:
- [x] DB Schema abändern, sodass alle Änderungen an einem Produkt gespeichert werden und als Produkthistorie abgerufen werden können.
- [x] Recipes funktionsfähig machen (Prozentual?)
- [x] Garbage collector Produktbilder
- [x] Produktgröße und -preise kombinieren
- [x] Inventar (Unique items in inventar tabelle mit "ist noch da?" flag)
- [x] Bei Inventar anlegen automatisch füllstände der rohstoffe je prozent im rezept und verpackungsgröße anpassen
- [x] Warenausgang (Produktverkauf anlegen)
- [ ] Dashboard machen (s.o.)
- [x] Frontend schöner machen (Umsortieren der Sidebar Elemente, etc.)
- [x] Continious Deployment
## Cronjobs
Den folgenden Cronjob auf dem Server anlegen, um die Laravel jobs auszuführen:
`0 4 * * * /usr/bin/php8.3 /var/www/html/your_laravel_app/artisan uploads:cron > /tmp/cron_log.txt`
## Datenbankstruktur
Um die Tabellen in Filament anzulegen, folgenden Befehl ausführen:
````
php artisan migrate
`````
bzw. im DEV-Mode wenn grundstäzlich geändert wird zu erneuten migrieren und Migrations-Cache leeren:
`````
php artisan migrate:refresh
`````
````
Table supplier {
id int [primary key]
name varchar [not null]
}
Table spices_suppliers { // delivery (i just try to use naming convetions)
id int [primary key]
spice_id int [ref: > spices.id]
supplier_id int [ref: > supplier.id]
amount decimal(10,2)
}
Table recipes {
id int [pk, increment]
name varchar(255) [not null]
description text
}
Table spices {
id int [pk, increment]
name varchar(255) [not null]
amount decimal(10,2)
unit text
}
Table recipes_spices { // meta for every ingredient column of a spice
spice_id int [ref: > spices.id]
recipe_id int [ref: > recipes.id]
amount_in_percent decimal(4,2) [not null]
indexes {
(recipe_id, spice_id) [pk]
}
}
Table packings {
id inbt [pk, increment]
name varchar(255)
size decimal(10,2)
}
Table products {
id int [pk, increment]
title text
images json
description text
package_content text
package_id int [ref: > packings.id]
recipe_id int [ref: > recipes.id]
}
Table products_sizes {
id int [pk, increment]
gtin int
description text
product_id int [ref: > products.id]
packing_id int [ref: > packings.id]
price float
}
Table products_inventory {
id int [pk, increment]
product_id int [ref: > products.id]
size_id int [ref: > products_sizes.id]
out_at timestamp
}
`````
## IONOS-Shared Webhosting
### Variablen für GH Action
Datenbank:
- DB_DATABASENAME
- DB_DATABASEUSER
- DB_HOSTNAME
MariaDB Version 10.11., Port 3306
SFTP:
- SFTP_HOSTNAME
- SFTP_USER
Domain: https://sms.bluefooted-booby-spices.com/,
Short-Domain sms.spices.blue, PHP Version 8.3
Um die Applikation auf Ionos Shared Webhosting zu hosten, muss die .htaccess-Datei so aussehen:
`````