Bjoern Welker 3dcbfecbe4 feat: add info field to articles for shop display
Added optional info text field to articles that can be managed in the backend and is displayed in the shop only when filled. The info appears in both card view and detail modal with an informative style.

- Added info column to items table with migration
- Updated backend edit form with textarea for info text
- Modified API to include info field in bestand response
- Enhanced shop frontend to display info badge when available

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-11 15:12:12 +01:00

Hellas – Bestand & WaWi

Überblick

Dieses Repository enthält:

  • WaWi‑App (Flask + SQLite) für Artikelverwaltung, Ausbuchen, Verkäufe und Bestellungen.
  • Live‑Shop‑Ansicht (index.html) lädt Daten aus der WaWi‑App.
  • Import‑Script für Daten aus der ursprünglichen hellas_bestand.html.

Struktur

  • wawi/app.py – Flask‑App (CRUD, Ausbuchen, Verkäufe, Benutzerverwaltung)
  • wawi/templates/ – HTML‑Templates der WaWi‑App
  • wawi/static/ – Styles + Logo
  • wawi/hellas.db – SQLite‑Datenbank (wird automatisch erstellt)
  • wawi/import_from_html.py – Import aus hellas_bestand.html
  • index.html – Live‑Shop‑Ansicht (ruft /wawi/proxy/bestand)

WaWi lokal starten

cd wawi
python3 -m venv .venv
source .venv/bin/activate
pip install flask gunicorn
python app.py

Standardzugriff: Login über Benutzerverwaltung (siehe unten).

Developer (ENV variablen)

Diese App liest Konfiguration ausschließlich aus Umgebungsvariablen. Für lokale Entwicklung kannst du sie direkt im Shell-Session setzen oder eine .env-Datei in dein Startup-Script laden.

Minimal sinnvoll für lokal:

  • SECRET_KEY – Session-Secret (beliebiger String)
  • APP_USER / APP_PASSWORD – initialer Admin-User
  • URL_PREFIX – leer lassen, wenn lokal ohne Sub-Pfad

Für Bestellungen per Mail zusätzlich:

  • SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS
  • SMTP_FROM, ORDER_TO

Optional:

  • APP_API_KEY – Schutz fuer /wawi/api/bestand und /wawi/order
  • COOKIE_SECURE – 0 fuer http lokal, 1 fuer https
  • PAYPAL_ACCOUNT – PayPal-E-Mail für Bestellformular (z.B. paypal@beispiel.de)

Benutzerverwaltung

Beim ersten Start wird ein Admin aus ENV erzeugt:

  • APP_USER (default: admin)
  • APP_PASSWORD (default: admin)

Passwörter werden gehasht gespeichert.
Über /users können weitere Benutzer angelegt und Passwörter zurückgesetzt werden.

Import aus hellas_bestand.html

cd wawi
python import_from_html.py /pfad/zu/hellas_bestand.html --truncate

Live‑Shop‑Ansicht (index.html)

index.html lädt den Bestand aus der WaWi‑App:

  • API‑Proxy: /wawi/proxy/bestand
  • Konfiguration: /wawi/config (lädt PayPal-Konto aus ENV)

Wenn du diese Datei auf einem Webserver auslieferst, stelle sicher, dass die WaWi‑App unter /wawi erreichbar ist. Wenn du Bestellungen direkt aus index.html abschickst, muss der X-Order-Key bzw. ?key= dem APP_API_KEY entsprechen. Der Key wird in index.html im Script‑Block gesetzt: const ORDER_KEY = "". Trage dort deinen Key ein (oder leer lassen, wenn kein API-Key erforderlich). Das PayPal-Konto wird automatisch aus der ENV-Variable PAYPAL_ACCOUNT geladen.

Umgebungsvariablen (ENV)

Pflicht/Empfohlen für Produktion

  • SECRET_KEY – Session‑Secret
  • APP_USER / APP_PASSWORD – initialer Admin‑User
  • URL_PREFIX – z. B. /wawi (wenn hinter Sub‑Pfad)

E‑Mail (Bestellungen)

  • SMTP_HOST – SMTP‑Server
  • SMTP_PORT – z. B. 587
  • SMTP_USER / SMTP_PASS – SMTP Login
  • SMTP_FROM – Absender (z. B. bestand@hellas.welker.me)
  • ORDER_TO – Empfänger, mehrere per Komma

Optional

  • APP_API_KEY – gemeinsamer API‑Key für /wawi/api/bestand und /wawi/order
  • COOKIE_SECURE – 1 (default) setzt Secure‑Cookie, 0 deaktiviert für http
  • PAYPAL_ACCOUNT – PayPal-E-Mail-Adresse für Bestellungen (wird im Bestellformular angezeigt)

Deployment (systemd + Gunicorn)

  1. App nach /var/www/hellas/wawi kopieren
  2. venv erstellen:
cd /var/www/hellas/wawi
python3 -m venv .venv
source .venv/bin/activate
pip install flask gunicorn
  1. Service‑Datei anlegen: /etc/systemd/system/hellas.service
[Unit]
Description=Hellas WaWi
After=network.target

[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/hellas/wawi
Environment="PATH=/var/www/hellas/wawi/.venv/bin"
Environment="URL_PREFIX=/wawi"
Environment="SECRET_KEY=DEIN_SECRET"
Environment="APP_USER=admin"
Environment="APP_PASSWORD=starkesPasswort"
Environment="SMTP_HOST=smtp.example.com"
Environment="SMTP_PORT=587"
Environment="SMTP_USER=dein_user"
Environment="SMTP_PASS=dein_pass"
Environment="SMTP_FROM=bestand@example.com"
Environment="ORDER_TO=admin@example.com, zweite@example.com"
Environment="APP_API_KEY=api_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Environment="PAYPAL_ACCOUNT=dein-paypal@beispiel.de"
ExecStart=/var/www/hellas/wawi/.venv/bin/gunicorn -w 3 -b 127.0.0.1:8000 app:app
Restart=always

[Install]
WantedBy=multi-user.target
  1. Aktivieren:
sudo systemctl daemon-reload
sudo systemctl enable --now hellas

Nginx (Reverse‑Proxy + Shop‑Seite)

Beispiel /etc/nginx/sites-available/hellas:

server {
  listen 80;
  server_name hellas.welker.me;

  location = / {
    root /var/www/hellas;
    try_files /index.html =404;
  }

  location /wawi/ {
    proxy_pass http://127.0.0.1:8000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}

Aktivieren:

sudo ln -s /etc/nginx/sites-available/hellas /etc/nginx/sites-enabled/hellas
sudo nginx -t
sudo systemctl reload nginx

SSL (Let’s Encrypt)

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d hellas.welker.me

Dateirechte (SQLite + Uploads)

sudo chown -R www-data:www-data /var/www/hellas/wawi
sudo chmod 750 /var/www/hellas/wawi
sudo chmod 640 /var/www/hellas/wawi/hellas.db
sudo mkdir -p /var/www/hellas/wawi/static/uploads
sudo chown -R www-data:www-data /var/www/hellas/wawi/static/uploads

Fix‑Permissions Script (inkl. Uploads)

/root/fix_wawi_permissions.sh sollte auch das Upload‑Verzeichnis setzen:

#!/bin/sh
set -e
chown -R www-data:www-data /var/www/hellas/wawi
chmod 750 /var/www/hellas/wawi
chmod 640 /var/www/hellas/wawi/hellas.db
mkdir -p /var/www/hellas/wawi/static/uploads
chown -R www-data:www-data /var/www/hellas/wawi/static/uploads
systemctl restart hellas
Description
No description provided
Readme 332 KiB
Languages
HTML 63.8%
Python 31.8%
CSS 4.4%