Download the PHP package nomandev/noman-inventory without Composer
On this page you can find all versions of the php package nomandev/noman-inventory. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download nomandev/noman-inventory
More information about nomandev/noman-inventory
Files in nomandev/noman-inventory
Package noman-inventory
Short Description A production-grade, universal inventory management package for Laravel. Supports multi-tenant, multi-warehouse, batches, serials, expiry, FEFO/FIFO, valuation, reservations, stock counts, and full audit trails.
License MIT
Informations about the package noman-inventory
noman-inventory
Package: nomandev/noman-inventory · Namespace: Noman\Inventory
A production-grade, universal inventory management package for Laravel 11 and 12.
Built for multi-tenant, multi-warehouse environments across diverse business domains: cow farms, pharmaceutical distributors, pet shops, clinics, warehouses, general retail, and more.
Features
| Feature | Details |
|---|---|
| Append-only ledger | All stock changes recorded as immutable movement rows. Never destructive. |
| Documents | GRNs, Delivery Orders, Transfer Orders, Adjustments, Stock Counts, Reversals |
| Batches / Lots | Full batch tracking with expiry date and FEFO/FIFO allocation |
| Serial Numbers | Unit-level serial tracking for equipment and high-value items |
| Valuation | FIFO, Weighted Average, Standard Cost |
| Reservations | Soft-lock stock before issue; automatic expiry; reference linking |
| Stock Counts | Full count session workflow with variance calculation and auto-adjustment |
| Reversals | Compensating entries; original documents never modified |
| Projections | Denormalised balance + snapshot tables for fast reporting |
| Multi-warehouse | Hierarchical: Warehouse → Zone → Aisle → Rack → Shelf → Bin |
| Multi-tenant | Pluggable TenantResolverContract; no tenancy package hard-coded |
| Industry Profiles | Standard Goods, Pharma, Livestock Supply, Serialised Equipment, Pet Food |
| Policy Engine | Global → item-type → item level policy overrides |
| REST API | Full CRUD + all stock operations + reports |
| Blade UI | Optional web UI: dashboard, items, warehouses, stock ops, documents, reports |
| Events | 12 domain events; listeners for balance projection |
Requirements
- PHP 8.2+
- Laravel 11.x or 12.x
spatie/laravel-package-tools^1.16
Installation
The package auto-discovers via Laravel's package discovery mechanism.
Use local package (for development or when publishing fails)
If you develop the package locally or Packagist has an older version, add a path repository in your app's composer.json:
Adjust ../inventoryPackage/... so it points from your app directory to the package. Then:
Installing from a local path (development)
If you develop the package locally (e.g. in a monorepo) and get a Failed to open stream error for routes/api.php, use a path repository so your app uses the local package:
- In your Laravel app
composer.json, add:
Adjust the url path if your layout differs (e.g. ../../inventoryPackage/packages/noman-inventory).
- Remove the old package and reinstall:
Publishing Config & Migrations
Configuration Overview
Basic Setup
1. Create warehouses and items
2. Receive stock
3. Issue stock
4. Transfer stock between warehouses
5. Reserve stock
6. Adjust stock
7. Reverse a document
8. Check balance
Stock Count Workflow
Tenancy Integration
The package is fully multi-tenant ready but ships with a no-op NullTenantResolver. To enable tenancy, bind your own implementation:
Also set in .env:
Industry Profiles
Assign a profile to item types or items to automatically apply the right policy defaults:
| Profile | Batch | Expiry | Serial | Location | Allocation |
|---|---|---|---|---|---|
standard_goods |
❌ | ❌ | ❌ | ❌ | FIFO |
pharma_goods |
✅ | ✅ | ❌ | ✅ | FEFO |
livestock_supply |
✅ | ✅ | ❌ | ❌ | FEFO |
serialized_equipment |
❌ | ❌ | ✅ | ✅ | Manual |
perishable_pet_food |
✅ | ✅ | ❌ | ❌ | FEFO |
Extension Points
Override any service implementation
Listen to inventory events
Custom item metadata
Use the metadata JSON column on inventory_items for host-app-specific fields:
Or use the inventory_custom_fields + inventory_custom_field_values tables for structured custom field definitions.
API Endpoints
All endpoints are prefixed with /inventory (configurable via route_prefix).
| Method | Endpoint | Description |
|---|---|---|
| GET | /inventory/items |
List items |
| POST | /inventory/items |
Create item |
| GET | /inventory/items/{id} |
Get item |
| PUT | /inventory/items/{id} |
Update item |
| DELETE | /inventory/items/{id} |
Delete item |
| POST | /inventory/stock/receive |
Receive stock |
| POST | /inventory/stock/issue |
Issue stock |
| POST | /inventory/stock/transfer |
Transfer stock |
| POST | /inventory/stock/adjust |
Adjust stock |
| POST | /inventory/stock/reserve |
Reserve stock |
| DELETE | /inventory/stock/reserve/{id} |
Release reservation |
| GET | /inventory/documents |
List documents |
| GET | /inventory/documents/{id} |
Get document |
| POST | /inventory/documents/{id}/post |
Post document |
| POST | /inventory/documents/{id}/reverse |
Reverse document |
| POST | /inventory/stock-counts/start |
Start stock count |
| POST | /inventory/stock-counts/{id}/complete |
Complete count |
| GET | /inventory/reports/stock-on-hand |
Stock on hand report |
| GET | /inventory/reports/stock-by-location |
Stock by location |
| GET | /inventory/reports/stock-ledger |
Stock movement ledger |
| GET | /inventory/reports/stock-card |
Stock card (running balance) |
| GET | /inventory/reports/batch-expiry |
Batch expiry report |
| GET | /inventory/reports/inventory-aging |
Inventory aging |
| GET | /inventory/reports/valuation-summary |
Valuation summary |
| GET | /inventory/reports/reservations |
Reservation status |
Web UI (Blade)
The package includes an optional Blade-based web UI, using the same prefix as the API (default /inventory). Enable or disable it via config('inventory.routes_enabled'); middleware is set with config('inventory.web_middleware', ['web']).
| URL | Description |
|---|---|
GET /inventory |
Dashboard |
GET /inventory/items |
List items (create, edit, show, delete) |
GET /inventory/warehouses |
List warehouses (create, edit, show, delete) |
GET /inventory/stock/receive |
Receive stock form |
GET /inventory/stock/issue |
Issue stock form |
GET /inventory/stock/transfer |
Transfer stock form |
GET /inventory/stock/adjust |
Adjust stock form |
GET /inventory/documents |
Stock documents list and detail |
GET /inventory/stock-counts |
Stock count sessions; start new count |
GET /inventory/reports |
Reports index (stock on hand, by location, ledger, batch expiry, reservations) |
Views live in the package under resources/views and are registered with the noman-inventory view namespace. To customise the UI, publish the views:
Then edit the published Blade files in resources/views/vendor/noman-inventory/.
Views not updating after composer update?
If you pushed changes to the package and ran composer update in your app but the UI still shows the old design, try this:
-
Clear Laravel caches (the app may be serving cached compiled views):
-
Published views override the package. If you (or someone) ran
vendor:publish --tag=noman-inventory-views, the app uses copies inresources/views/vendor/noman-inventory/. Those copies are not updated bycomposer update. To get the new package views again either:-
Remove the published views so the app falls back to the package:
- Or re-publish and overwrite (this replaces your local customisations):
-
-
Ensure Composer is pulling the new version. In the package repo, bump the version in
composer.json(e.g."version": "1.0.6"), commit and push. In the application that uses the package, run:If you use a branch or
devstability, ensure the app’scomposer.jsonallows that version.
Changelog
v1.0.5 (2025-03-08)
- MySQL compatibility: Added short explicit names for all compound indexes and unique constraints to avoid MySQL's 64-character identifier limit.
- Migration fixes: Fixed variable shadowing in categories and locations migrations; corrected migration order (units/unit_conversions before items) to satisfy foreign key dependencies.
- Service provider: Fixed
getPackageBaseDir()so config and migrations publish from the correct path; addedbootPackageRoutes()override for reliable route loading. - Laravel 11 support: Package now supports both Laravel 11 and 12.
v1.0.x (earlier)
- Initial release with append-only ledger, documents, batches, serials, expiry, FEFO/FIFO, valuation, reservations, stock counts, Blade UI, and REST API.
Running Tests
Architecture
License
MIT
All versions of noman-inventory with dependencies
laravel/framework Version ^11.0|^12.0
spatie/laravel-package-tools Version ^1.16