- Expanded IMoonrakerClient interface with 6 strongly-typed methods:
- GetServerInfoAsync (Moonraker /server/info)
- IsReachableAsync (connectivity check)
- GetPrinterInfoAsync (Moonraker /printer/info)
- GetPrintHistoryAsync (Moonraker /server/history/items)
- GetPrintStatsAsync (Moonraker /printer/objects/query?print_stats)
- GetDisplayStatusAsync (Moonraker /printer/objects/query?display_status)
- GetFilamentUsageAsync (retained for backward compatibility)
- Created Domain/DTOs/Moonraker/ with 7 DTOs:
- MoonrakerServerInfo, MoonrakerPrinterInfo, MoonrakerPrintJob
- MoonrakerHistoryResponse, MoonrakerPrintStats
- MoonrakerDisplayStatus, MoonrakerRequest
- Updated MoonrakerClient implementation to support all new methods
with proper JSON parsing and mapping helpers
- Full XML doc comments on all public members
- Backend Dockerfile: added curl install for health check (not in aspnet base image)
- Frontend Dockerfile: multi-stage Angular build with nginx serving
- Frontend nginx.conf: SPA routing, API proxy, SignalR WebSocket support, health endpoint
- Frontend .dockerignore: excludes node_modules, dist, .angular, etc.
- docker-compose.dev.yml: added PostgreSQL service, fixed frontend context path,
renamed web service from control-center-web to extrudex-web, added DB env vars,
proper service dependencies with health checks
- deploy.sh: updated service list to include PostgreSQL port
- Add FluentValidation validators for CreateFilamentRequest and UpdateFilamentRequest
with comprehensive validation rules (required fields, string lengths, hex color format,
weight constraints including WeightRemainingGrams <= WeightTotalGrams, purchase price range)
- Add FluentValidationFilter action filter that auto-runs FluentValidation validators
for all API controller actions before execution, returning 400 with structured error details
- Register FluentValidationFilter in DI and add it to MVC controller filters in Program.cs
- PUT endpoint was already implemented in FilamentsController with proper validation,
404 handling, FK existence checks, serial uniqueness check, and weight constraint check
- This change ensures FluentValidation rules are enforced consistently via the pipeline