Eine moderne WPF-Anwendung für das Tracking und Management von Frachtgütern, entwickelt mit .NET 8 und basierend auf Domain-Driven Design Prinzipien.
Das Cargo Shipping Management System ist eine umfassende Lösung für die Verwaltung von Frachtgütern in der Schifffahrt. Die Anwendung ermöglicht das Tracking von Sendungen, die Registrierung von Handling-Events und die Verwaltung von Stammdaten wie Standorten und Reisen.
Das Projekt folgt einer sauberen, geschichteten Architektur:
CargoShipping/
|-- CargoShipping.Domain/ # Domain-Entitäten und Geschäftslogik
|-- CargoShipping.Application/ # Anwendungslogik und Services
|-- CargoShipping.Infrastructure/ # Infrastruktur und Datenzugriff
|-- CargoShipping.GrpcService/ # gRPC Service
|-- CargoShipping.Tests/ # Unit Tests
`-- CargoShipping/ # WPF Client-Anwendung
- Cargo Tracking: Suche und Verfolgung von Sendungen über Tracking-ID
- Cargo Erstellung: Erstellung neuer Sendungen mit Origin, Destination und Deadline
- Status-Übersicht: Vollständige Übersicht aller Sendungen in einer DataGrid-Ansicht
- Handling Events: Registrierung von Events (RECEIVE, LOAD, UNLOAD, CLAIM, CUSTOMS)
- Event-Historie: Vollständige Nachverfolgung aller Events pro Sendung
- Status-Updates: Automatische Aktualisierung des Cargo-Status basierend auf Events
- Locations: Verwaltung von Standorten mit UN/LOCODE
- Voyages: Verwaltung von Reisen und Routen
- Real-time Updates: Live-Aktualisierung aller Daten
- .NET 8: Moderne .NET Framework Version
- WPF: Windows Presentation Foundation für die Benutzeroberfläche
- C# 12: Neueste C# Sprachfeatures
- gRPC: Für Service-Kommunikation
- xUnit: Unit Testing Framework
- Clean Architecture: Saubere Trennung der Schichten
Das System basiert auf einem reichhaltigen Domain-Modell:
- Cargo: Hauptentität mit TrackingId, RouteSpecification, Itinerary
- HandlingEvent: Events mit Typ, Zeit, Ort und Voyage-Referenz
- Location: Standorte mit UN/LOCODE Standard
- Voyage: Reisen mit Zeitplan (Schedule)
- Itinerary: Reiseroute mit mehreren Legs
- TrackingId: Eindeutige Sendungsidentifikation
- LocationRef: Standort-Referenz
- RouteSpecification: Route-Spezifikation mit Origin, Destination, Deadline
- HandlingType: RECEIVE, LOAD, UNLOAD, CLAIM, CUSTOMS
- TransportStatus: NOT_RECEIVED, IN_PORT, ONBOARD_CARRIER, CLAIMED, UNKNOWN
- Visual Studio 2022 oder höher
- .NET 8 SDK
- Windows 10/11
- Repository klonen:
git clone https://github.com/MarkoBaru/CargoShippingManagementSystem.git
- Solution öffnen:
cd CargoShippingManagementSystem
start CargoShipping.sln
- Dependencies wiederherstellen:
dotnet restore
- Projekt builden:
dotnet build
- Anwendung starten:
dotnet run --project CargoShipping
- Suche: Geben Sie eine Tracking-ID in das Suchfeld ein
- Details: Klicken Sie auf ein Cargo in der Liste für Details
- Erstellung: Nutzen Sie "Create New Cargo" für neue Sendungen
- Wählen Sie das entsprechende Tab "Handling Events"
- Füllen Sie alle Felder aus (Tracking-ID, Event-Typ, Location, Zeit)
- Klicken Sie "Register Event" zum Speichern
- Locations: Fügen Sie neue Standorte mit UN/LOCODE hinzu
- Voyages: Erstellen Sie neue Reisen mit Voyage-Nummer
Die Hauptansicht bietet eine intuitive Oberfläche für das Cargo-Tracking mit Suchfunktion und Detailansicht.
Vollständige Tabelle aller Sendungen mit Status, aktueller Position und ETA.
Registrierung und Übersicht aller Handling-Events mit Zeitstempel.
Verwaltung von Standorten und Reisen für die Stammdatenpflege.
Das Projekt enthält umfassende Unit Tests:
# Alle Tests ausführen
dotnet test
# Tests mit Coverage
dotnet test --collect:"XPlat Code Coverage"
Die Anwendung stellt gRPC Services für externe Integration bereit:
- CargoService: CRUD-Operationen für Cargo
- LocationService: Standort-Management
- EventService: Event-Registrierung
Beiträge sind willkommen! Bitte beachten Sie:
- Fork das Repository
- Erstellen Sie einen Feature Branch (
git checkout -b feature/AmazingFeature
) - Committen Sie Ihre Änderungen (
git commit -m 'Add some AmazingFeature'
) - Push zum Branch (
git push origin feature/AmazingFeature
) - Öffnen Sie einen Pull Request
- Verwenden Sie C# Naming Conventions
- Befolgen Sie SOLID Prinzipien
- Schreiben Sie Unit Tests für neue Features
- Dokumentieren Sie öffentliche APIs
CargoShipping/
|
|-- CargoShipping/ # WPF Client Application
| |-- MainWindow.xaml # Hauptfenster
| |-- CreateCargoDialog.xaml # Dialog für neue Sendungen
| `-- RegisterEventDialog.xaml # Dialog für Event-Registrierung
|
|-- CargoShipping.Domain/ # Domain Layer
| |-- Cargo.cs # Hauptentität
| |-- HandlingEvent.cs # Event-Entität
| |-- Location.cs # Standort-Entität
| |-- Voyage.cs # Reise-Entität
| `-- ValueObjects.cs # Value Objects
|
|-- CargoShipping.Application/ # Application Layer
| |-- Contracts/ # Interfaces
| `-- Services/ # Application Services
|
|-- CargoShipping.Infrastructure/ # Infrastructure Layer
| `-- (Repository Implementierungen)
|
|-- CargoShipping.GrpcService/ # gRPC Service
| `-- (Service Implementierungen)
|
`-- CargoShipping.Tests/ # Unit Tests
`-- (Test Klassen)
- Cargo Creation: Benutzer erstellt neue Sendung über WPF UI
- Event Registration: Handling Events werden registriert und aktualisieren Cargo Status
- Tracking: Real-time Verfolgung des Cargo-Status über alle Events
- Reporting: Vollständige Historie und aktuelle Status-Informationen
Event Type | Resultierender Status |
---|---|
RECEIVE | IN_PORT |
LOAD | ONBOARD_CARRIER |
UNLOAD | IN_PORT |
CLAIM | CLAIMED |
CUSTOMS | IN_PORT |
Dieses Projekt steht unter der MIT Lizenz - siehe LICENSE Datei für Details.
- Marko Baru - Initial work - MarkoBaru
- Domain-Driven Design Patterns von Eric Evans
- Clean Architecture von Robert C. Martin
- .NET Community für Inspiration und Support
Bei Fragen oder Problemen:
- Öffnen Sie ein Issue auf GitHub
- Kontaktieren Sie das Entwicklerteam
Entwickelt mit Leidenschaft und .NET 8