Backend: - Add customerNumber field to AppUser with unique index - Add customer number generation starting at K1000 - Add InvoiceService for creating invoices with PDF data - Add InvoiceController with endpoints for listing customers and generating invoice data - Update CatalogService to assign customer numbers to new users - Update SampleService to preserve customerNumber on updates - Fix SecurityConfig to enable method security and admin role checks Frontend: - Update UserOption/UserRow types to include customerNumber - Add customer selection dialog in InvoiceManagementPage - Add PDF generation and preview for invoices - Fix encodePdfText function for proper PDF encoding - Fix LocalStorage key for auth token
MUH App
Spring Boot + React Anwendung fuer die Bearbeitung von Milchproben, Antibiogrammen, Therapieempfehlungen sowie Verwaltungs- und Portalaufgaben.
Projektstruktur
backend/: Spring Boot REST API mit MongoDB-Anbindungfrontend/: React/Vite Frontend fuer Desktop und Tablet
Konfiguration
Die Anwendung liest Konfigurationswerte aus einer .env im Projektverzeichnis
oder aus Umgebungsvariablen.
Die lokale .env ist in .gitignore eingetragen und sollte nicht mit echten Zugangsdaten committed werden.
MongoDB:
MUH_MONGODB_URLMUH_MONGODB_USERNAMEMUH_MONGODB_PASSWORD
Optional fuer echten Mailversand im Portal:
MUH_MAIL_ENABLED=trueMUH_MAIL_FROM=...MUH_MAIL_HOST=...MUH_MAIL_PORT=587MUH_MAIL_USERNAME=...MUH_MAIL_PASSWORD=...MUH_MAIL_PROTOCOL=smtpMUH_MAIL_AUTH=trueMUH_MAIL_STARTTLS=true
Ohne SMTP-Konfiguration markiert das Portal Berichte als versendet, verschickt aber keine E-Mails.
Backend starten
cd backend
mvn spring-boot:run
Backend-URL:
http://localhost:8090
Frontend starten
cd frontend
npm install
npm run dev
Frontend-URL:
http://localhost:5173
Optional kann die API-URL im Frontend ueber VITE_API_URL gesetzt werden.
Docker Deployment
Produktions-Image bauen:
docker build -t muh-app .
Container starten:
docker run --rm --env-file .env -p 8090:8090 muh-app
Die Anwendung ist danach unter http://localhost:8090 erreichbar.
Hinweis:
- Das Dockerfile baut das React-Frontend und das Spring-Boot-Backend in einem Image.
- Das Frontend wird im Container direkt ueber Spring Boot ausgeliefert.
- API-Aufrufe laufen in Produktion relativ ueber
/api.
Anmeldung
Es gibt jetzt zwei Varianten:
- Login ueber E-Mail oder Benutzername plus Passwort
- Registrierung eines neuen Kundenkontos ueber Firmenname, Strasse, Hausnummer, PLZ, Ort, E-Mail und Passwort
Vordefinierter Admin:
- Benutzername:
admin - E-Mail:
admin@muh.local - Passwort:
Admin123!
Kundenregistrierung:
- Die Registrierungsdaten werden dauerhaft in MongoDB in der Collection
usersgespeichert. - Gespeichert werden
Firmenname,Adresse,E-Mail, Passwort-Hash, generierter Loginname und RolleCUSTOMER. - Nach erfolgreicher Registrierung erfolgt sofort die Anmeldung in der Anwendung.
Geprueft
cd backend && mvn testcd frontend && npm run build
Docker
docker buildx build --platform linux/amd64 -t gitea.appcreation.de/sven/muh:0.8.0 --push .
docker run -d --name muh --network br0 --ip 192.168.180.26 --restart unless-stopped -e MUH_MONGODB_URL=mongodb://192.168.180.25:27017/muh -e MUH_TOKEN_SECRET=local-dev-muh-token-secret-2026-03-13 -e MUH_TOKEN_VALIDITY_HOURS=12 -e MUH_ALLOWED_ORIGINS=https://muh.appcreation.de gitea.appcreation.de/sven/muh:0.8.0