A Blazor + ASP.NET Core product operations dashboard for managing product records, inventory, search, analytics, and export workflows.
The current database implementation uses MongoDB, but the application is structured behind a repository interface so another database provider can be added later without rewriting the UI or controller layer.
Product Operations Manager was built to streamline product catalog management, inventory tracking, and export workflows through a single dashboard interface.
- Full walkthrough video available in the Releases section.
- Product CRUD
- Search and filtering
- Dashboard metrics
- CSV export
- JSON export
- MongoDB persistence
- Product detail views
- Repository-based data access
- Configurable database provider architecture
Product Operations Manager is a portfolio-ready internal business tool designed to demonstrate practical full-stack development through a real-world product management workflow.
This application provides:
- Product CRUD (Create / Read / Update / Delete)
- Product search and filtering
- Inventory and category statistics
- Product detail views
- JSON / CSV export
- Blazor dashboard UI
- Configurable database provider pattern
- MongoDB persistence as the first provider
- .NET SDK
- MongoDB
- Visual Studio or VS Code
dotnet restore
dotnet build
dotnet runpowershell -ExecutionPolicy Bypass -File .\scripts\seed-sample-products.ps1After running the script:
- Launch the application
- Open the dashboard
- Sample records should appear automatically
- View all products
- Search products by keyword
- Review inventory overview
- Monitor category metrics
- Export product data
- Add new products
- Edit existing products
- View full product details
- Total products
- Active vs inactive products
- Inventory totals
- Category counts
- Average pricing
- Export all products to JSON
- Export all products to CSV
This project includes a PowerShell seed script that inserts sample product data into MongoDB through the API.
- MongoDB running locally
- ASP.NET application running
- PowerShell 5+ or PowerShell Core
From the project directory:
cd src/ProductOperationsManager
dotnet restore
dotnet runDefault API URL:
http://localhost:5212From the repository root:
.\scripts\seed-sample-products.ps1The seed script:
- Creates sample product records
- Sends data to the Products API
- Populates MongoDB with demo data for testing and screenshots
If needed, update the API URL inside:
scripts/seed-sample-products.ps1to match your local environment.
- Launch the Blazor application
- View the product dashboard
- Search/filter products
- Open a product details page
- Edit a product
- Save changes to MongoDB
- Create a new product
- Export or review updated data
Show a complete CRUD workflow in under 60 seconds.
Additional documentation is available in the docs/ folder.
docs/architecture.md— application structure and data flow
- Blazor Server
- Razor Pages
- HTML / CSS
- ASP.NET Core
- C#
- RESTful API Controllers
- Repository pattern for database access
- MongoDB current provider
- Provider abstraction prepared for future database implementations
ProductOperationsManager/
├── README.md
├── LICENSE
├── appsettings.example.json
├── assets/
│ └── screenshots/
└── src/
├── ProductOperationsManager/
│ ├── Controllers/
│ ├── Data/
│ ├── Options/
│ ├── Repositories/
│ ├── Shared/
│ ├── wwwroot/
│ ├── Program.cs
│ └── ProductOperationsManager.csproj
└── ProductOperationsManager.Tests/Copy the example settings file and create your local settings file:
cp src/ProductOperationsManager/appsettings.example.json src/ProductOperationsManager/appsettings.jsonExample:
{
"App": {
"BaseUrl": "http://localhost:5212/"
},
"Database": {
"Provider": "MongoDb"
},
"MongoDb": {
"ConnectionString": "mongodb://localhost:27017",
"DatabaseName": "ProductOperationsDemo",
"ProductsCollection": "products"
}
}appsettings.json is intentionally ignored so local connection details are not committed.
The controller depends on IProductRepository, not MongoDB directly.
Current implementation:
IProductRepository
└── MongoProductRepositoryTo add another database later, create a new repository class such as:
SqlProductRepository : IProductRepositoryThen register that provider in Program.cs.
This project is intended to demonstrate:
- Full-stack C# / Blazor development
- API-backed UI workflows
- Practical product operations tooling
- Database-backed CRUD
- Clean repository abstraction
- Export and reporting features
- Configurable database provider architecture
MIT
The project includes MSTest-based unit tests covering ProductService behavior.
- Product creation
- Product retrieval
- Product updates
- Product deletion
- Product search
- Success and failure API responses
dotnet testGitHub Actions automatically restores, builds, and runs the test suite on every push and pull request.




