Skip to content

Elnathz/e-commerce

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

131 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ›’ Elnathz E-Commerce

Platform Marketplace E-Commerce Indonesia โ€” Dibangun dengan VILT Stack

Laravel Vue.js Inertia.js Tailwind CSS MySQL PHPUnit Vitest


๐Ÿ“– Tentang Proyek

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.


๐Ÿ—บ๏ธ Arsitektur Sistem

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_dispatches untuk mencegah pengiriman email duplikat.

โœจ Fitur Lengkap

๐Ÿช Storefront (Halaman Publik & Pelanggan)

  • 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.

๐Ÿ” Autentikasi

  • Registrasi, Login, Logout dengan Laravel Breeze.
  • Manajemen sesi aman berbasis Laravel Sanctum.

โš™๏ธ Admin Panel (Operasional)

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

๐Ÿ’ฐ Integrasi Pembayaran & Pengiriman

Proyek ini terintegrasi langsung dengan provider nyata yang umum digunakan di Indonesia:

Pembayaran

  • iPaymu โ€” Gateway pembayaran Indonesia, mendukung transfer bank, virtual account, dan dompet digital.

Pengiriman

Sistem pengiriman menggunakan abstraksi ShippingProviderInterface, sehingga mudah mengganti atau menambah provider baru.

  • RajaOngkir โ€” Kalkulasi ongkos kirim dari ratusan ekspedisi Indonesia.
  • Komerce โ€” Aggregator layanan pengiriman.

๐Ÿงฎ Domain Bisnis Inti

Alur Pesanan (Order Lifecycle)

Keranjang โ†’ Checkout โ†’ Pembayaran Pending
   โ†’ Pembayaran Dikonfirmasi โ†’ Diproses โ†’ Dikirim
   โ†’ Selesai (Pelanggan Konfirmasi Penerimaan)
   โ†’ [Opsional] Retur Diajukan โ†’ Inspeksi โ†’ Selesai/Ditolak

Sistem Promosi

  • 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.

Sistem Retur & Refund

  • 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).

Logika Keuangan

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 yang Digunakan

Backend

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

Frontend

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

Testing

Teknologi Kegunaan
PHPUnit Unit & Feature testing backend
Vitest Unit testing frontend (Vue components)
Vue Test Utils Testing utilitas komponen Vue

๐Ÿš€ Cara Menjalankan Proyek

Persyaratan

  • PHP >= 8.2
  • Composer
  • Node.js >= 18 & NPM
  • MySQL (atau SQLite untuk development lokal)
  • Redis (opsional untuk development, wajib untuk production queue)

Langkah Instalasi

1. Clone repositori

git clone https://github.com/Elnathz/e-commerce.git
cd e-commerce

2. Install dependensi

composer install
npm install

3. Konfigurasi environment

cp .env.example .env

Buka .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 production

4. Generate application key

php artisan key:generate

5. Jalankan migrasi & seeder

php artisan migrate --seed

6. Jalankan development server

Jalankan semua server sekaligus (Laravel + Queue + Vite + Log Watcher):

composer dev

Atau 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=1

Akses aplikasi di: http://localhost:8000


๐Ÿงช Pengujian

Proyek ini menggunakan standar testing modern di dua lapisan.

Backend (PHPUnit)

php artisan test
# atau
composer test

Frontend (Vitest)

npm run test

๐Ÿ“ Struktur Direktori Penting

e-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

๐Ÿ“œ Lisensi

Proyek ini bersifat privat dan merupakan karya studi. Seluruh hak dilindungi.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors