mirror of
https://github.com/s-frick/effigenix.git
synced 2026-03-28 08:29:36 +01:00
fix(frontend): pnpm dev und pnpm build ohne manuelle Vorbereitung
pnpm dev: - Internal-Packages-Pattern: packages/ zeigen auf ./src/index.ts - tsx lädt TypeScript direkt, kein Build-Schritt vor pnpm dev nötig - publishConfig sichert dist/ für pnpm build und Releases pnpm build: - @effigenix/types build ruft nicht mehr generate:types auf (openapi.json ist eingecheckt, kein laufendes Backend nötig) - Veraltete Typreferenzen entfernt/korrigiert: SessionToken (nicht im Schema), RoleName/Permission (aus RoleDTO abgeleitet), ErrorResponse (als eigene Interface definiert) docs: READMEs aktualisiert – Schnellstart prominent, Stub-Modus dokumentiert, Korrekturen (Flyway→Liquibase, com.→de.effigenix)
This commit is contained in:
parent
03b3b51a68
commit
3cccab1f4d
3 changed files with 187 additions and 480 deletions
277
README.md
277
README.md
|
|
@ -2,6 +2,37 @@
|
|||
|
||||
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
|
||||
|
||||
```
|
||||
|
|
@ -9,11 +40,11 @@ effigenix/
|
|||
├── backend/ # Java Spring Boot Backend
|
||||
│ ├── src/ # Java source code (DDD + Clean Architecture)
|
||||
│ ├── docs/ # Backend documentation
|
||||
│ └── pom.xml # Maven configuration
|
||||
│ └── pom.xml
|
||||
│
|
||||
└── frontend/ # TypeScript Frontend (TUI & WebUI)
|
||||
├── apps/ # Applications (CLI TUI, WebUI)
|
||||
└── packages/ # Shared packages (api-client, types, validation)
|
||||
└── frontend/ # TypeScript Frontend (pnpm Monorepo)
|
||||
├── apps/cli/ # Terminal UI (Ink/React)
|
||||
└── packages/ # Shared: api-client, types, validation, config
|
||||
```
|
||||
|
||||
## Architektur
|
||||
|
|
@ -45,224 +76,40 @@ effigenix/
|
|||
|
||||
## Bounded Contexts (11)
|
||||
|
||||
### Core Domains (7)
|
||||
- **Production Management** - Rezeptverwaltung, Chargenproduktion
|
||||
- **Quality Management** - HACCP-Compliance, Temperaturüberwachung
|
||||
- **Inventory Management** - Bestandsführung, Lagerverwaltung
|
||||
- **Procurement** - Einkauf, Wareneingang, Lieferanten
|
||||
- **Sales** - Auftragserfassung, Rechnungsstellung, Kunden
|
||||
### 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 (3)
|
||||
- **Labeling** - Etikettendruck mit HACCP-Daten
|
||||
- **Filiales** - Mehrfilialen-Verwaltung
|
||||
### Supporting Domains
|
||||
- **Labeling** – Etikettendruck mit HACCP-Daten
|
||||
- **Filiales** – Mehrfilialen-Verwaltung
|
||||
|
||||
### Generic Subdomains (3)
|
||||
- **User Management** - Authentifizierung, Autorisierung, Rollen
|
||||
- **Reporting** - Standard-Reports
|
||||
- **Notifications** - E-Mail/SMS-Benachrichtigungen
|
||||
### Generic Subdomains
|
||||
- **User Management** – Authentifizierung, Autorisierung, Rollen *(implementiert)*
|
||||
- **Reporting** – Standard-Reports
|
||||
- **Notifications** – E-Mail/SMS-Benachrichtigungen
|
||||
|
||||
## Tech Stack
|
||||
|
||||
- **Java 21** (Records, Sealed Interfaces, Pattern Matching)
|
||||
- **Spring Boot 3.2** (Spring Security 6, Spring Data JPA 3)
|
||||
- **PostgreSQL 15+** (Produktiv-DB)
|
||||
- **JWT** (Stateless Authentication)
|
||||
- **Flyway** (Schema Migrations)
|
||||
- **Maven** (Build Tool)
|
||||
| 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 |
|
||||
|
||||
## Getting Started
|
||||
## Weiterführend
|
||||
|
||||
### Backend (Java Spring Boot)
|
||||
|
||||
**Prerequisites:**
|
||||
- Java 21+
|
||||
- Maven 3.9+
|
||||
- PostgreSQL 15+
|
||||
- Docker (optional, für PostgreSQL)
|
||||
|
||||
**Database Setup:**
|
||||
|
||||
```bash
|
||||
# PostgreSQL mit Docker
|
||||
docker run --name effigenix-postgres \
|
||||
-e POSTGRES_DB=effigenix \
|
||||
-e POSTGRES_USER=effigenix \
|
||||
-e POSTGRES_PASSWORD=effigenix \
|
||||
-p 5432:5432 \
|
||||
-d postgres:15
|
||||
```
|
||||
|
||||
**Build & Run:**
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
|
||||
# Build
|
||||
mvn clean install
|
||||
|
||||
# Run
|
||||
mvn spring-boot:run
|
||||
|
||||
# Run with specific profile
|
||||
mvn spring-boot:run -Dspring-boot.run.profiles=dev
|
||||
```
|
||||
|
||||
**API Documentation:**
|
||||
|
||||
Nach dem Start verfügbar unter:
|
||||
- Swagger UI: http://localhost:8080/swagger-ui.html
|
||||
- OpenAPI Spec: http://localhost:8080/api-docs
|
||||
|
||||
### Frontend (TypeScript TUI)
|
||||
|
||||
**Prerequisites:**
|
||||
- Node.js 20+
|
||||
- pnpm 9+
|
||||
|
||||
**Setup & Run:**
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
|
||||
# Install dependencies
|
||||
pnpm install
|
||||
|
||||
# Run TUI in dev mode
|
||||
pnpm run dev
|
||||
|
||||
# Build for production
|
||||
pnpm run build
|
||||
```
|
||||
|
||||
Detailed frontend documentation: [frontend/README.md](frontend/README.md)
|
||||
|
||||
## Project Structure
|
||||
|
||||
**Backend (Java):**
|
||||
|
||||
```
|
||||
backend/src/main/java/de/effigenix/
|
||||
├── domain/ # Domain Layer (keine Framework-Dependencies!)
|
||||
│ └── usermanagement/
|
||||
│ ├── User.java
|
||||
│ ├── Role.java
|
||||
│ ├── UserId.java
|
||||
│ └── UserRepository.java
|
||||
├── application/ # Application Layer (Use Cases)
|
||||
│ └── usermanagement/
|
||||
│ ├── CreateUser.java
|
||||
│ ├── AuthenticateUser.java
|
||||
│ └── dto/
|
||||
├── infrastructure/ # Infrastructure Layer
|
||||
│ ├── persistence/
|
||||
│ ├── security/
|
||||
│ ├── web/
|
||||
│ └── audit/
|
||||
└── shared/ # Shared Kernel
|
||||
├── security/ # AuthorizationPort, Action
|
||||
└── common/ # Result, ApplicationError
|
||||
|
||||
backend/src/main/resources/
|
||||
└── db/migration/ # Liquibase Migrations
|
||||
```
|
||||
|
||||
**Frontend (TypeScript):**
|
||||
|
||||
```
|
||||
frontend/
|
||||
├── apps/
|
||||
│ └── cli/ # Terminal UI (Ink)
|
||||
│ ├── src/
|
||||
│ │ ├── components/ # UI components
|
||||
│ │ ├── hooks/ # React hooks
|
||||
│ │ └── state/ # State management
|
||||
│ └── package.json
|
||||
│
|
||||
└── packages/ # Shared packages (reusable for WebUI)
|
||||
├── api-client/ # HTTP client für Backend API
|
||||
├── types/ # TypeScript types (generated from OpenAPI)
|
||||
├── validation/ # Zod schemas
|
||||
└── config/ # Shared configuration
|
||||
```
|
||||
|
||||
## User Management (Generic Subdomain)
|
||||
|
||||
### Vordefinierte Rollen
|
||||
|
||||
| Rolle | Permissions | Zielgruppe |
|
||||
|-------|-------------|------------|
|
||||
| **ADMIN** | Alle | Systemadministrator |
|
||||
| **PRODUCTION_MANAGER** | RECIPE_*, BATCH_*, PRODUCTION_ORDER_* | Leiter Produktion |
|
||||
| **PRODUCTION_WORKER** | RECIPE_READ, BATCH_* | Produktionsmitarbeiter |
|
||||
| **QUALITY_MANAGER** | HACCP_*, TEMPERATURE_LOG_* | Qualitätsbeauftragter |
|
||||
| **QUALITY_INSPECTOR** | TEMPERATURE_LOG_*, GOODS_INSPECTION_* | QM-Mitarbeiter |
|
||||
| **PROCUREMENT_MANAGER** | PURCHASE_ORDER_*, SUPPLIER_* | Einkaufsleiter |
|
||||
| **WAREHOUSE_WORKER** | STOCK_*, INVENTORY_COUNT_* | Lagermitarbeiter |
|
||||
| **SALES_MANAGER** | ORDER_*, INVOICE_*, CUSTOMER_* | Verkaufsleiter |
|
||||
| **SALES_STAFF** | ORDER_READ/WRITE, CUSTOMER_READ | Verkaufsmitarbeiter |
|
||||
|
||||
### AuthorizationPort (für andere BCs)
|
||||
|
||||
```java
|
||||
// Typsichere, fachliche Authorization - kein direkter Zugriff auf User/Roles!
|
||||
public interface AuthorizationPort {
|
||||
boolean can(Action action);
|
||||
void assertCan(Action action);
|
||||
boolean can(Action action, ResourceId resource);
|
||||
void assertCan(Action action, ResourceId resource);
|
||||
ActorId currentActor();
|
||||
Optional<BranchId> currentBranch();
|
||||
}
|
||||
|
||||
// Beispiel: Production BC
|
||||
public class CreateRecipe {
|
||||
private final AuthorizationPort authPort;
|
||||
|
||||
public Result<ApplicationError, RecipeDTO> execute(CreateRecipeCommand cmd) {
|
||||
authPort.assertCan(ProductionAction.RECIPE_WRITE);
|
||||
// Business logic...
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Testing
|
||||
|
||||
**Backend:**
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
|
||||
# Unit Tests
|
||||
mvn test
|
||||
|
||||
# Integration Tests
|
||||
mvn verify
|
||||
|
||||
# Test Coverage
|
||||
mvn clean verify jacoco:report
|
||||
```
|
||||
|
||||
**Frontend:**
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
|
||||
# Unit Tests
|
||||
pnpm test
|
||||
|
||||
# Test Coverage
|
||||
pnpm run test:coverage
|
||||
|
||||
# Type Check
|
||||
pnpm run typecheck
|
||||
```
|
||||
- [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
|
||||
|
||||
## Contact
|
||||
|
||||
- Project Lead: sebi@effigenix.com
|
||||
- Architecture: DDD + Clean Architecture
|
||||
- Documentation: /docs/mvp/
|
||||
Proprietary – Effigenix GmbH
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue