# Indotalent WHMS is a headless inventory API with a Razor Pages UI bolted on

> The Asp.Net-Core-Inventory-Order-Management-System repository, presented as Indotalent WHMS, is a .NET 9 warehouse management system built as a headless ASP.NET Core API with Clean Architecture, CQRS, MediatR and EF Core, fronted by Razor Pages and Vue.js. It fits a team that wants a working WMS to study or extend, and it does not fit a shop that needs multi-warehouse allocation or tax handling beyond basic configuration.

**go2ismail/Asp.Net-Core-Inventory-Order-Management-System** — Now upgraded to .NET 9, this project is a super-fast, completely headless API powered by Clean Architecture, CQRS, and MediatR. It includes an ASP.NET Core Razor Pages implementation for inventory order management, combined with Vue.js for a dynamic, responsive UI. Powerful WMS solution. Demo (username:admin@root.com / pwd:123456)

- Repository: https://github.com/go2ismail/Asp.Net-Core-Inventory-Order-Management-System
- Website: https://whms-lte-fs.csharpasp.net/
- Stars: 1,297 · Forks: 662
- Language: C#
- License: NOASSERTION
- Published: 2026-10-19 · Updated: 2026-10-19 · Language: en
- Canonical page: https://hysenlabs.com/projects/go2ismail-asp-net-core-inventory-order-management-system

## The architecture is a headless API with a second UI project on top

The repository presents itself as the Warehouse Inventory Management System, WHMS, an inventory and order management system for the .NET stack. The description states it is a super-fast, completely headless API powered by Clean Architecture, CQRS and MediatR, and that it includes an ASP.NET Core Razor Pages implementation for inventory order management combined with Vue.js for a dynamic, responsive UI.

The two-part shape is worth parsing, because the naming is confusing at first. The back end is a headless API, and the front end is a separate ASP.NET Core Razor Pages application. The backend stack is Clean Architecture, CQRS with MediatR, the Repository Pattern, Entity Framework Core for data access, AutoMapper for object mapping, FluentValidation for input validation, Serilog for logging, support for file uploads and downloads of images and documents, and ASP.NET Identity with JWT for authentication and authorization.

The front end uses Razor Pages with Syncfusion community edition UI components, Vue.js for dynamic interactivity without a build system, Axios for API communication, and the AdminLTE template for the responsive layout.

The solution file is named Indotalent.sln and the top level holds Core/, Infrastructure/ and Presentation/ directories, which is the Clean Architecture layering expressed as physical projects. There is also a Dockerfile, a docker-compose.yml and a README_DOCKER_DEPLOYMENT.md. The default branch is ASP.NET-9.0, and the last push was on 2026-07-24, with releases v9.20250118 for ASP.NET Core 9.0 and v8.2024.03.31 for 8.0.

## The document set is the actual domain model of a warehouse

The functional feature list is the best available description of what the system does, and it reads as a warehouse management system rather than a toy.

The transaction documents are the core. Sales, Purchase, Delivery and Goods Receive cover the inbound and outbound flows. Transfer, Adjustment, Return and Scrapping cover the exceptions, and Stock Count covers the physical inventory reconciliation. That set is what separates a WMS from a simple order system: a system that only does sales and purchase cannot tell you why the shelf count differs from the system count.

Around that sit the master data modules. Customer Management covers customer groups, categories, details and contacts, and Vendor Management mirrors it for suppliers. Warehouse Operations holds unit measure, product group and products, plus the movement documents.

Reporting covers transaction, stock and movement reports. System Settings holds company settings, tax configuration, user management, and a number sequence module for systematic tracking, which is the piece that generates document numbers and is a common source of pain in this class of software. Analytics and Logs cover error logs and analytic logs, and Authentication and Membership adds role-based access control on top of the ASP.NET Identity setup.

The scope is a single-warehouse system. The feature list does not mention multi-site or multi-warehouse allocation, lot or serial number traceability, barcoded picking, or cycle counting, and for a warehouse management product those are not small omissions.

## The Docker path is two services, SQL Server Express and the API

The repository ships a Dockerfile and a docker-compose.yml, and the compose file is short enough to read in full, which is unusual and useful.

There are two services on a bridge network called wms-network. The database service is SQL Server Express 2022, mcr.microsoft.com/mssql/server:2022-express, with the SA password set to YourStrong!Passw0rd and ACCEPT_EULA set to Y, a named volume mssql_data_wms mounted at /var/opt/mssql, and a healthcheck that runs sqlcmd against a SELECT 1 query. The api service builds from the local Dockerfile, maps port 5000, sets ASPNETCORE_ENVIRONMENT to Docker, depends on the database with the condition service_healthy, and mounts an app_data_wms volume at /app/wwwroot/app_data for the file upload support.

The Dockerfile is a two-stage build. The build stage uses the .NET 9 SDK image, copies the source, runs dotnet restore, and publishes Presentation/ASPNET/ASPNET.csproj with Release configuration into /app. The runtime stage uses the .NET 9 ASP.NET image, copies the published output, exposes port 5000, sets ASPNETCORE_ENVIRONMENT=Docker, and runs dotnet ASPNET.dll as the entrypoint.

The healthcheck with a service_healthy dependency is what makes the compose file reliable rather than racy. The API will not start until SQL Server answers a query, which avoids the classic first-run failure where the application starts before the database is accepting connections.

## Running it in Visual Studio means editing one connection string

The Visual Studio path is the one the README leads with, and it is short: open the project in Visual Studio, update the connection string in appsettings.json to match your SQL Server database, clean and build the solution, and press run.

The note that follows is the part that matters for a first run: the database will be created automatically if it does not exist. That is EF Core migrations applied at startup, and it removes the usual first-time setup step.

There is also an IIS deployment path. You publish the project to a folder, copy the published files to your IIS directory, configure IIS to point at the folder and ensure database connectivity, with the README pointing at Microsoft's own IIS deployment documentation for the details.

The choice of the .NET SDK and Visual Studio as the primary path is worth noting for anyone on Linux or macOS. The repository has a Dockerfile and a compose file, so a container workflow works, but the documented developer experience is Windows-only, and the frontend's no-build-system approach with Vue.js served from disk is tuned to that. That no-build choice is a genuine design decision rather than an oversight: the README stresses that even though the project uses a modern JavaScript framework like Vue.js, it does not require a build system, so you can just use Visual Studio to run and build it.

## Monolithic Clean Architecture is defended in the README, and it has a cost

The README spends a section arguing for the Monolithic Clean Architecture approach, and the argument is about dependency management. It says that keeping all components within a single codebase streamlines dependency management and eliminates the risk of a dependency nightmare, that this consolidates all dependencies in one place for compatibility and coherence, and that it simplifies deployment since all code resides in a single repository with a well-optimised pipeline.

The deployment claim is verifiable from the compose file: one api container and one database container, and the API image contains both the API and the Razor Pages front end, since the Dockerfile publishes the ASPNET project which includes the Presentation layer. That is a genuinely simpler deployment than separate API and frontend deployments.

The cost is that headless and monolith are in tension here. The description calls it a completely headless API, and it is built that way, with the API able to be consumed by any client. But the front end ships inside the same deployable unit, and the headless framing is therefore a description of the API surface rather than of the deployment topology. A team that wants a separate SPA talking to the API, with its own release cycle and its own scaling, would be using the API in isolation, and the Razor Pages project would be dead weight in the image.

That is not a criticism so much as a clarification. The design is coherent for a product demo and a study project, and the reason it is often described as headless-first is that the API is genuinely decoupled from any particular client.

## The licence is CC BY 4.0, with a footer link you must keep

The licence deserves attention because it is unusual for application software. The README states that this work is licensed under a Creative Commons Attribution 4.0 International License, CC BY 4.0, and then adds a condition that is not standard for a CC licence applied to code: users are required to retain the footer link in all instances of this software as part of the attribution requirement.

CC BY 4.0 is a permissive licence with attribution required. It works for content, and applied to a software repository it is workable, but it is not one of the licences a .NET team would expect on a codebase, and the extra footer link requirement means the condition travels into anything derived from it, including a modified version shipped internally.

The repository metadata also records the licence as a custom one that GitHub cannot classify, with a LICENSE.txt file at the root, so the authoritative text is that file rather than the README summary.

The acknowledgements name two upstream projects with different terms. Syncfusion Community Edition provides the advanced UI components, and AdminLTE provides the template, licensed under the MIT License. If you remove Syncfusion, the front end loses its component library, which means a fork that diverges from the original needs a plan for the UI layer, and a plan for the attribution footer.

## Conclusion

Indotalent WHMS fits a developer who wants a complete warehouse management system to run, study or extend in .NET, and it does not fit a business that needs features the feature list does not mention, such as lot and serial traceability, multi-site allocation or purchasing workflow beyond a purchase order. Before adopting it, read the LICENSE.txt file, because the project is distributed under Creative Commons Attribution 4.0 with an explicit requirement to retain the footer link, which is unusual for software and a condition you have to honour in any derived work.

## FAQ

### What is the Indotalent WHMS project?

It is a warehouse inventory and order management system in .NET 9, built as a headless ASP.NET Core API using Clean Architecture, CQRS with MediatR, the Repository Pattern, EF Core, AutoMapper, FluentValidation and Serilog, with a Razor Pages and Vue.js front end. The live demo credentials are admin@root.com and 123456.

### How do I run the Asp.Net-Core-Inventory-Order-Management-System?

Open the solution in Visual Studio, update the connection string in appsettings.json to match your SQL Server database, clean and build the solution, then run it. The README notes the database is created automatically if it does not exist.

### What documents and modules does the WHMS cover?

Sales, Purchase, Delivery and Goods Receive for the main flows, plus Transfer, Adjustment, Return, Scrapping and Stock Count, along with customer and vendor management, product and unit of measure masters, transaction, stock and movement reports, company and tax settings, user management with role-based access control, and error and analytic logs.

### Does the WHMS project need a front-end build system?

No. The README states that although the project uses Vue.js, it does not require a build system, so you can run and build it straight from Visual Studio. The front end communicates with the API using Axios and uses Syncfusion community edition components with the AdminLTE template.

### What licence does the WHMS project use?

The README states the work is licensed under Creative Commons Attribution 4.0 International, CC BY 4.0, and that users are required to retain the footer link in all instances of the software as part of the attribution requirement. The LICENSE.txt file in the repository holds the authoritative terms.

## Sources

- [go2ismail/Asp.Net-Core-Inventory-Order-Management-System on GitHub](https://github.com/go2ismail/Asp.Net-Core-Inventory-Order-Management-System)
- [Issues](https://github.com/go2ismail/Asp.Net-Core-Inventory-Order-Management-System/issues)
- [Project website](https://whms-lte-fs.csharpasp.net/)
- [README](https://github.com/go2ismail/Asp.Net-Core-Inventory-Order-Management-System/blob/ASP.NET-9.0/README.md)
- [Releases](https://github.com/go2ismail/Asp.Net-Core-Inventory-Order-Management-System/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/go2ismail-asp-net-core-inventory-order-management-system
