MegaMart E-Commerce adalah aplikasi marketplace e-commerce yang dirancang khusus untuk konteks Indonesia. Proyek ini dibangun dengan arsitektur VILT Stack (Vue 3 + Inertia.js + Laravel 12 + Tailwind CSS), menggabungkan pengalaman pengguna Single Page Application (SPA) dengan keandalan backend penuh milik ekosistem Laravel.
Proyek ini bukan sekadar toko online biasa. Ini adalah sistem marketplace lengkap dengan business logic yang matang, mencakup siklus hidup pesanan penuh mulai dari keranjang belanja hingga pengembalian barang, integrasi pembayaran dan pengiriman nyata dengan provider Indonesia, serta dashboard operasional berbasis data untuk admin.
Aplikasi ini menggunakan Laravel Monolith dengan pemisahan tanggung jawab yang jelas melalui beberapa pola arsitektur:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Browser (Vue 3 SPA) โ
โ Storefront โ Customer Area โ Admin Panel โ
โโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Inertia.js (No API, No AJAX manual)
โโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Laravel 12 (Backend Monolith) โ
โ โ
โ Controllers โ Services โ Events โ Listeners โ
โ โ โ โ
โ (Business) (Observers, โ
โ Notifications, โ
โ Queue Jobs) โ
โโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโ
โ MySQL โ Redis โ
โ (Data Utama) โ (Cache) โ
โโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
Pola Arsitektur yang Digunakan:
- Service Layer Pattern โ Logika bisnis dienkapsulasi di
app/Services/, bukan di Controller. - Event-Driven Architecture โ Setiap transisi state penting (pesanan dibayar, retur disetujui, dll.) didispatch melalui Event agar dapat diproses oleh listener dan observer secara terpisah.
- Queue-Driven Background Processing โ Notifikasi, export data, dan tugas berat lainnya diproses di background melalui Laravel Queue.
- Idempotent Notification System โ Sistem notifikasi menggunakan tabel
notification_dispatchesuntuk mencegah pengiriman email duplikat.
- Halaman Beranda โ Hero Slides yang dapat dikonfigurasi admin, dengan link ke produk atau kategori tertentu.
- Katalog Produk โ Pencarian produk, filter kategori, tampilan grid responsif.
- Halaman Detail Produk โ Galeri gambar produk, pemilihan varian, ulasan & rating pelanggan dengan gambar bukti.
- Keranjang Belanja โ Manajemen item keranjang real-time dengan kalkulasi harga otomatis.
- Checkout Lengkap โ Pemilihan alamat pengiriman, kalkulasi ongkos kirim real-time, aplikasi kode voucher/promosi, dan ringkasan pesanan.
- Flash Sale โ Item flash sale dengan harga dan stok terpisah, tampil di halaman produk.
- Manajemen Pesanan โ Riwayat pesanan, detail pesanan, konfirmasi penerimaan barang.
- Sistem Retur โ Pengajuan retur barang dengan unggah foto bukti (hingga 5 foto), pelacakan status retur secara real-time.
- Ulasan & Rating โ Menulis ulasan setelah pesanan selesai, mengedit ulasan, unggah foto ulasan.
- Manajemen Profil & Alamat โ Data diri pengguna dan manajemen banyak alamat pengiriman.
- Registrasi, Login, Logout dengan Laravel Breeze.
- Manajemen sesi aman berbasis Laravel Sanctum.
Admin dashboard dirancang sebagai panel kontrol operasional, bukan sekadar laporan statis. Setiap widget menjawab pertanyaan: "Apa yang perlu dilakukan sekarang?"
| Modul Admin | Deskripsi |
|---|---|
| Dashboard | Widget operasional berprioritas: pelanggaran SLA, pesanan belum diproses, pengiriman tertunda, stok kritis |
| Manajemen Produk | CRUD produk + varian (ukuran/warna), multi-gambar per produk/varian |
| Manajemen Kategori | Hierarki kategori produk |
| Manajemen Pesanan | Proses pesanan, ubah status pengiriman, lihat detail lengkap |
| Manajemen Retur | Review pengajuan retur, proses inspeksi, setujui/tolak, kelola restock |
| Manajemen Ulasan | Moderasi ulasan, balas ulasan pelanggan, hapus ulasan tidak sesuai |
| Manajemen Promosi | Buat kode voucher dengan kuota, tipe diskon (persen/nominal), validasi masa berlaku, rekonsiliasi penggunaan |
| Flash Sale | Buat & kelola event flash sale dengan harga dan stok khusus per produk |
| Hero Slides | Manajemen banner beranda dengan link ke produk/kategori, pengaturan urutan |
| Analytics | Grafik revenue, tren pesanan, ranking produk, status pembayaran |
| Activity Log | Audit trail seluruh aksi admin |
| Export Data | Export data pesanan/produk ke file (diproses via queue) |
| Pengaturan Situs | Konfigurasi global aplikasi |
Proyek ini terintegrasi langsung dengan provider nyata yang umum digunakan di Indonesia:
- iPaymu โ Gateway pembayaran Indonesia, mendukung transfer bank, virtual account, dan dompet digital.
Sistem pengiriman menggunakan abstraksi ShippingProviderInterface, sehingga mudah mengganti atau menambah provider baru.
- RajaOngkir โ Kalkulasi ongkos kirim dari ratusan ekspedisi Indonesia.
- Komerce โ Aggregator layanan pengiriman.
Keranjang โ Checkout โ Pembayaran Pending
โ Pembayaran Dikonfirmasi โ Diproses โ Dikirim
โ Selesai (Pelanggan Konfirmasi Penerimaan)
โ [Opsional] Retur Diajukan โ Inspeksi โ Selesai/Ditolak
- Promosi memiliki lifecycle:
reserved โ confirmed โ released - Validasi kuota menggunakan
lockForUpdate()untuk mencegah race condition saat banyak pengguna memakai kode yang sama secara bersamaan. - Rekonsiliasi otomatis via job
ReconcilePromotionUsages.
- Kalkulasi refund mempertimbangkan diskon voucher yang diberikan secara proporsional (prorated).
- Formula:
discount_ratio = order.discount_amount / order.subtotal - Ongkos kirim tidak dikembalikan.
- Mendukung retur parsial (sebagian item dalam satu pesanan).
Semua kalkulasi yang menyentuh: pesanan, pembayaran, promosi, retur, refund, dan revenue analytics diperlakukan dengan standar ketat: tidak ada penyederhanaan, setiap perubahan harus dianalisis dampak bisnisnya.
| Teknologi | Versi | Kegunaan |
|---|---|---|
| Laravel | ^12.0 | Framework backend utama |
| Inertia.js (Laravel) | ^2.0 | Jembatan backend-frontend tanpa REST API terpisah |
| Laravel Sanctum | ^4.0 | Otentikasi sesi |
| Ziggy | ^2.0 | Named routing Laravel tersedia di Vue |
| Intervention Image | ^4.1 | Manipulasi & optimasi gambar upload |
| MySQL | - | Database utama |
| Redis | - | Cache & queue |
| Teknologi | Versi | Kegunaan |
|---|---|---|
| Vue.js 3 | ^3.4 | Framework UI (Composition API) |
| Inertia.js (Vue) | ^2.0 | SPA tanpa pengelolaan routing manual |
| Tailwind CSS | ^3/4 | Utility-first styling |
| Chart.js | ^4.5 | Visualisasi data analytics |
| Vue-Chartjs | ^5.3 | Wrapper Chart.js untuk Vue |
| Vite | ^7.0 | Bundler frontend |
| Teknologi | Kegunaan |
|---|---|
| PHPUnit | Unit & Feature testing backend |
| Vitest | Unit testing frontend (Vue components) |
| Vue Test Utils | Testing utilitas komponen Vue |
- PHP >= 8.2
- Composer
- Node.js >= 18 & NPM
- MySQL (atau SQLite untuk development lokal)
- Redis (opsional untuk development, wajib untuk production queue)
1. Clone repositori
git clone https://github.com/Elnathz/e-commerce.git
cd e-commerce2. Install dependensi
composer install
npm install3. Konfigurasi environment
cp .env.example .envBuka .env dan sesuaikan konfigurasi berikut:
# Database
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=elnathz_ecommerce
DB_USERNAME=root
DB_PASSWORD=
# Payment (iPaymu)
IPAYMU_VA=your_virtual_account
IPAYMU_API_KEY=your_api_key
IPAYMU_URL=https://sandbox.ipaymu.com/api/v2
# Shipping (RajaOngkir)
RAJAONGKIR_API_KEY=your_api_key
# Queue (untuk background jobs)
QUEUE_CONNECTION=database # atau redis untuk production4. Generate application key
php artisan key:generate5. Jalankan migrasi & seeder
php artisan migrate --seed6. Jalankan development server
Jalankan semua server sekaligus (Laravel + Queue + Vite + Log Watcher):
composer devAtau jalankan secara terpisah:
# Terminal 1: Backend
php artisan serve
# Terminal 2: Frontend
npm run dev
# Terminal 3: Queue Worker (untuk notifikasi & export)
php artisan queue:listen --tries=1Akses aplikasi di: http://localhost:8000
Proyek ini menggunakan standar testing modern di dua lapisan.
Backend (PHPUnit)
php artisan test
# atau
composer testFrontend (Vitest)
npm run teste-commerce/
โโโ app/
โ โโโ Http/Controllers/
โ โ โโโ Admin/ # Controller khusus admin panel
โ โ โโโ ... # Controller storefront & customer
โ โโโ Models/ # 30+ Eloquent Model (Order, Product, Promotion, dll.)
โ โโโ Services/ # Business logic layer
โ โ โโโ Payment/ # IPaymuService
โ โ โโโ Shipping/ # RajaOngkir & Komerce
โ โ โโโ CartService.php
โ โ โโโ PromotionService.php
โ โ โโโ FlashSaleService.php
โ โ โโโ AnalyticsDashboardService.php
โ โโโ Events/ # Business events (OrderPaid, ReturnApproved, dll.)
โ โโโ Listeners/ # Event handlers
โ โโโ Jobs/ # Background jobs (Export, Notifikasi)
โ โโโ Notifications/ # Kelas notifikasi (Email, dll.)
โโโ database/
โ โโโ migrations/ # 55+ migration files
โโโ resources/js/
โ โโโ Pages/
โ โ โโโ Admin/ # UI Admin Panel (Dashboard, Products, Orders, dll.)
โ โ โโโ Storefront/ # UI Pelanggan (Catalog, Cart, Checkout, dll.)
โ โ โโโ Orders/ # Halaman order tracking
โ โ โโโ Returns/ # Halaman pengajuan & tracking retur
โ โโโ Components/ # Komponen Vue yang dapat digunakan ulang
โ โโโ Layouts/ # Layout aplikasi
โโโ tests/ # Suite testing
Proyek ini bersifat privat dan merupakan karya studi. Seluruh hak dilindungi.