A full-stack e-commerce system for a thrift shop, built with Laravel. Customers can browse products, add items to a cart, pay online through PayMongo, and track their orders. Admins get a dashboard with sales analytics, inventory and category management, user verification, order fulfillment, and expense tracking.
- Product catalog with categories, sizes, search, and filtering
- Quick-view product modal and detailed product pages
- Customer reviews on purchased items
- Shopping cart with quantity management
- Secure checkout powered by PayMongo
- Order history with status tracking (packing → on the way → delivered)
- Order cancellation
- Profile management with multiple delivery addresses
- Contact form
- Registration with email OTP verification (rate-limited)
- Google reCAPTCHA protection
- Document upload step before checkout is unlocked
- Admin review/approval of customer documents
- Sales dashboard with interactive charts
- Sales report export (CSV and PDF)
- Category and size-group management
- Product management with multiple images and per-category sizes
- User management: approve, reject, archive, delete, and bulk auto-verify
- Order fulfillment workflow with printable order PDFs (via Dompdf)
- Expense tracking with bulk delete
- Trend analysis reporting
| Layer | Technology |
|---|---|
| Backend | Laravel 11, PHP ^8.2 |
| Frontend | Blade, Tailwind CSS, Alpine.js, Vite |
| Database | MySQL |
| Payments | PayMongo |
| Storage | Local (public disk) / AWS S3 |
| SMTP (used for OTPs and notifications) | |
| barryvdh/laravel-dompdf | |
| Testing | Pest |
- PHP >= 8.2 with the usual Laravel extensions (
mbstring,pdo_mysql,gd, etc.) - Composer
- Node.js >= 20 and npm
- MySQL >= 8.0 (or MariaDB)
# Clone the repository
git clone https://github.com/dreamerrri/aki-sys.git
cd aki-sys
# Install PHP dependencies
composer install
# Install JavaScript dependencies
npm install
# Set up environment
copy .env.example .env # Windows
# cp .env.example .env # macOS/Linux
php artisan key:generateConfigure your .env (see Configuration), then run:
php artisan migrate --seed
php artisan storage:link
npm run build # or: npm run dev while developingKey .env variables beyond the standard Laravel ones:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=aki_sys
DB_USERNAME=root
DB_PASSWORD=
# Mail - required for OTP codes during registration
MAIL_MAILER=smtp
MAIL_HOST=...
MAIL_PORT=587
MAIL_USERNAME=...
MAIL_PASSWORD=...
MAIL_FROM_ADDRESS="hello@yourdomain.com"
# PayMongo - checkout payments
PAYMONGO_PUBLIC_KEY=pk_test_...
PAYMONGO_SECRET_KEY=sk_test_...
# Google reCAPTCHA - registration form
RECAPTCHA_SITE_KEY=...
RECAPTCHA_SECRET_KEY=...
# AWS S3 - only needed when FILESYSTEM_DISK=s3
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=
AWS_BUCKET=Webhook: register your PayMongo webhook pointing to
POST /webhooks/paymongoso payment statuses stay in sync.
Start everything (app server, queue listener, log tail, and Vite dev server) with:
composer run devOr run each piece manually:
php artisan serve # app
php artisan queue:listen # queues
npm run dev # frontend assetsThe project uses Pest:
php artisan testCheck both ecosystems regularly:
composer audit # PHP packages
npm audit # JavaScript packagesThis project is open-sourced under the MIT license.