mirror of
https://github.com/s-frick/effigenix.git
synced 2026-03-28 06:29:35 +01:00
Effigenix ERP - Branchenlösung für lebensmittelverarbeitende KMUs
Stock.uniformUnitOfMeasure() gibt die UoM nur zurück wenn alle Chargen dieselbe Einheit haben, sonst Optional.empty(). StockResponse nutzt diese Methode statt blind die erste Charge zu nehmen. |
||
|---|---|---|
| .claude/skills | ||
| backend | ||
| docs/tickets | ||
| frontend | ||
| loadtest | ||
| prototype | ||
| scripts | ||
| .gitignore | ||
| CLAUDE.md | ||
| makefile | ||
| README.md | ||
| shell.nix | ||
| TODO.md | ||
Effigenix Fleischerei ERP
ERP-System für Fleischereien mit HACCP-Compliance, GoBD-konform, Mehrfilialen-Support.
Schnellstart
Backend
# PostgreSQL starten (Docker)
docker run --name effigenix-postgres \
-e POSTGRES_DB=effigenix \
-e POSTGRES_USER=effigenix \
-e POSTGRES_PASSWORD=effigenix \
-p 5432:5432 \
-d postgres:15
# Backend bauen & starten
cd backend
mvn spring-boot:run
Kein Docker? Das Backend startet auch ohne Datenbank im Stub-Modus (Warnlog erscheint). Die OpenAPI-Spec ist dann unter http://localhost:8080/api-docs abrufbar.
Frontend (Terminal UI)
cd frontend
pnpm install
pnpm dev # startet direkt, kein Build-Schritt nötig
Repository Structure
effigenix/
├── backend/ # Java Spring Boot Backend
│ ├── src/ # Java source code (DDD + Clean Architecture)
│ ├── docs/ # Backend documentation
│ └── pom.xml
│
└── frontend/ # TypeScript Frontend (pnpm Monorepo)
├── apps/cli/ # Terminal UI (Ink/React)
└── packages/ # Shared: api-client, types, validation, config
Architektur
Domain-Driven Design + Clean Architecture + Java 21 + Spring Boot
┌─────────────────────────────────────────────────────┐
│ Presentation (REST Controllers) │
└─────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────┐
│ Application Layer (Use Cases) │
│ - Transaction Script for Generic Subdomains │
│ - Rich Domain Model for Core Domains │
└─────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────┐
│ Domain Layer (DDD Tactical Patterns) │
│ - Aggregates, Entities, Value Objects │
│ - Domain Events, Repositories │
└─────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────┐
│ Infrastructure Layer │
│ - Spring, JPA, PostgreSQL, JWT, REST │
└─────────────────────────────────────────────────────┘
Bounded Contexts (11)
Core Domains
- Production Management – Rezeptverwaltung, Chargenproduktion
- Quality Management – HACCP-Compliance, Temperaturüberwachung
- Inventory Management – Bestandsführung, Lagerverwaltung
- Procurement – Einkauf, Wareneingang, Lieferanten
- Sales – Auftragserfassung, Rechnungsstellung, Kunden
Supporting Domains
- Labeling – Etikettendruck mit HACCP-Daten
- Filiales – Mehrfilialen-Verwaltung
Generic Subdomains
- User Management – Authentifizierung, Autorisierung, Rollen (implementiert)
- Reporting – Standard-Reports
- Notifications – E-Mail/SMS-Benachrichtigungen
Tech Stack
| Schicht | Technologie |
|---|---|
| Backend | Java 21, Spring Boot 3.2, Spring Security 6 |
| Datenbank | PostgreSQL 15+, Liquibase |
| Auth | JWT (JJWT), Stateless |
| Build | Maven |
| Frontend | TypeScript, React, Ink (TUI) |
| Packages | pnpm Workspaces, tsup, Zod, Axios |
Weiterführend
License
Proprietary – Effigenix GmbH