// the take
A self-built Laravel 12 + Livewire inventory and POS system covering sales, purchasing, stock, and a basic finance ledger for a single store. It's aimed at small retail/shop operators or developers wanting a Laravel CRUD/ERP reference project rather than teams running multi-location retail.
Domain logic is split into Services, DTOs, and per-entity Exceptions instead of living in fat controllers, and purchase receiving correctly drives both inventory updates and the finance ledger automatically rather than needing a separate reconciliation step. The Docker setup is a genuinely complete stack (Nginx, PHP-FPM, queue worker, Postgres) with an entrypoint script that waits for the DB and runs migrations/seeders, so it actually boots with one command. POS has practical details beyond a toy demo: persistent cart state across sessions, global discounts, and exact-cash/change computation. The currency formatting is centralized and propagates to charts, tables, and receipts instead of being hardcoded per view.
Inventory is a single global stock number per product — there's no warehouse/location model, so it can't represent more than one store or stockroom without a schema rewrite. Test coverage is essentially the Laravel Breeze default (auth, profile); none of the actual business logic — sales, purchases, stock movements, the finance ledger mapping — has feature tests, so regressions in the parts that matter aren't caught. The README's tech stack table says MySQL, but the "recommended" Docker path runs Postgres, and there's no guidance on which one an existing install's data layer actually assumes. The seeded admin/password login is the only account in the Models with no visible role or permission system, so as shipped it's a single shared admin — fine for a demo, not for putting real staff logins on it.
We read the README, the directory tree and a key source file in October 2026. Nobody pays to be listed. How we judge →