Full-stack warehouse management application for inventory, procurement, and staff operations — built as a portfolio project.
Laravel 12 · Vue 3 · PHP 8.2+
Warehouse CMS is a single-page admin application backed by a REST API. It covers day-to-day warehouse workflows: tracking stock across locations, managing purchase orders and goods receipts, running inventory counts and adjustments, and controlling access with role-based permissions.
- Dashboard — KPI cards (stock value, low stock, pending POs) and procurement trends chart
- Catalog — Products, categories, suppliers, barcode support
- Warehouses — Multi-warehouse setup with zones, shelves, and locations
- Inventory — Stock levels, transactions, adjustments, transfers, cycle counts
- Procurement — Purchase orders and goods receipts
- People — Users, employees, roles and permissions (Spatie)
- System — PDF/Excel reports, audit log, notifications
| Layer | Stack |
|---|---|
| Backend | Laravel 12, Sanctum, Spatie Permission & Query Builder, Activity Log |
| Frontend | Vue 3, Vue Router, Pinia, Tailwind CSS 4, Vite, ApexCharts |
| Database | MySQL (production) or SQLite (local default) |
- PHP 8.2+ with extensions:
pdo,mbstring,openssl,tokenizer,xml,ctype,json,bcmath - Composer 2.x
- Node.js 18+ and npm
- MySQL 8+ (optional — SQLite works out of the box for a quick start)
git clone https://github.com/devilica/warehouse.git
cd warehousecomposer install
cp .env.example .env # Windows: copy .env.example .env
php artisan key:generateSQLite (easiest for local development)
Ensure .env contains:
DB_CONNECTION=sqlite
Then create the database file and run migrations with seed data:
touch database/database.sqlite # Windows: type nul > database\database.sqlite
php artisan migrate --seedMySQL
Update the DB_* variables in .env, create the database, then run:
php artisan migrate --seedOption A — two terminals
npm install
npm run dev # terminal 1
php artisan serve # terminal 2Option B — all-in-one dev script
npm install
composer devIf you prefer a single command after cloning:
composer setup
php artisan db:seed
npm run devAfter seeding, use these accounts:
| Role | Password | |
|---|---|---|
| Super Admin | admin@wms.test |
password |
| Warehouse Manager | manager@wms.test |
password |
php artisan migrate --seed loads roles, sample catalog/warehouse data, and demo inventory and purchase order records via DemoDataSeeder.
| Command | Description |
|---|---|
composer dev |
Run Laravel server, queue worker, logs, and Vite together |
php artisan test |
Run the test suite |
npm run build |
Build frontend assets for production |
php artisan db:seed --class=DemoDataSeeder |
Re-seed demo data (skips if purchase orders already exist) |
This project includes a vercel.json configuration for serverless deployment. Set at minimum:
APP_KEY(copy from local.env)APP_URL(your Vercel domain)DB_*connection variables for MySQLCACHE_STORE=array
Run migrations against the production database before going live.
This project is open-sourced software licensed under the MIT license.