A production-ready Inventory Management System built with ASP.NET Core MVC (.NET 8), Entity Framework Core, and MySQL.
Includes Identity (auth), role-based access (Admin / Supplier / User), image uploads (stored as byte[]), low-stock + activity notifications, and Excel export.
- Auth & Users (Microsoft Identity) — register/login, password hashing, cookie auth
- Roles
- Admin: full CRUD on Products, Categories, Suppliers, Inventories; assign roles
- Supplier: add products; choose inventory & category
- Registered User: read-only tables & details
- Inventory Ops — CRUD, stock checks, low-quantity alerts
- File Uploads & Images — validate & store as byte[] in DB
- Notifications — on low stock and CRUD (add/edit/delete)
- Export — download entities (e.g., Products) to Excel (.xlsx)
- Framework: ASP.NET Core MVC (.NET 8)
- ORM: Entity Framework Core
- Database: MySQL 8.x (InnoDB)
- Auth: ASP.NET Core Identity (roles + policies)
- Excel: EPPlus or ClosedXML
- Docs: Swagger (optional)
Admin
- Full CRUD on all entities
- Assign/reassign roles
Supplier
- Create products; select inventory & category
Registered User
- Read-only access to tables and details
Authorization is enforced via policies/attributes on controllers/actions and in views.
- Export product (and other entity) lists to
.xlsxwith headers & basic formatting - Example route (adjust to your controller):
GET /Products/Export→ downloadsproducts.xlsx - Libraries: EPPlus or ClosedXML
- Low stock: triggered when quantity < threshold (configurable)
- Activity: on product create / update / delete
- Display as UI toasts/alerts or persist in a log table for auditing
flowchart LR
UI[ASP.NET Core MVC Views] --> Svc[Domain Services]
Svc --> UoW[Unit of Work]
UoW --> Repo[(Repositories)]
Repo --> DB[(MySQL)]
UI --> Identity[ASP.NET Identity]
Svc --> Files["Image Storage as byte[]"]
Svc --> Notif[Notification Service]