A full-stack warehouse management system (simplified). Built with ASP.NET Core 9 on the backend and React 19 + TypeScript + Vite on the frontend.
- Backend: ASP.NET Core 9, Entity Framework Core, PostgreSQL, Swashbuckle (OpenAPI/Swagger), Serilog, health checks
- Frontend: React 19, TypeScript, Vite, MUI, Axios, React Router
- Architecture: layered architecture (Contracts → Domain → Infrastructure → Application → Api)
- DevOps: Docker Compose, GitHub Actions CI,
.editorconfig,global.json
The fastest way to run the whole stack:
git clone https://github.com/DmitriyOT/Warehouse-System.git
cd WarehouseSystem
docker compose up --buildThen open http://localhost:3000.
- Frontend: http://localhost:3000
- Backend API: http://localhost:5001
- Backend health: http://localhost:5001/health
cp back/Warehouse.Api/appsettings.Development.json.example back/Warehouse.Api/appsettings.Development.json
# edit the connection string
cd back
dotnet restore
dotnet build
cd Warehouse.Api
dotnet runAPI will be available at:
- HTTP: http://localhost:5189
- HTTPS: https://localhost:7291
- Swagger: https://localhost:7291/swagger
cp front/.env.example front/.env
# VITE_APP_API_URL=https://localhost:7291/
cd front
npm install
npm run devOpen http://localhost:5173.
WarehouseSystem
├── back/
│ ├── Warehouse.Contracts # Shared interfaces, DTOs, exceptions
│ ├── Warehouse.Domain # Domain models
│ ├── Warehouse.Infrastructure # EF Core, repositories, UoW, health checks
│ ├── Warehouse.Application # Services and business logic
│ ├── Warehouse.Api # API controllers and entry point
│ └── Warehouse.Tests # Unit/integration tests
├── front/ # React + TypeScript + Vite client
├── docker-compose.yml # One-command stack (Postgres + backend + frontend)
└── .github/workflows/ci.yml # CI: build + test backend, lint + build frontend
- Unified API response — every response is wrapped in
ResponseDTOwithresponse,hasError,errorMessage. - Layered backend — separation of concerns for testability and readability.
- Generic CRUD abstractions —
CrudRepository,CrudService,BaseCrudControllerwith expression-tree filtering reduce boilerplate. - Balance transaction handling — stock balance calculation is isolated in
BalanceServiceand runs inside EF Core transactions. - Centralized frontend error handling — a single modal context for errors.
- Auto database migration — EF Core migrations are applied on application startup.
- Health checks —
/healthand/health/readyendpoints for container orchestration.
Dashboard and directory pages running in Docker Compose.
On every push or pull request to main:
- Backend: restore → build → test → verify EF Core migrations are up to date.
- Frontend: install → lint → build.
MIT — see LICENSE.

