# Effigenix Fleischerei ERP

ERP-System für Fleischereien mit HACCP-Compliance, GoBD-konform, Mehrfilialen-Support.

## Schnellstart

### Backend

```bash
# 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)

```bash
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

- [Backend README](backend/README.md)
- [Frontend README](frontend/README.md)
- [Quick Start (Detail)](backend/docs/QUICK_START.md)
- [User Management](backend/docs/USER_MANAGEMENT.md)

## License

Proprietary – Effigenix GmbH
