# Powder Coating Management System A comprehensive ASP.NET Core MVC application for managing powder coating operations, including customer management, job tracking, quoting, inventory, equipment maintenance, and shop floor display. ## ๐ŸŽฏ Features ### Core Modules - **Customer Management** - Track customer information, pricing tiers, and contact history - **Job Management** - Complete job lifecycle from creation to completion - **Quoting System** - AI-powered quote generation for commercial and non-commercial jobs - **Inventory Management** - Powder coating materials, supplies, and reorder alerts - **Equipment & Maintenance** - Equipment tracking and maintenance scheduling - **Shop Floor Display** - Real-time job board for production floor (SignalR) - **Multi-User Support** - Role-based access with customizable user preferences ### Technical Features - Clean Architecture with separation of concerns - ASP.NET Core MVC 8.0 with Identity - Entity Framework Core with SQL Server - RESTful API for mobile applications - JWT authentication for API - Real-time updates with SignalR - AI integration ready (ML.NET, Semantic Kernel, OpenAI) - Comprehensive logging with Serilog - Unit and Integration testing ## ๐Ÿ“‹ Prerequisites - .NET 10.0 SDK or later - SQL Server 2019 or later (or SQL Server Express/LocalDB) - Visual Studio 2022 (version 17.12 or later) or VS Code - Node.js (optional, for frontend tooling) ## ๐Ÿš€ Getting Started ### 1. Clone the Repository ```bash git clone cd PowderCoatingApp ``` ### 2. Update Database Connection String Update the connection string in both: - `src/PowderCoating.Web/appsettings.json` - `src/PowderCoating.Api/appsettings.json` ```json "ConnectionStrings": { "DefaultConnection": "Server=YOUR_SERVER;Database=PowderCoatingDb;Trusted_Connection=true;MultipleActiveResultSets=true" } ``` For Azure SQL or SQL Server Authentication: ```json "DefaultConnection": "Server=YOUR_SERVER;Database=PowderCoatingDb;User Id=YOUR_USER;Password=YOUR_PASSWORD;MultipleActiveResultSets=true;TrustServerCertificate=true" ``` ### 3. Apply Database Migrations From the solution root directory: ```bash # Set the startup project cd src/PowderCoating.Web # Add initial migration (if needed) dotnet ef migrations add InitialCreate --project ../PowderCoating.Infrastructure --startup-project . # Update database dotnet ef database update --project ../PowderCoating.Infrastructure --startup-project . ``` ### 4. Run the Applications #### Web Application (MVC) ```bash cd src/PowderCoating.Web dotnet run ``` Navigate to: `https://localhost:7001` (or the port shown in console) Default admin login: - Email: `admin@powdercoating.com` - Password: `Admin123!` #### API (for Mobile) ```bash cd src/PowderCoating.Api dotnet run ``` Navigate to: `https://localhost:7002` (API documentation via Swagger) ### 5. Configure AI Features (Optional) To enable AI-powered quoting features: 1. Get an OpenAI API key from https://platform.openai.com 2. Update `appsettings.json`: ```json "AI": { "OpenAI": { "ApiKey": "your-api-key-here", "Model": "gpt-4", "Endpoint": "https://api.openai.com/v1" } } ``` ## ๐Ÿ“ Project Structure ``` PowderCoatingApp/ โ”œโ”€โ”€ src/ โ”‚ โ”œโ”€โ”€ PowderCoating.Core/ # Domain entities, enums, interfaces โ”‚ โ”œโ”€โ”€ PowderCoating.Application/ # Business logic, DTOs, services โ”‚ โ”œโ”€โ”€ PowderCoating.Infrastructure/ # Data access, repositories, DbContext โ”‚ โ”œโ”€โ”€ PowderCoating.Web/ # MVC web application โ”‚ โ”œโ”€โ”€ PowderCoating.Api/ # RESTful API for mobile โ”‚ โ””โ”€โ”€ PowderCoating.Shared/ # Shared constants and utilities โ”œโ”€โ”€ tests/ โ”‚ โ”œโ”€โ”€ PowderCoating.UnitTests/ โ”‚ โ””โ”€โ”€ PowderCoating.IntegrationTests/ โ””โ”€โ”€ docs/ ``` ## ๐Ÿ—๏ธ Architecture The application follows Clean Architecture principles: - **Domain Layer (Core)**: Contains enterprise business rules and entities - **Application Layer**: Contains application business rules and use cases - **Infrastructure Layer**: Contains data access and external service implementations - **Presentation Layer**: Web (MVC) and API projects ### Key Design Patterns - Repository Pattern - Unit of Work Pattern - Dependency Injection - Options Pattern for Configuration - CQRS-lite (separate read/write operations where beneficial) ## ๐Ÿ” Security - ASP.NET Core Identity for authentication - JWT tokens for API authentication - Role-based authorization - Claims-based authorization for fine-grained permissions - Password requirements enforced - HTTPS enforced in production ### Default Roles - **Administrator**: Full system access - **Manager**: Manage operations, approve quotes - **Employee**: Create jobs, quotes, update inventory - **ShopFloor**: View and update job status - **ReadOnly**: View-only access ## ๐Ÿ“ฑ Mobile API The API provides endpoints for: - Authentication (login, register, refresh token) - Jobs (CRUD, status updates) - Customers (CRUD) - Inventory (view, transactions) - Shop floor display data ### API Documentation When running the API, access Swagger documentation at the root URL (e.g., `https://localhost:7002`) ### Sample API Request ```bash # Login curl -X POST https://localhost:7002/api/auth/login \ -H "Content-Type: application/json" \ -d '{ "email": "admin@powdercoating.com", "password": "Admin123!" }' # Get Jobs (with token) curl -X GET https://localhost:7002/api/jobs \ -H "Authorization: Bearer YOUR_TOKEN_HERE" ``` ## ๐ŸŽจ Customization ### User Preferences Each user can customize: - Theme (light/dark) - Date format - Time zone - Dashboard layout - Feature visibility ### Application Settings Configure in `appsettings.json`: - Company information - Default quote validity - Payment terms - Tax rates - Labor rates - AI settings ## ๐Ÿงช Testing Run unit tests: ```bash dotnet test tests/PowderCoating.UnitTests ``` Run integration tests: ```bash dotnet test tests/PowderCoating.IntegrationTests ``` Run all tests: ```bash dotnet test ``` ## ๐Ÿ“Š Database Schema Key tables: - **Customers**: Customer information and settings - **Jobs**: Job tracking and management - **JobItems**: Individual items within jobs - **Quotes**: Quote generation and tracking - **QuoteItems**: Line items in quotes - **InventoryItems**: Material and supply inventory - **Equipment**: Equipment tracking - **MaintenanceRecords**: Maintenance history - **AspNetUsers**: User accounts and preferences ## ๐Ÿ”„ Shop Floor Display The shop floor display provides real-time job status updates using SignalR: 1. Navigate to `/ShopFloor/Display` 2. Jobs are automatically updated as status changes 3. Color-coded by priority 4. Filterable by status ## ๐Ÿค– AI Features The system includes hooks for: - **ML.NET**: Price prediction based on historical data - **Semantic Kernel**: AI orchestration for complex workflows - **OpenAI Integration**: Intelligent quoting suggestions and job complexity analysis ## ๐Ÿ“ˆ Future Enhancements Planned features: - [ ] Barcode/QR code generation for job tracking - [ ] Email notifications for quote approvals - [ ] Mobile apps (iOS/Android) - [ ] Advanced reporting and analytics - [ ] Customer portal - [ ] Photo upload for jobs - [ ] Time tracking integration - [ ] Integration with accounting systems - [ ] Advanced AI pricing optimization ## ๐Ÿ› Troubleshooting ### Database Connection Issues - Verify SQL Server is running - Check connection string format - Ensure database exists or migrations have been applied - Check firewall settings ### Migration Issues ```bash # Reset database (WARNING: deletes all data) dotnet ef database drop --project src/PowderCoating.Infrastructure --startup-project src/PowderCoating.Web dotnet ef database update --project src/PowderCoating.Infrastructure --startup-project src/PowderCoating.Web ``` ### Port Conflicts Update ports in `launchSettings.json` files if default ports are in use. ## ๐Ÿ“ License [Your License Here] ## ๐Ÿ‘ฅ Contributing [Your contribution guidelines] ## ๐Ÿ“ง Support For support and questions: [Your contact information] --- Built with โค๏ธ using ASP.NET Core 10.0