A complete, modern, and feature-rich retail shop management system built with Laravel 11. Manage your products, sales, purchases, customers, suppliers, expenses, and generate detailed reports — all in one place.
Features • Requirements • Quick Start • Local Setup (XAMPP) • cPanel Deployment • Tech Stack
| # | Feature | Description |
|---|---|---|
| 1 | Authentication | Secure login, register, password management with session-based auth |
| 2 | Dashboard | Real-time overview with sales charts, low stock alerts, top products |
| 3 | POS / Sales | Barcode search, cart system, instant checkout, invoice generation |
| 4 | Products | Full CRUD with categories, pricing, stock tracking, alert quantities |
| 5 | Categories | Organize products into hierarchical categories |
| 6 | Customers | Customer database with contact info and purchase history |
| 7 | Suppliers | Supplier management for purchase tracking |
| 8 | Purchases | Track stock purchases from suppliers with auto stock updates |
| 9 | Expenses | Daily expense tracking with categories and notes |
| 10 | Reports | Daily sales, monthly sales, profit analysis, stock reports |
- Single User System — Each user manages their own shop data independently
- Dark Sidebar Navigation — Modern, professional UI with inline SVG icons (no CDN dependency)
- Real-time Dashboard — Chart.js powered analytics with sales trends
- POS with Barcode — Fast selling with barcode search and cart management
- Auto Stock Updates — Stock adjusts automatically on every sale and purchase
- Invoice Generation — Professional printable invoices for every sale
- Low Stock Alerts — Get notified when products reach alert quantities
- Responsive Design — Works on desktop, tablet, and mobile devices
- Glassmorphism UI — Modern frosted glass navbar, gradient cards, smooth animations
| Requirement | Version |
|---|---|
| PHP | 8.1+ (recommended: 8.2 or 8.3) |
| MySQL | 5.7+ (recommended: 8.0) |
| Composer | 2.x |
| Web Server | Apache (with mod_rewrite) or Nginx |
| Extensions | openssl, pdo, pdo_mysql, mbstring, tokenizer, xml, ctype, json, fileinfo, zip |
git clone https://github.com/devfahimbd/unishop.git
cd unishopcomposer install --optimize-autoloader --no-devcp .env.example .env
php artisan key:generateEdit .env and set your database credentials:
DB_DATABASE=your_database_name
DB_USERNAME=your_db_username
DB_PASSWORD=your_db_passwordphp artisan migrate --forcephp artisan storage:linkphp artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan event:cacheDownload and install XAMPP from https://www.apachefriends.org/
Open XAMPP Control Panel and start Apache and MySQL.
- Open
C:\xampp\php\php.iniin Notepad - Find and enable (remove
;from start) these extensions:extension=fileinfo extension=zip extension=pdo_mysql extension=mysqli extension=openssl extension=mbstring - Save the file and restart Apache
Open Command Prompt (Terminal) and run:
cd C:\xampp\htdocs
# Extract/copy the project folder here
# Then:
cd unishop
copy .env.example .env
C:\xampp\php\php.exe artisan key:generate- Open browser:
http://localhost/phpmyadmin - Click New and create database:
unishop_manager - Collation:
utf8mb4_unicode_ci
C:\xampp\php\php.exe artisan migrateC:\xampp\php\php.exe artisan serveGo to: http://localhost:8000
Default URL: http://localhost:8000/register (create your account first)
- Shared hosting or VPS with cPanel
- PHP 8.1+ enabled
- MySQL database
- Login to cPanel → File Manager
- Navigate to
public_html - Upload the project ZIP file
- Extract the ZIP file
- Move all files from the extracted folder to
public_htmlroot - Your structure should look like:
public_html/ ├── app/ ├── bootstrap/ ├── config/ ├── database/ ├── public/ ← THIS is your document root ├── resources/ ├── routes/ ├── storage/ ├── vendor/ ├── .env ├── artisan └── ...
- In cPanel, go to Domains → Manage Domains
- Click Edit next to your domain
- Change Document Root from
public_htmltopublic_html/public - Save changes
Alternative (using .htaccess):
If you can't change document root, create .htaccess in public_html:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>- In cPanel, go to MySQL Databases
- Create a new database:
unishop_manager - Create a new user with a strong password
- Add the user to the database with ALL PRIVILEGES
- In File Manager, go to
public_html - Rename
.env.exampleto.env(or create new.envfile) - Edit
.envand update:APP_NAME="UniShop Manager" APP_ENV=production APP_DEBUG=false APP_URL=https://yourdomain.com DB_DATABASE=unishop_manager DB_USERNAME=your_cpanel_db_user DB_PASSWORD=your_cpanel_db_password
- Save the file
Connect to your hosting via SSH (cPanel → Terminal) and run:
cd ~/public_html
# If no SSH, use cPanel PHP Console or set up PHP Cron for one-time execution
php artisan key:generate
php artisan migrate --force
php artisan storage:link
php artisan config:cache
php artisan route:cache
php artisan view:cacheIn cPanel File Manager:
- Right-click
storage/folder → Permissions → set to755 - Right-click
bootstrap/cache/folder → Permissions → set to755
- In cPanel, go to Cron Jobs
- Add a new cron job (every minute):
/usr/local/bin/php -f /home/YOUR_USERNAME/public_html/artisan schedule:run >> /dev/null 2>&1 - Replace
YOUR_USERNAMEwith your actual cPanel username
- In cPanel, go to SSL/TLS Status or Let's Encrypt
- Enable SSL for your domain
- In
.env, update:APP_URL=https://yourdomain.com
Visit: https://yourdomain.com/register
Create your admin account and start using UniShop Manager!
| Technology | Purpose |
|---|---|
| Laravel 11 | PHP Framework (Backend) |
| PHP 8.x | Server-side Language |
| MySQL | Database |
| Bootstrap 5.3 | Frontend Framework (CDN) |
| Chart.js 4.4 | Dashboard Charts (CDN) |
| jQuery 3.7 | AJAX Operations (CDN) |
| Inter Font | Typography (Google Fonts) |
| Inline SVGs | Icons (No CDN dependency) |
| Blade Templates | View Engine |
unishop/
├── app/
│ ├── Http/
│ │ ├── Controllers/ # 12 Controllers
│ │ └── Middleware/ # Auth Middleware
│ └── Models/ # 10 Eloquent Models
├── config/ # App Configuration
├── database/
│ └── migrations/ # 12 Database Migrations
├── public/
│ ├── css/app.css # Custom Styles
│ └── index.php # Entry Point
├── resources/
│ └── views/ # 28+ Blade Templates
│ ├── layouts/ # Main Layout
│ ├── auth/ # Login & Register
│ ├── dashboard/ # Dashboard
│ ├── products/ # Product CRUD
│ ├── categories/ # Category CRUD
│ ├── customers/ # Customer Management
│ ├── suppliers/ # Supplier Management
│ ├── purchases/ # Purchase Management
│ ├── pos/ # Point of Sale
│ ├── expenses/ # Expense Tracking
│ ├── reports/ # Reports & Analytics
│ ├── invoice/ # Invoice Print
│ └── profile/ # User Profile
├── routes/
│ ├── web.php # Web Routes
│ └── console.php # Console Routes
├── .env.example # Environment Template
├── artisan # CLI Entry Point
└── composer.json # PHP Dependencies
- Single User System: This is designed for a single shop owner. Each user's data is completely isolated by
user_id. - No Admin Panel: There is no multi-user admin system. The registered user is the shop owner.
- CDN Assets: CSS and JS are loaded via CDN (Bootstrap, Chart.js, jQuery). No
npm buildis required. - Inline SVG Icons: All icons are inline SVGs — no external icon library dependency.
- Database: Default database name is
unishop_manager. You can change it in.env.
| Issue | Solution |
|---|---|
Too few arguments to Schedule::command() |
Edit routes/console.php and remove the Schedule::command() call |
could not find driver (MySQL) |
Enable extension=pdo_mysql and extension=mysqli in php.ini |
ext-fileinfo missing |
Enable extension=fileinfo in php.ini |
storage/framework directories missing |
Create folders: storage/framework/{sessions,views,cache} and storage/logs |
500 Internal Server Error |
Check .env file exists, APP_KEY is set, and storage permissions are 755 |
404 Not Found on routes |
Make sure public/ is the document root (not project root) |
Icons not showing |
Icons are inline SVGs — if missing, clear view cache: php artisan view:clear |
This project is open-source software licensed under the MIT License.
Built with ❤️ using Laravel 11
MD Fahim Sheikh © 2026 — All Rights Reserved