A modern, high-performance Point of Sale system built with
Laravel 13 · Inertia.js v3 · React 19 · Tailwind CSS v4
Translations: English 🇺🇸 | Português 🇧🇷 | Español 🇪🇸
- Interactive POS Terminal — Full-featured sales interface with product grid, real-time cart management, and instant checkout
- Multiple Payment Methods — Support for Cash, Credit Card, Debit Card, and PIX
- Smart Cart — Add/remove items, adjust quantities, and see live totals with discount calculations
- Coupon System — Apply percentage-based coupons with flexible scoping (global, per-category, or per-product)
- Digital Receipt — Auto-generated receipt with sale details, payment info, and change calculation
- Stock Validation — Real-time stock checks during checkout with pessimistic locking to prevent overselling
- Keyboard Shortcuts — Comprehensive keyboard navigation:
F2search, arrow keys navigate products,Enteradd to cart,F8checkout,Alt+Nclear cart,F3coupon, number keys for payment methods,Esccancel
- Revenue Metrics — Total revenue, sales count, and average ticket at a glance
- Payment Breakdown — Visual breakdown of sales by payment method
- Top Selling Products — Ranked list of best-performing products
- Low Stock Alerts — Immediate visibility into products running low or out of stock
- Recent Sales Feed — Live feed of the latest transactions
- Advanced Filtering — Filter reports by date range, payment method, category, or specific product
- Sales Summary — Total sales, revenue, discounts applied, and average ticket
- Daily Sales Chart — Day-by-day sales visualization
- Export to CSV — Download filtered sales data as spreadsheet
- Export to PDF — Generate professional PDF reports via DomPDF
- Product Catalog — Full CRUD for products with name, price, stock, image, and category
- Category Management — Organize products into categories
- Supplier Management — Track and manage product suppliers
- Stock Tracking — Automatic stock deduction on each sale
- Employee Profiles — Manage employees with linked user accounts
- Role-Based Access Control — Admin and Employee roles with granular permissions via Spatie Permission
- Role & Permission Management — Create, edit, and assign roles and permissions from the UI
- Laravel Fortify — Login, registration, password reset, and email verification
- Two-Factor Authentication (2FA) — TOTP-based 2FA with QR codes and recovery codes
- Profile Management — Update name, email, and avatar with image cropping
- Password Management — Change password from security settings
- Profile Settings — Edit personal info and avatar
- Security Settings — Manage password and 2FA
- Appearance — Light/dark mode theme toggle
- Multi-Language Support — Full i18n integration (Portuguese, English, Spanish) with persistent language switcher in navbar
- PHP 8.4+
- Composer 2+
- Node.js 22+ and npm
# 1. Clone and enter the project
git clone https://github.com/thiagohf23/pos-app.git
cd pos-app
# 2. Copy the environment template
cp .env.example .env
# 3. Install dependencies
composer install
npm install
# 4. Generate the app key
php artisan key:generate
# 5. Create the SQLite database and run migrations + seeds
touch database/database.sqlite
php artisan migrate:fresh --seed
# 6. Start the dev servers
composer run devApp runs at http://localhost:8000.
composer run devstarts Laravel and Vite together. Prefer separate terminals? Runphp artisan serveandnpm run dev. For production assets, usenpm run build.
| Layer | Technology |
|---|---|
| Backend | Laravel 13, PHP 8.4 |
| Frontend | React 19, Inertia.js v3, TypeScript |
| Styling | Tailwind CSS v4, shadcn/ui |
| Database | SQLite |
| Authentication | Laravel Fortify (2FA, Passkeys) |
| Authorization | Spatie Laravel-Permission |
| PDF Generation | Barryvdh DomPDF |
| Testing | Pest PHP 4, Larastan |
| Code Style | Laravel Pint, ESLint, Prettier |
| Routing | Laravel Wayfinder (typed route functions) |
When database seeds are run, the following users are generated:
| Role | Password | |
|---|---|---|
| Administrator | admin@example.com |
password |
| Staff/Employee | employee@example.com |
password |
15 additional fictitious employees are also seeded for testing.
php artisan test # Run the Pest test suite
composer run lint # Format code with Laravel Pint
composer run ci:check # Lint + format + types + testsThe POS App is open-sourced software licensed under the MIT license.
Made with ❤️, lots of ☕, and the help of AI assistants.
