Norak Pharma Documentation
Thank you for purchasing Norak Pharma — a complete Pharmacy Point of Sale system built with Laravel 12, Livewire 4, with Bootstrap 5 & Tailwind 4 . This documentation will guide you through installation, configuration, and daily use.
Already familiar with Laravel? Run composer run setup to automatically install
dependencies, configure environment, run migrations, and build assets in one command.
Laravel / Herd Installation
Use this guide for local development (Laravel Herd, Valet) or a VPS/dedicated server with SSH and Composer access.
Server Requirements
- PHP 8.4+ with extensions:
bcmath,ctype,fileinfo,json,mbstring,openssl,pdo,pdo_mysql,tokenizer,xml,gd - Composer 2.0+
- MySQL 8.0+ or MariaDB 10.3+
- Node.js 18+ and NPM
Run php -m to list installed extensions. Install missing ones via your
package manager (apt, brew, etc.).
Extract and Upload Files
Extract the purchased package and upload all files to your server directory (e.g.,
/var/www/norak-pharma). or equivalent directory.
Environment Configuration
cp .env.example .env
php artisan key:generate
Edit .env and configure these required settings:
APP_NAME="Norak Pharma"
APP_URL=https://yourdomain.com
APP_ENV=production
APP_DEBUG=false
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=norak_pharma
DB_USERNAME=your_db_user
DB_PASSWORD=your_db_password
Create Database
Create the MySQL database and user before running migrations. Use phpMyAdmin or the command line to create a database and assign a user with full privileges.
Run Migrations & Seeders
php artisan migrate --force
php artisan db:seed --force
This creates all tables and seeds essential data: pharmacy units, roles, permissions, and a default admin account.
Create Storage Link
php artisan storage:link
Creates a symlink so product images, logos, and receipts are web-accessible. Skip this step only if using S3/cloud storage.
Set Permissions
chmod -R 775 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache
Replace www-data with your web server user (nginx,
apache, etc.).
Configure Web Server
No need to point directory /public .htaccess is already configured to direct to public folder
but if the need be
- Apache: Set
DocumentRootto/path/to/norak-pharma/public - Nginx: Set
rootto/path/to/norak-pharma/public - Laravel Herd: Auto-configured at
https://norak-pharma.test
Access the Application
Open your browser and visit your domain. Default login credentials:
- Email:
admin@example.com - Password:
password
Change the default admin password immediately after first login. Go to Users Management → Edit Admin → Change Password.
cPanel Hosting Installation
For shared hosting (cPanel, Plesk, or similar) where you upload files via FTP/SFTP.
Verify Server Requirements
In cPanel → Select PHP Version, ensure PHP 8.4+ is selected and these
extensions are enabled: bcmath, ctype, fileinfo,
mbstring, openssl, pdo_mysql, tokenizer,
xml, gd
Upload Files
Upload the entire Norak Pharma package to your hosting account via FTP/SFTP or cPanel File
Manager. Include all hidden files (those starting with .).
Set Document Root
In cPanel → Domains → your domain → Document Root, set it
to point to the public folder:
/home/username/norak-pharma/public
The document root must point to the public folder. Without
this, the app will not work and sensitive files may be exposed.
Create MySQL Database
In cPanel → MySQL® Databases:
- Create a new database (e.g.,
username_norak) - Create a MySQL user
- Add the user to the database with ALL PRIVILEGES
- Note the database name, username, and password
Configure Environment File
In File Manager, copy .env.example to .env and edit:
APP_NAME="Norak Pharma"
APP_ENV=production
APP_DEBUG=false
APP_URL=https://yourdomain.com
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=username_norak
DB_USERNAME=username_dbuser
DB_PASSWORD=your_password
For APP_KEY: via SSH run php artisan key:generate. Without SSH,
generate a 32-character random string and set it as base64:<your_key>.
Run Migrations
With SSH:
php artisan migrate --force
php artisan db:seed --force
Without SSH: Contact your hosting support to run these commands, or ask them to import the SQL dump file provided in the package.
Set File Permissions
In File Manager, set permissions on:
storagefolder:775bootstrap/cachefolder:775
- 500 Error: Check
.envexists andAPP_KEYis set - White Screen: Temporarily enable
APP_DEBUG=trueto see the error - Images Not Loading: Run
php artisan storage:linkvia SSH - Route Not Found: Confirm document root points to the
publicfolder
Initial Setup & Configuration
After installation, follow these steps to configure your pharmacy system.
- Change admin password immediately after first login
- Configure business profile (name, logo, address)
- Create your store outlet
- Configure tax rates
- Set up receipt template
- Add products and categories
- Test a POS checkout
Step 1 — Login
Access the application at your domain with the default credentials:
- Email:
admin@example.com - Password:
password
Step 2 — Change Admin Password
Go to Users Management → Find admin user → Edit → Change Password. Use a strong password and save immediately.
Step 3 — Configure Business Profile
Go to System Settings → Business Profile and set:
- Company name, address, phone, email
- Upload company logo
- Set currency and timezone
Step 4 — Set Up Your Store
Go to Store Outlets:
- Create your main store or edit the default one
- Set store name, address, and contact details
- Assign users to the store
Step 5 — Configure Cash Register
Go to System Settings → Register Setup:
- Create a cash register device
- Assign it to your store
- Required for cash payments in POS
Step 6 — Configure Tax Rates
Go to System Settings → Tax Config and add your local tax rates (e.g., VAT, GST). Assign rates to products as needed.
Step 7 — Set Up Receipt Template
Go to System Settings → Receipt Builder:
- Upload receipt logo and set header/footer text
- Choose paper size: 58mm or 80mm
- Configure barcode/QR code display
- Set font size, auto-print, and print copies
Step 8 — Add Products
Go to Products → Add Product:
- Enter name, SKU, barcode
- Set cost price and selling price
- Select dosage form (tablet, capsule, syrup, etc.)
- Add directions (e.g., "Take 1 tablet twice daily after meals")
- Mark as Rx (prescription required) if applicable
- Set shelf location for quick staff reference
Step 9 — Set Up Categories & Units
Go to Products → Categories to create pharmacy categories (Antibiotics, Analgesics, Vitamins, etc.). Units (tablet, capsule, ml, etc.) are pre-seeded and ready to use.
Step 10 — Configure Notifications (Optional)
Go to Message Config to set up SMS (Twilio) or WhatsApp notifications for low stock alerts, expiry warnings, and order confirmations.
System Features
Norak Pharma is a full-featured pharmacy management platform. Here's everything that's included:
Point of Sale (POS)
- Fast product search & barcode scanning
- Cart-based checkout
- Product variants & stock validation
- Cash, Card & Mobile Money payments
- Split payment support
- Discounts & insurance application
- Customer selection & quick add
- Cash shift management
- Draft orders (save & resume)
- Thermal receipt printing (58mm/80mm)
- Customer display support
Products & Catalog
- Product management with images
- Product variants (size, strength, etc.)
- Barcode & SKU management
- Categories and brands
- Unit management (tablets, ml, etc.)
- Bulk import/export
- Product search & filters
Inventory Management
- Real-time stock tracking
- Stock adjustments & transfers
- Multi-store inventory
- Low stock alerts
- Expiry date tracking
- Batch number management
- Movement history
- Stock reports
Orders & Sales
- Complete order history
- Payment tracking
- Invoice printing
- Order status management
- Returns processing
Customer Management
- Customer database (CRM)
- Contact information
- Purchase history
- Quick add from POS
- Customer search
- Walk-in customer support
Purchasing
- Supplier management
- Purchase orders
- Receive stock & auto-update inventory
- Purchase history
Reports & Analytics
- Sales reports (daily, weekly, monthly)
- Profit & Loss reports
- Product performance
- Inventory reports
- Export to Excel, CSV, PDF
Multi-Store Support
- Multiple store outlets
- Store-specific inventory
- Stock transfers between stores
- Store-level reporting
User & Role Management
- User accounts with role assignment
- Role-based permissions
- Roles: Admin, Store Manager, Cashier, Inventory Manager
- Store assignment per user
- Activity tracking
Attendance
- Clock in / clock out
- Shift tracking
- Hours calculation
- Multi-store attendance view
- Attendance reports
Notifications
- SMS alerts (Twilio)
- WhatsApp notifications
- Low stock alerts
- Expiry date warnings
- Customizable templates
Progressive Web App
- Installable on any device
- Mobile-friendly interface
- App-like experience
- Works on tablets & phones
Pharmacy-Specific Features
Norak Pharma includes specialized features designed exclusively for pharmacy operations — not found in generic POS systems.
💊 Prescription Management
- Rx Flag: Mark products as prescription-required
- Prescription Reference: Enter prescription ref. and doctor name at POS
- Receipt Display: Prescription info printed on patient receipt
📋 Product Directions
- Store default dispensing directions per product (e.g., "Take 1 tablet twice daily after meals")
- Directions automatically printed on receipt
- Ensures proper medication instructions for every patient
🧪 Dosage Forms
Products support all standard dosage forms:
📏 Pharmacy Units
Pre-configured units covering all common pharmacy dispensing forms:
| Unit | Abbreviation | Type |
|---|---|---|
| Tablet | tab |
Quantity |
| Capsule | cap |
Quantity |
| Strip | strip |
Quantity |
| Sachet | sach |
Quantity |
| Vial | vial |
Quantity |
| Ampoule | amp |
Quantity |
| Bottle | btl |
Quantity |
| Tube | tube |
Quantity |
| Millilitre | ml |
Volume |
| Litre | L |
Volume |
📍 Shelf Location
- Assign shelf locations to products (e.g., "A1-3", "Cold Room", "Controlled")
- Displayed in product listings for quick retrieval
- Helps staff locate products without delay
🧾 Pharmacy Receipt Features
- Product directions printed per line item
- Prescription reference and doctor name
- Patient information
- Professional pharmacy receipt format
👤 Patient Management
- Customer records with contact details
- Full purchase history per patient
- Quick patient lookup at POS
- Walk-in customer support (auto-created on first store setup)
Hosting on Laravel Cloud
Laravel Cloud provides a fully managed platform for Laravel applications. Deploy Norak Pharma in minutes with zero server management.
Create a Laravel Cloud Account
Visit cloud.laravel.com and sign up or log in.
Connect Your Git Repository
Connect your GitHub, GitLab, or Bitbucket repository. Push your Norak Pharma code there first if you haven't already.
Create a New Project
Select your repository, name your app, and choose your preferred region.
Add Infrastructure
In the Infrastructure Canvas:
- Add a MySQL database
- Add an Object Storage bucket for images (set to Public visibility)
Set Environment Variables
In the dashboard, add all required environment variables from your .env. Laravel
Cloud auto-injects database credentials when you link the database.
FILESYSTEM_DISK=cloud
APP_ENV=production
APP_DEBUG=false
Configure Deploy Commands
Add these deploy commands in your project settings:
php artisan migrate --force
php artisan db:seed --force
php artisan storage:link
Deploy
Click Deploy. Laravel Cloud will build your assets, run migrations, and launch your app. Your
app will be live at a .laravel.cloud subdomain or your custom domain.
File Storage Configuration
Norak Pharma supports both local storage and cloud storage (S3-compatible) for product images, logos, and receipts.
Local / Public Storage (Default)
For local or small deployments:
FILESYSTEM_DISK=public
Then create the symlink:
php artisan storage:link
This links public/storage → storage/app/public, making files accessible via
the web.
S3 / Cloud Storage (Recommended for Production)
For production, use S3-compatible storage (AWS S3, DigitalOcean Spaces, Laravel Object Storage):
FILESYSTEM_DISK=s3
AWS_ACCESS_KEY_ID=your_access_key
AWS_SECRET_ACCESS_KEY=your_secret_key
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=your-bucket-name
AWS_USE_PATH_STYLE_ENDPOINT=false
Laravel Cloud Object Storage
When using Laravel Cloud's built-in storage:
FILESYSTEM_DISK=cloud
Set the bucket to Public visibility so images are accessible. Laravel Cloud auto-injects the storage credentials when you link the bucket.
Always use cloud/S3 storage in production to ensure images persist across deployments and are served efficiently via CDN.
Environment Variables Reference
All configurable environment variables for Norak Pharma:
Application
| Variable | Description | Example |
|---|---|---|
APP_NAME |
Application name | "Norak Pharma" |
APP_URL |
Full application URL | https://yourdomain.com |
APP_ENV |
Environment | production |
APP_DEBUG |
Enable debug mode | false |
APP_KEY |
Application encryption key | Auto-generated |
Database
| Variable | Description | Example |
|---|---|---|
DB_CONNECTION |
Database driver (mysql only) | mysql |
DB_HOST |
Database host | 127.0.0.1 |
DB_PORT |
Database port | 3306 |
DB_DATABASE |
Database name | norak_pharma |
DB_USERNAME |
Database username | dbuser |
DB_PASSWORD |
Database password | your_password |
Storage
| Variable | Description | Example |
|---|---|---|
FILESYSTEM_DISK |
Storage disk driver | public, s3, or cloud |
AWS_ACCESS_KEY_ID |
S3 access key | — |
AWS_SECRET_ACCESS_KEY |
S3 secret key | — |
AWS_DEFAULT_REGION |
S3 region | us-east-1 |
AWS_BUCKET |
S3 bucket name | my-bucket |
Notifications (Optional)
| Variable | Description | Example |
|---|---|---|
TWILIO_SID |
Twilio account SID | — |
TWILIO_TOKEN |
Twilio auth token | — |
TWILIO_FROM |
Twilio sender number | +1234567890 |
Never commit your .env file to version control. The .env.example file
(with no real values) is safe to share.
Troubleshooting
Common issues and how to resolve them.
500 Internal Server Error
- Verify
.envfile exists andAPP_KEYis set - Check database credentials are correct
- Ensure
storageandbootstrap/cacheare writable - Temporarily set
APP_DEBUG=trueto see detailed errors
Images Not Displaying
- Run
php artisan storage:link - Verify
public/storagesymlink exists - Check permissions on
storage/app/public - If using S3, verify bucket permissions and credentials
Route Not Found / 404 Errors
- Ensure document root points to the
publicfolder - Check
.htaccessexists inpublicfolder (Apache) - Verify mod_rewrite is enabled (Apache)
- Run:
php artisan config:clear && php artisan route:clear
Database Connection Error
- Verify database exists and user has proper permissions
- Check
DB_HOST,DB_DATABASE,DB_USERNAME,DB_PASSWORDin.env - Test:
php artisan tinker→DB::connection()->getPdo();
Assets Not Loading (CSS / JS)
- Run
npm run buildto rebuild assets - Clear browser cache and hard reload
- Verify
public/buildfolder exists and contains files
Migration Errors
- Ensure database exists before migrating
- Check MySQL version is 8.0+
- Verify user has
CREATE TABLEpermissions - Check migration filename hasn't been renamed after initial deployment
Livewire / Alpine Not Working
- Ensure Livewire scripts are not loaded twice in layout
- Clear view cache:
php artisan view:clear - Rebuild assets:
npm run build
Open a support ticket via the Envato item page. Include your PHP version, error message, and steps to reproduce the issue.
Credits & Third-Party Libraries
Norak Pharma is built on top of these excellent open-source projects. All licenses are compatible with commercial distribution.
Core Framework
Frontend
Packages
Changelog
All notable changes to Norak Pharma are documented here.
- Full pharmacy Point of Sale (POS) system
- Multi-store support with store-level inventory
- Role-based access control (Admin, Store Manager, Cashier, Inventory Manager)
- Product management with variants, dosage forms, and shelf locations
- Prescription management with Rx flags and doctor reference
- Product dispensing directions on receipts
- Real-time inventory tracking with movement history
- Batch number and expiry date tracking
- Customer management (CRM) with walk-in support
- Purchase order management with supplier tracking
- Thermal receipt printing (58mm / 80mm)
- Sales, inventory, and profit/loss reports
- Employee attendance and shift tracking
- SMS & WhatsApp notifications via Twilio
- Progressive Web App (PWA) support
- Laravel Cloud deployment support
- S3-compatible cloud storage support
Support & Updates
Need Help?
We're committed to providing excellent support. Before opening a ticket, please check the Troubleshooting section and ensure you're running the latest version.
Support Policy
- Response time: Within 24–48 hours on business days
- Support includes: Bug fixes, installation help, configuration questions
- Support excludes: Custom modifications, feature development, general PHP/Laravel training
Before Opening a Ticket
- Read through this documentation fully
- Check the Troubleshooting section
- Include your PHP version (
php -v) - Include the exact error message and where it appears
- Describe the steps to reproduce the issue
Updates
- Updates are delivered via the Envato download page
- Always backup your database before applying updates
- After updating files, run:
php artisan migrate --force - Then clear cache:
php artisan optimize:clear
Rate this item on CodeCanyon if you find it useful — it helps us continue improving the product and providing support. Thank you! 🙏