{"id":50374962,"url":"https://github.com/prateekbhujel/wms","last_synced_at":"2026-05-30T09:02:16.294Z","repository":{"id":208163405,"uuid":"720928166","full_name":"prateekbhujel/wms","owner":"prateekbhujel","description":"Warehouse management system for small store. Single Vendor.","archived":false,"fork":false,"pushed_at":"2026-05-26T08:59:44.000Z","size":107799,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-05-26T10:13:21.656Z","etag":null,"topics":["bootstrap","inventrory","laravel","php","warehouse"],"latest_commit_sha":null,"homepage":"https://wms.pratikbhujel.com.np","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/prateekbhujel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-11-20T01:43:27.000Z","updated_at":"2026-05-13T10:55:59.000Z","dependencies_parsed_at":"2024-01-26T14:55:23.224Z","dependency_job_id":null,"html_url":"https://github.com/prateekbhujel/wms","commit_stats":null,"previous_names":["prateekbhujel/warehouse-management-system","prateekbhujel/wms"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/prateekbhujel/wms","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prateekbhujel%2Fwms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prateekbhujel%2Fwms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prateekbhujel%2Fwms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prateekbhujel%2Fwms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prateekbhujel","download_url":"https://codeload.github.com/prateekbhujel/wms/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prateekbhujel%2Fwms/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33686018,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bootstrap","inventrory","laravel","php","warehouse"],"created_at":"2026-05-30T09:02:15.462Z","updated_at":"2026-05-30T09:02:16.287Z","avatar_url":"https://github.com/prateekbhujel.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WMS\n\nWMS is an API-first Laravel + React warehouse management system built for source-code sale, agency customization, and shared-hosting deployment.\n\n## Stack\n\n- Laravel 10\n- React 18\n- Vite\n- MySQL/MariaDB\n- First-party JWT bearer tokens with logout revocation\n- OpenAPI JSON endpoint\n- Shared-hosting friendly build\n\n## Features\n\n- Token login and role-aware permissions\n- Enterprise backend boundaries: DTOs, FormRequests, Resources, Services, Repositories, and repository interfaces\n- Modular React frontend structure under `resources/js/core` and `resources/js/modules`\n- Owner, warehouse manager, and picker roles\n- Warehouse, zone, rack, shelf, and bin setup\n- Scannable bin barcodes\n- Product SKU and barcode catalogue\n- Supplier and customer records\n- Bin-level inventory balances\n- Receive, transfer, pick, and adjustment stock movements\n- Insufficient-stock protection during movement posting\n- Barcode/SKU scan endpoint and UI\n- Smart putaway suggestions by bin capacity, same-SKU consolidation, warehouse, and zone\n- Wave and batch picking plan generator\n- Packing verification with carrier/tracking fields and shipment label payload\n- Full activity audit trail for stock, order, and shipment events\n- Low stock dashboard\n- Recent movement activity\n- Inbound order creation and one-click receiving\n- Outbound order creation and one-click picking\n- Cycle counts with variance posting\n- Master data create/update/archive APIs\n- Accounting ledger posting for receives, picks, and adjustments\n- Trial balance, stock valuation, bin occupancy, and order backlog reports\n- CSV import preview, validation, staging, and commit flow\n- CSV report export payloads\n- Printable barcode label payloads for products and bins\n- Subdirectory-aware frontend API base path for XAMPP/shared-hosting installs\n- Modular DTO/service/repository/controller structure for buyer customization\n- Swagger UI at `/api-docs`\n- OpenAPI spec at `/api/openapi.json` and `/docs/api-docs.json`\n\n## Demo Login\n\n```text\nEmail: admin@wms.test\nPassword: password\n```\n\n## Local Setup\n\n```bash\ncomposer install\nnpm install\ncp .env.example .env\nphp artisan key:generate\nphp artisan migrate --seed\nnpm run build\nphp artisan serve\n```\n\nOpen `http://127.0.0.1:8000/app`.\n\nFor XAMPP or shared hosting subdirectory installs, open `http://localhost/wms/app`. The frontend reads the current base path automatically, so API calls work under `/wms`, root domain hosting, and `php artisan serve`.\n\n## Development\n\n```bash\nnpm run dev\nphp artisan serve\n```\n\n## Tests\n\n```bash\ncomposer validate --strict\ncomposer audit --no-interaction\nnpm audit --omit=dev\nphp artisan test\nnpm run build\nphp artisan module:doctor --openapi\nphp artisan app:doctor\n```\n\n## Hardening Checks\n\nWMS includes a deployment safety surface for packaging, selling, and shared-hosting deployment:\n\n- `php artisan module:doctor --openapi` verifies enabled modules, DTO/service/repository folders, repository interface bindings, providers, route files, and OpenAPI route coverage.\n- `php artisan app:doctor` checks app key, debug posture, URL, writable Laravel paths, storage link, built assets, and JWT secret readiness.\n- `php artisan jwt:token admin@wms.test --days=1` creates a short-lived bearer token for API testing.\n\nCI runs these checks after the API tests and frontend build, so architecture drift and undocumented API routes fail before packaging or deployment.\n\n## Deployment\n\n- Set `APP_ENV=production` and `APP_DEBUG=false`.\n- Set a dedicated `WMS_JWT_SECRET` with at least 32 characters.\n- Configure MySQL credentials.\n- Build assets with `npm run build`.\n- Upload the Laravel project and built `public/build` assets.\n- Run `php artisan migrate --force --seed` for a fresh demo or `php artisan migrate --force` for an existing install.\n- Run `php artisan app:doctor --strict` before publishing the install.\n- The included root `.htaccess` rewrites shared-hosting traffic to `public/` and preserves auth headers for Sanctum bearer tokens.\n- Keep `.env`, backups, logs, and database dumps private.\n\n## GitHub CI/CD\n\nThe workflow at `.github/workflows/ci.yml` runs Composer validation/audit, npm audit, API tests, the Vite build, module/OpenAPI checks, and deployment readiness checks.\n\nSSH deploy is disabled by default. To enable it, set repository variable `ENABLE_SSH_DEPLOY=true` and add these repository secrets:\n\n- `SSH_HOST`\n- `SSH_USER`\n- `SSH_KEY`\n- `SSH_PATH`\n\nThe deploy job pulls the repository on the server, installs production dependencies, builds assets, clears stale Laravel caches, runs migrations, refreshes the storage link, and caches config/routes/views.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprateekbhujel%2Fwms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprateekbhujel%2Fwms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprateekbhujel%2Fwms/lists"}