A full-featured, production-ready multi-vendor e-commerce platform built with Laravel 12. E-Shop supports multiple user roles β Admin, Seller, Delivery Partner, and Customer β each with dedicated dashboards, real-time notifications, and comprehensive management tools. Integrated with Stripe and PayPal for secure global payments.
π Live Demo: E-Shop
π Storefront β Hero banner carousel with new arrivals and product listings
π Admin Dashboard β Revenue trends, KPI cards, and top product sales analytics
π¦ Order Management β Track orders, assign delivery, process refunds
ποΈ Category Browser β Visual category grid with item counts
- Product Catalog with search, filtering, and category browsing
- Product Detail Pages with image galleries, color/size variants, and stock indicators
- Shopping Cart with real-time stock validation
- Secure Checkout via Stripe and PayPal with multi-currency support
- Product Reviews & Ratings with star ratings and seller replies
- Special Offers Page displaying active discounts and deals
- Dynamic Banner Carousel on the homepage
- Order Tracking with real-time status updates via SSE
- Analytics Dashboard with revenue trends (1D/6D/1M/1Y), KPI cards, and top product sales charts
- Product Management β CRUD operations with image uploads, variants, discount pricing, and stock tracking
- Order Management β View, filter, update status, assign delivery partners, and process refunds
- Return Request Handling β Approve/reject returns and assign pickup delivery
- Category Management with image support
- Banner Management β Create/reorder homepage banners
- Customer Management β View customer details and order history
- Delivery Partner Management β Approve applications, set fees, assign/release partners
- Seller Management β Manage seller accounts, block/unblock sellers
- Multi-Admin Accounts β Create and manage admin sub-accounts
- Currency Configuration with live exchange rate conversion
- Auto-Delete Settings β Configurable automatic cleanup of old records via stored procedures
- Real-Time Notifications via SSE (Server-Sent Events)
- Dedicated Seller Portal with personalized analytics
- Product Management β Sellers manage their own product listings
- Order & Return Management scoped to seller's products
- Delivery Partner Oversight β Manage delivery partners assigned to the seller's store
- Customer Insights β View customers who purchased from the seller
- Auto-Delete Configuration β Seller-level cleanup settings
- Application System β Apply to work with specific stores
- Work Dashboard β View and accept delivery assignments
- Order Pickup & Delivery β Scan-based verification with image proof
- Return Pickups β Handle product return logistics
- Delivery History β Complete log of past deliveries
- Balance Tracking β Earnings and fee management
- Email-Based OTP Verification for all user registrations
- Forgot Password Flow with OTP-based reset
- Role-Based Access Control β Admin, Seller, Delivery Boy, Customer
- Middleware Protection for each role's routes
- Account Blocking β Admins can block sellers and users
- Soft Deletes β Safe account deletion with audit trail
- Stripe Integration β Secure card payments with Payment Intents API
- PayPal Integration β PayPal checkout flow with sandbox/live modes
- Refund Processing β Full refund support through both gateways
- Multi-Currency Support β Configurable currency with exchange rate API
- Order Confirmation emails to customers
- Order Status Updates (processing, shipped, delivered, cancelled)
- Return Status Notifications
- Work Assignment Notifications for delivery partners
- OTP Verification Emails for registration and password reset
| Layer | Technology |
|---|---|
| Backend | Laravel 12, PHP 8.2+ |
| Frontend | Blade Templates, HTML5, CSS3, JavaScript |
| CSS Framework | Tailwind CSS 4.0 |
| Database | MySQL 8.0 |
| Build Tool | Vite 7.x with Laravel Vite Plugin |
| Payments | Stripe (stripe/stripe-php), PayPal (srmklive/paypal) |
| Real-Time | Server-Sent Events (SSE) |
| Laravel Mail (SMTP β Gmail) | |
| Queue | Laravel Queue (Database driver) |
| Deployment | AWS Lambda ready via Bref (bref/bref, bref/laravel-bridge) |
e-com/
βββ app/
β βββ Console/ # Artisan console commands
β βββ Helpers/
β β βββ currency.php # Global currency formatting helpers
β βββ Http/
β β βββ Controllers/
β β β βββ AdminDashboardController.php # Admin analytics & KPIs
β β β βββ AdminDeliveryController.php # Delivery partner management
β β β βββ AdminSellerController.php # Seller & admin account management
β β β βββ AuthController.php # Authentication (all roles)
β β β βββ BannerController.php # Homepage banner CRUD
β β β βββ CategoryController.php # Category management
β β β βββ CurrencyController.php # Currency & exchange rate settings
β β β βββ CustomerController.php # Customer data management
β β β βββ DashboardController.php # Customer dashboard & order history
β β β βββ DeliveryController.php # Delivery partner operations
β β β βββ NotificationController.php # Real-time notification polling
β β β βββ OrderController.php # Order lifecycle management
β β β βββ PayPalController.php # PayPal payment integration
β β β βββ ProductController.php # Product CRUD & stock management
β β β βββ ReturnRequestController.php # Return/refund request handling
β β β βββ ReviewController.php # Product reviews & replies
β β β βββ SSEController.php # Server-Sent Events streaming
β β β βββ SellerDashboardController.php # Seller-specific analytics
β β β βββ SiteSettingController.php # Auto-delete & site config
β β β βββ StripeController.php # Stripe payment integration
β β βββ Middleware/
β β βββ AdminMiddleware.php # Admin role guard
β β βββ DeliveryMiddleware.php # Delivery partner role guard
β β βββ SellerMiddleware.php # Seller role guard
β βββ Mail/
β β βββ OrderStatusMail.php # Order status change emails
β β βββ OrderSuccessMail.php # Order confirmation emails
β β βββ OtpMail.php # OTP verification emails
β β βββ ReturnStatusMail.php # Return status update emails
β β βββ WorkAssignedMail.php # Delivery assignment emails
β βββ Models/
β β βββ Banner.php # Homepage banner model
β β βββ Category.php # Product category model
β β βββ DeliveryApplication.php # Delivery partner application
β β βββ Order.php # Order with payment processing
β β βββ OrderDelivery.php # Delivery tracking & proof
β β βββ OrderReturn.php # Return request model
β β βββ Product.php # Product with variants & reviews
β β βββ ProductReview.php # Customer review model
β β βββ ProductVariant.php # Color/size variant model
β β βββ SellerAssignment.php # Seller-to-store assignment
β β βββ SiteSetting.php # Key-value site configuration
β β βββ User.php # Multi-role user model (SoftDeletes)
β β βββ UserInfo.php # Extended user profile data
β βββ Notifications/ # Push notification classes
β βββ Providers/ # Service providers
β βββ Traits/ # Reusable model traits
βββ config/
β βββ paypal.php # PayPal SDK configuration
β βββ services.php # Third-party service keys
β βββ ... # Standard Laravel config files
βββ database/
β βββ migrations/ # 52 migration files (schema evolution)
β βββ seeders/ # Database seeders
β βββ database.sqlite # SQLite fallback for development
βββ public/
β βββ images/ # Static image assets
β βββ lottie/ # Lottie animation files
β βββ media/ # Uploaded media storage
β βββ sounds/ # Notification sound files
βββ resources/
β βββ css/ # Source stylesheets
β βββ js/ # Source JavaScript
β βββ views/
β βββ admin/ # Admin panel views (18 templates)
β βββ auth/ # Password reset flow views
β βββ delivery/ # Delivery partner views (6 templates)
β βββ emails/ # Email templates (5 templates)
β βββ errors/ # Error page views
β βββ layouts/
β β βββ admin.blade.php # Admin layout with sidebar
β β βββ delivery.blade.php # Delivery partner layout
β β βββ master.blade.php # Public storefront layout
β β βββ seller.blade.php # Seller dashboard layout
β βββ seller/ # Seller panel views (11 templates)
β βββ cart.blade.php # Shopping cart page
β βββ categories.blade.php # Category listing page
β βββ checkout-success.blade.php # Payment success page
β βββ dashboard.blade.php # Customer dashboard
β βββ index.blade.php # Homepage
β βββ login.blade.php # Customer login
β βββ offers.blade.php # Special offers page
β βββ product-detail.blade.php # Product detail page
β βββ products.blade.php # Product listing page
β βββ register.blade.php # Customer registration
βββ routes/
β βββ web.php # All application routes (309 lines)
βββ screenshots/ # README screenshot assets
βββ ecommerce_db.sql # Database dump for quick setup
βββ composer.json # PHP dependencies
βββ package.json # Node.js dependencies
βββ vite.config.js # Vite build configuration
βββ serverless.yml # AWS Lambda deployment config
βββ startup.sh # Server startup script
| Requirement | Version |
|---|---|
| PHP | β₯ 8.2 |
| Composer | β₯ 2.x |
| Node.js | β₯ 18.x |
| MySQL | β₯ 8.0 |
| npm | β₯ 9.x |
-
Clone the repository
git clone https://github.com/PTharanan/e-com.git cd e-com -
Install PHP dependencies
composer install
-
Install Node.js dependencies
npm install
-
Environment configuration
cp .env.example .env php artisan key:generate
-
Configure your
.envfileUpdate the following values in
.env:# Database DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=ecommerce_db DB_USERNAME=root DB_PASSWORD=your_password # Stripe Payment Gateway STRIPE_KEY=your_stripe_publishable_key STRIPE_SECRET=your_stripe_secret_key # PayPal Payment Gateway PAYPAL_SANDBOX_CLIENT_ID=your_paypal_client_id PAYPAL_SANDBOX_CLIENT_SECRET=your_paypal_client_secret PAYPAL_MODE=sandbox # Mail (SMTP) MAIL_MAILER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=465 MAIL_USERNAME=[email protected] MAIL_PASSWORD=your_app_password MAIL_ENCRYPTION=ssl # Exchange Rate API (for multi-currency) EXCHANGE_RATE_API_KEY=your_api_key
-
Database setup
Option A β Run migrations:
php artisan migrate
Option B β Import the SQL dump (includes sample data):
mysql -u root -p ecommerce_db < ecommerce_db.sql -
Build frontend assets
npm run build
-
Start the development server
# Quick start β runs server, queue, logs, and Vite concurrently composer devOr start services individually:
php artisan serve php artisan queue:listen npm run dev
-
Access the application
Portal URL Storefront http://localhost:8000Admin Panel http://localhost:8000/admin/sign-inSeller Portal http://localhost:8000/seller/sign-inDelivery Portal http://localhost:8000/delivery/sign-in
| Role | Description |
|---|---|
| Customer | Browse products, manage cart, checkout, track orders, submit reviews |
| Admin | Full platform control β products, orders, sellers, delivery, analytics |
| Seller | Manage own products, view orders, handle returns, track revenue |
| Delivery Boy | Accept deliveries, verify pickups, manage returns, track earnings |
- Supports card payments via the Payment Intents API
- Automatic refund processing
- Test mode supported with sandbox keys
- Full PayPal checkout flow integration
- Sandbox and live mode switching via
PAYPAL_MODE - Order capture and refund support
- Server-Sent Events (SSE) for live notification streaming
- Notification Sound Alerts for new orders and assignments
- Lottie Animations for enhanced UI feedback (success states, loading indicators)
composer install --optimize-autoloader --no-dev
npm run build
php artisan config:cache
php artisan route:cache
php artisan view:cacheThe project includes serverless.yml and bref packages for serverless deployment:
serverless deploy- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License β see the LICENSE file for details.
Perinpamoorthy Tharanan
- GitHub: @PTharanan
- Email: [email protected]
β Star this repo if you found it helpful!