The Problem

Small and medium‑sized enterprises need a functional warehouse‑management system without the cost of commercial ERP suites. ModernWMS supplies a free, open‑source codebase, but the repository lacks automated quality gates, committed secrets are present, and the codebase contains several high‑impact maintainability defects that raise the risk of regressions reaching production.

What This Does

ModernWMS is a full‑stack warehouse‑management system consisting of a C# (.NET 7) backend and a Vue 3 + Vuetify frontend, containerised with Docker. The backend lives under backend/ModernWMS.Core and backend/ModernWMS.WMS; it exposes REST controllers (e.g., AccountController.cs, StockController.cs) that delegate to services such as TokenManager.cs and SqlDBContext.cs. The frontend resides in frontend/ and is built with Vite, using Vue components, i18n files in frontend/src/languages/, and Vuetify plugins. Docker‑related files (docker/Dockerfile, docker/frontend/index.html) provide a containerised deployment path. The system supports MySQL 8, SQL Server 2017+, and PostgreSQL 12, as stated in the README.

How It Is Wired

Execution typically starts when a client hits a Vue route that calls an API endpoint; the request routes through a controller action (e.g., StockController.cs) → service layer (e.g., DispatchlistService.cs, AsnService.cs) → EF Core SqlDBContext.cs for data persistence. The import‑graph analysis (503 files) shows 105 internal modules connected by 26 edges, with 2 modules in a circular dependency (frontend/src/languages/i18n.tsfrontend/src/languages/method/index.ts). A hub module is frontend/src/types/System/Form.ts, imported by 19 other modules; changes there have a broad blast radius. Several files are oversized and exhibit deep nesting (indentation depth 9) such as backend/ModernWMS.Core/DBContext/SqlDBContext.cs, backend/ModernWMS.Core/DynamicSearch/QueryCollection.cs, and backend/ModernWMS.Core/Extentions/StartupExtensions.cs, making control‑flow hard to follow. Duplicated code blocks appear in QueryOptions.cs, SearchObject.cs, TokenManager.cs, and FucntionHelper.cs (≈ 4077 repeated 6‑line blocks across 335 files).

How To Use It

Setup

# Clone the repository
git clone https://github.com/moses-y/ModernWMS

# Install .NET 7 SDK and Node 16 (as per README requirements)
# Then restore dependencies
cd ModernWMS/frontend && yarn install
cd ../backend && dotnet restore

# Build and run with Docker (optional)
docker build -t modernwms .   # uses docker/Dockerfile
docker run -p 8080:80 modernwms

Configuration The app loads environment variables from frontend/.env.development and frontend/.env.production (both currently committed – see security note). Copy frontend/.env.example (if present) or create .env files and set VUE_APP_API_URL, database connection strings, and JWT secrets.

Running it

  • Development: cd frontend && yarn dev (Vite dev server).
  • Backend: cd backend/ModernWMS.Core && dotnet run (starts Kestrel on http://localhost:5000).
  • Full stack via Docker: docker-compose up (if a compose file is added) or run the built container.

Real‑World Use

A warehouse operator adds a new SKU via the Vue UI. The form submits a POST to /api/stock, which hits StockController.cs. The controller validates the JWT token (issued by TokenManager.cs), maps the view model to an entity, and calls StockService.csSqlDBContext.cs to insert the row. The UI then refreshes the stock list, reflecting the change instantly. If the operator edits an existing record, the same pipeline updates the entity and persists changes, while the hub‑module Form.ts ensures consistent validation rules across all stock‑related forms.

Code Health & Issues

  • HIGH – Add a test suite; repository has no test files (501 source files, 0 tests).
  • HIGH – Add a CI workflow that builds and tests on every push/pull_request (no CI config exists).
  • HIGH – Add a build gate for deployable artifacts (docker/Dockerfile); currently no workflow validates the image.
  • HIGH – Remove committed .env files (frontend/.env.development, frontend/.env.production) and rotate any credentials they contain; add them to .gitignore and provide frontend/.env.example with empty values.
  • MEDIUM – Enable Dependabot or Renovate (only 1 manifest, no update bot configured).
  • MEDIUM – Pin the container base image by digest in docker/Dockerfile (ubuntu:22.04 is mutable).
  • MEDIUM – Add a pre‑commit secret gate (no hook scanning staged content).
  • MEDIUM – Move large binary frontend/public/unity/Build/wms.data.unityweb (48.4 MB) to Git LFS or external storage.
  • MEDIUM – Add a non‑root USER to the Docker image (currently no USER directive).
  • LOW – Add convention files (.editorconfig, .gitattributes, formatter config) missing from the root.

The Bottom Line

ModernWMS delivers a functional, cross‑platform warehouse‑management system with a solid C#/Vue codebase and Docker support. However, the absence of CI/CD, committed secrets, and a test suite means any change can introduce regressions undetected. The codebase also suffers from circular imports, oversized services, and duplicated logic that raise maintenance overhead. It is suitable for teams willing to invest in adding automated testing, CI pipelines, and secret hygiene, but out‑of‑the‑box it carries security and reliability risks for production use.