Skip to content
nkwakamPublic

About

Lagerverwaltung mit nachvollziehbaren Buchungen – .NET 10, EF Core, SQL Server

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

MiniWaWi – Lagerverwaltung mit nachvollziehbaren Buchungen

CI

Kleine Warenwirtschaft als Lern- und Portfolio-Projekt: Artikel, Lager, Wareneingang, Warenausgang und automatische Bestellvorschläge. Schwerpunkt ist ein sauberes, testbares Datenmodell statt möglichst vieler Masken.

Technik: .NET 10 · ASP.NET Core Minimal API · OpenAPI/Scalar · EF Core · SQL Server · xUnit · GitHub Actions

Was das Projekt zeigt

Entscheidung Warum
Bestand = Summe der Lagerbuchungen. Buchungen werden nie geändert oder gelöscht. Jede Bestandsänderung bleibt nachvollziehbar; es gibt kein Mengenfeld, das „einfach überschrieben“ wird.
Fachregeln in einer eigenen Schicht (MiniWaWi.Domain) ohne Datenbankabhängigkeit Die Regeln lassen sich schnell und vollständig mit Unit-Tests prüfen.
Kein negativer Bestand: Warenausgang wird geprüft und in einer serialisierbaren Transaktion gebucht Zwei gleichzeitige Abgänge können denselben Bestand nicht doppelt verbrauchen.
Bestellvorschlag: bei Bestand ≤ Mindestbestand mindestens die Bestellmenge, bei großem Fehlbestand bis Mindestbestand + Bestellmenge Klare, getestete Regel statt Bauchgefühl.
Fehler als Problem Details (RFC 9110): Regelverletzungen liefern 400 mit verständlicher Meldung Clients sehen warum eine Buchung abgelehnt wurde.

Aufbau

src/
  MiniWaWi.Domain          Artikel, Lager, Lagerbuchungen, Bestellvorschläge (keine Abhängigkeiten)
  MiniWaWi.Infrastructure  EF Core: Datenbankmodell und Bestandsabfragen
  MiniWaWi.Api             HTTP-Schnittstelle
tests/
  MiniWaWi.Domain.Tests    Unit-Tests der Fachregeln

Starten

Voraussetzungen: .NET 10 SDK und ein SQL Server – am einfachsten LocalDB (bei Visual Studio dabei) oder Docker.

Mit LocalDB:

dotnet user-secrets set "ConnectionStrings:WaWi" "Server=(localdb)\MSSQLLocalDB;Database=MiniWaWi;Trusted_Connection=True" --project src/MiniWaWi.Api
dotnet run --project src/MiniWaWi.Api

Mit Docker: .env.example nach .env kopieren, Kennwort setzen, dann

docker compose up -d
dotnet user-secrets set "ConnectionStrings:WaWi" "Server=localhost,1433;Database=MiniWaWi;User Id=sa;Password=<Kennwort aus .env>;TrustServerCertificate=True" --project src/MiniWaWi.Api
dotnet run --project src/MiniWaWi.Api

Die Datenbank wird beim ersten Start in der Entwicklungsumgebung angelegt. Danach öffnet http://localhost:5230 die interaktive API-Dokumentation (Scalar), in der sich alle Endpunkte direkt ausprobieren lassen. Beispielaufrufe stehen außerdem in MiniWaWi.Api.http.

Tests: dotnet test

Schnittstelle

Methode Pfad Zweck
GET / POST /articles Artikel auflisten / anlegen
GET / POST /warehouses Lager auflisten / anlegen
POST /stock/receipts Wareneingang buchen
POST /stock/issues Warenausgang buchen (prüft Bestand)
GET /stock/{articleId}/{warehouseId} Bestand eines Artikels in einem Lager
GET /reorder-suggestions Bestellvorschläge

Nächste Schritte

  • Integrationstests der API gegen eine echte Datenbank (Testcontainers)
  • EF-Core-Migrationen statt EnsureCreated
  • Umlagerung zwischen Lagern als eine Buchung mit zwei Bewegungen
  • Inventur mit Differenzbuchung
  • Belegfluss: Auftrag → Lieferschein → Rechnung
  • Bewertung nach FIFO
  • Oberfläche (Blazor)

Lizenz

MIT

About

Lagerverwaltung mit nachvollziehbaren Buchungen – .NET 10, EF Core, SQL Server

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages