Skip to content

πŸ›οΈ Modern e-commerce platform for vintage & preloved fashion. Built with PHP & MySQL. Features: product catalog, shopping cart, order tracking, payment verification, email OTP, real-time shipping updates, and comprehensive admin dashboard.

Notifications You must be signed in to change notification settings

ahwine/retroloved

Repository files navigation

πŸ›οΈ RetroLoved E-Commerce

Platform e-commerce modern untuk penjualan fashion vintage dan preloved dengan sistem manajemen produk, pesanan, dan customer yang lengkap.

PHP Version MySQL License


πŸ‘₯ Tim Pengembang


πŸ“‹ Daftar Isi


✨ Fitur Utama

πŸ›’ Customer Features

  • βœ… Registrasi dan login dengan verifikasi email OTP
  • βœ… Browse dan search produk vintage/preloved
  • βœ… Shopping cart dengan validasi stok real-time
  • βœ… Checkout dengan multiple payment methods
  • βœ… Manajemen profil dan multiple shipping addresses
  • βœ… Real-time order tracking dengan timeline
  • βœ… Notifikasi pesanan (in-app notifications)
  • βœ… Recently viewed products
  • βœ… Contact support system

πŸ‘¨β€πŸ’Ό Admin Features

  • βœ… Dashboard dengan statistik lengkap (revenue, orders, customers)
  • βœ… Manajemen produk (CRUD dengan multiple images upload)
  • βœ… Manajemen pesanan dan update status
  • βœ… Manajemen customer (view, block/unblock)
  • βœ… Konfirmasi pembayaran dengan preview bukti transfer
  • βœ… Update tracking pesanan dengan detail lokasi
  • βœ… Auto-generate tracking number dan courier assignment
  • βœ… Export reports (coming soon)

🎨 UI/UX Features

  • βœ… Responsive design (mobile, tablet, desktop)
  • βœ… Modern toast notifications (no alert popups)
  • βœ… Custom confirmation modals
  • βœ… Smooth animations dan transitions
  • βœ… Loading states dan skeleton screens
  • βœ… Image lazy loading
  • βœ… Form validation real-time

πŸ› οΈ Teknologi

Backend

  • PHP 8.0+ (OOP & Procedural)
  • MySQL/MariaDB 5.7+ (Relational Database)
  • PHPMailer 6.x (Email Service)
  • Composer (Dependency Management)

Frontend

  • HTML5 (Semantic Markup)
  • CSS3 (Custom Design System)
  • JavaScript (Vanilla JS, ES6+)
  • SVG Icons (Custom Icons)

Server

  • Apache 2.4+ (Web Server)
  • .htaccess (URL Rewriting)

πŸ“¦ Persyaratan Sistem

Minimum Requirements

  • PHP: 8.0 atau lebih tinggi
  • MySQL: 5.7+ atau MariaDB 10.4+
  • Apache: 2.4+ dengan mod_rewrite enabled
  • Composer: 2.x
  • RAM: 512 MB minimum
  • Storage: 500 MB minimum

PHP Extensions Required

- mysqli
- mbstring
- openssl
- json
- curl
- gd (untuk image processing)

Recommended

  • PHP: 8.1+
  • MySQL: 8.0+
  • RAM: 1 GB+
  • Storage: 1 GB+

πŸš€ Instalasi & Setup

Metode 1: Setup Otomatis (Recommended)

Step 1: Clone Repository

git clone https://github.com/ahwine/retroloved.git
cd retroloved

Step 2: Install Dependencies

composer install

Step 3: Buat Database

Buka phpMyAdmin atau MySQL CLI:

CREATE DATABASE retroloved CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Step 4: Import Database

Via phpMyAdmin:

  1. Pilih database retroloved
  2. Klik tab "Import"
  3. Pilih file backup/retroloved.sql
  4. Klik "Go"

Via Command Line:

mysql -u root -p retroloved < backup/retroloved.sql

Step 5: Konfigurasi Database

Edit file config/database.php:

$host = 'localhost';
$username = 'root';          // Ganti dengan username MySQL Anda
$password = '';              // Ganti dengan password MySQL Anda
$database = 'retroloved';

Step 6: Konfigurasi Email (Opsional)

Edit file config/email.php:

define('SMTP_HOST', 'smtp.gmail.com');
define('SMTP_USERNAME', 'your-email@gmail.com');
define('SMTP_PASSWORD', 'your-app-password');  // Gunakan App Password untuk Gmail
define('SMTP_PORT', 587);

Cara Membuat Gmail App Password:

  1. Buka Google Account Settings
  2. Security β†’ 2-Step Verification
  3. App passwords β†’ Generate new password
  4. Copy password dan paste ke config

Step 7: Set Folder Permissions

Windows (XAMPP):

  • Folder sudah otomatis memiliki permission yang benar

Linux/Mac:

chmod 755 assets/images/products
chmod 755 assets/images/profiles
chmod 755 backup

Step 8: Jalankan Website

Menggunakan XAMPP:

  1. Copy folder retroloved ke C:\xampp\htdocs\
  2. Start Apache dan MySQL di XAMPP Control Panel
  3. Buka browser: http://localhost/retroloved

Menggunakan PHP Built-in Server:

php -S localhost:8000

Buka browser: http://localhost:8000

Step 9: Login Admin

URL: http://localhost/retroloved/admin
Username: admin
Password: 123
Email: admin@retroloved.com

⚠️ PENTING: Ganti password admin setelah login pertama kali!


Metode 2: Setup Manual

Jika Anda ingin setup manual, ikuti langkah berikut:

1. Download/Clone Project

git clone https://github.com/ahwine/retroloved.git

2. Install Composer Dependencies

cd retroloved
composer install

3. Setup Database

# Buat database
mysql -u root -p -e "CREATE DATABASE retroloved CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

# Import database
mysql -u root -p retroloved < backup/retroloved.sql

4. Copy Config Files

# Jika menggunakan example files
cp config/database.example.php config/database.php
cp config/email.example.php config/email.php

5. Edit Config Files

Edit config/database.php dan config/email.php sesuai environment Anda.

6. Set Permissions

chmod -R 755 assets/images
chmod -R 755 backup

7. Start Server

php -S localhost:8000

βš™οΈ Konfigurasi

Database Configuration

File: config/database.php

<?php
// Database connection settings
$host = 'localhost';
$username = 'root';
$password = '';
$database = 'retroloved';

// Timezone
date_default_timezone_set('Asia/Jakarta');

Email Configuration

File: config/email.php

<?php
// SMTP Configuration
define('SMTP_HOST', 'smtp.gmail.com');
define('SMTP_USERNAME', 'your-email@gmail.com');
define('SMTP_PASSWORD', 'your-app-password');
define('SMTP_PORT', 587);
define('SMTP_SECURE', 'tls');

// Email Settings
define('FROM_EMAIL', 'noreply@retroloved.com');
define('FROM_NAME', 'RetroLoved');

Shipping Configuration

File: config/shipping.php

  • Konfigurasi kurir dan layanan pengiriman
  • Auto-generate tracking number
  • Auto-assign courier driver

πŸ“– Penggunaan

Akun Default

Admin Account

URL: http://localhost/retroloved/admin
Username: admin
Password: 123
Email: admin@retroloved.com

Test Customer Account (Opsional)

Anda bisa membuat akun customer baru melalui halaman register.

Workflow Customer

  1. Register β†’ Verifikasi email dengan OTP
  2. Browse Products β†’ Lihat katalog produk
  3. Add to Cart β†’ Tambahkan produk ke keranjang
  4. Checkout β†’ Isi data pengiriman dan pilih payment
  5. Upload Payment Proof β†’ Upload bukti transfer
  6. Track Order β†’ Pantau status pesanan real-time

Workflow Admin

  1. Login β†’ Akses admin panel
  2. Dashboard β†’ Lihat statistik dan overview
  3. Manage Products β†’ Tambah/edit/hapus produk
  4. Manage Orders β†’ Konfirmasi payment, update status
  5. Manage Customers β†’ Lihat data customer, block jika perlu
  6. Update Tracking β†’ Update lokasi dan status pengiriman

πŸ“ Struktur Folder

retroloved/
β”œβ”€β”€ admin/                      # Admin panel
β”‚   β”œβ”€β”€ dashboard.php          # Dashboard dengan statistik
β”‚   β”œβ”€β”€ products.php           # Manajemen produk
β”‚   β”œβ”€β”€ product-add.php        # Tambah produk baru
β”‚   β”œβ”€β”€ product-edit.php       # Edit produk
β”‚   β”œβ”€β”€ orders.php             # Manajemen pesanan
β”‚   β”œβ”€β”€ order-detail.php       # Detail pesanan
β”‚   └── customers.php          # Manajemen customer
β”œβ”€β”€ assets/                     # Static assets
β”‚   β”œβ”€β”€ css/                   # Stylesheets
β”‚   β”‚   β”œβ”€β”€ style.css         # Main stylesheet
β”‚   β”‚   β”œβ”€β”€ admin.css         # Admin styles
β”‚   β”‚   └── toast.css         # Toast notification styles
β”‚   β”œβ”€β”€ js/                    # JavaScript files
β”‚   β”‚   β”œβ”€β”€ script.js         # Main script
β”‚   β”‚   β”œβ”€β”€ toast.js          # Toast notifications
β”‚   β”‚   β”œβ”€β”€ modal.js          # Modal dialogs
β”‚   β”‚   └── confirm-modal.js  # Confirmation modals
β”‚   └── images/                # Images
β”‚       β”œβ”€β”€ products/         # Product images
β”‚       └── profiles/         # Profile pictures
β”œβ”€β”€ auth/                       # Authentication
β”‚   β”œβ”€β”€ process-auth.php      # Login/Register handler
β”‚   β”œβ”€β”€ logout.php            # Logout handler
β”‚   └── check-availability.php # Username/email checker
β”œβ”€β”€ backup/                     # Database backups
β”‚   └── retroloved.sql        # Database schema & data
β”œβ”€β”€ config/                     # Configuration files
β”‚   β”œβ”€β”€ database.php          # Database config
β”‚   β”œβ”€β”€ email.php             # Email config
β”‚   └── shipping.php          # Shipping config
β”œβ”€β”€ customer/                   # Customer panel
β”‚   β”œβ”€β”€ cart.php              # Shopping cart
β”‚   β”œβ”€β”€ checkout.php          # Checkout page
β”‚   β”œβ”€β”€ orders.php            # Order history
β”‚   β”œβ”€β”€ order-detail.php      # Order detail & tracking
β”‚   β”œβ”€β”€ product-detail.php    # Product detail page
β”‚   β”œβ”€β”€ profile.php           # Customer profile
β”‚   └── notifications.php     # Notifications
β”œβ”€β”€ includes/                   # Reusable components
β”‚   β”œβ”€β”€ header.php            # Header component
β”‚   β”œβ”€β”€ footer.php            # Footer component
β”‚   β”œβ”€β”€ shipping-selection.php # Shipping selector
β”‚   └── tracking-timeline.php  # Order tracking timeline
β”œβ”€β”€ vendor/                     # Composer dependencies
β”œβ”€β”€ .gitignore                 # Git ignore file
β”œβ”€β”€ .htaccess                  # Apache config
β”œβ”€β”€ composer.json              # Composer config
β”œβ”€β”€ index.php                  # Homepage
β”œβ”€β”€ shop.php                   # Shop page
β”œβ”€β”€ faq.php                    # FAQ page
β”œβ”€β”€ how-it-works.php           # How it works page
β”œβ”€β”€ privacy-policy.php         # Privacy policy
β”œβ”€β”€ terms-conditions.php       # Terms & conditions
β”œβ”€β”€ shipping-delivery.php      # Shipping info
β”œβ”€β”€ size-guide.php             # Size guide
β”œβ”€β”€ process-contact-support.php # Contact form handler
β”œβ”€β”€ cleanup-files.bat          # Cleanup utility (Windows)
β”œβ”€β”€ reset-database.bat         # Database reset utility (Windows)
β”œβ”€β”€ reset-database-safe.sql    # Database reset script
β”œβ”€β”€ INSTALL.md                 # Installation guide
β”œβ”€β”€ PRE-LAUNCH-CHECKLIST.md    # Pre-launch checklist
└── README.md                  # This file

πŸ› Troubleshooting

Error: "Connection failed"

Penyebab: Database tidak terkoneksi

Solusi:

  1. Pastikan MySQL/MariaDB sudah running
  2. Cek konfigurasi di config/database.php
  3. Pastikan database retroloved sudah dibuat
  4. Cek username dan password MySQL
# Cek MySQL status (Linux/Mac)
sudo systemctl status mysql

# Cek MySQL status (Windows XAMPP)
# Buka XAMPP Control Panel, pastikan MySQL running

Error: "Permission denied" saat upload gambar

Penyebab: Folder tidak memiliki write permission

Solusi:

Windows:

  1. Klik kanan folder assets/images/products
  2. Properties β†’ Security
  3. Edit β†’ Users β†’ Allow "Write"

Linux/Mac:

chmod -R 755 assets/images
chown -R www-data:www-data assets/images  # Untuk Apache

Email tidak terkirim

Penyebab: Konfigurasi SMTP salah atau firewall blocking

Solusi:

  1. Pastikan konfigurasi di config/email.php benar
  2. Untuk Gmail, gunakan App Password bukan password biasa
  3. Cek firewall tidak memblokir port 587
  4. Test dengan script sederhana:
<?php
require 'vendor/autoload.php';
require 'config/email.php';

$result = EmailHelper::send(
    'test@example.com',
    'Test Email',
    'This is a test email'
);

echo $result ? 'Email sent!' : 'Email failed!';

Halaman blank/error 500

Penyebab: PHP error atau missing extension

Solusi:

  1. Enable error display di php.ini:
display_errors = On
error_reporting = E_ALL
  1. Cek PHP error log:
# Linux/Mac
tail -f /var/log/apache2/error.log

# Windows XAMPP
# Lihat di: C:\xampp\apache\logs\error.log
  1. Pastikan PHP extensions aktif:
php -m | grep mysqli
php -m | grep mbstring
php -m | grep openssl

Composer install gagal

Penyebab: Composer tidak terinstall atau network issue

Solusi:

  1. Install Composer: https://getcomposer.org/download/
  2. Update Composer:
composer self-update
  1. Clear cache dan retry:
composer clear-cache
composer install

Database import error

Penyebab: SQL syntax error atau charset issue

Solusi:

  1. Pastikan MySQL version minimal 5.7
  2. Set charset saat import:
mysql -u root -p --default-character-set=utf8mb4 retroloved < backup/retroloved.sql
  1. Atau via phpMyAdmin, pilih charset: utf8mb4_unicode_ci

πŸ”’ Keamanan

Untuk Production

1. Ganti Password Default

-- Login ke MySQL
UPDATE users SET password = MD5('password_baru_yang_kuat') WHERE username = 'admin';

2. Update Database Credentials

Edit config/database.php:

$username = 'retroloved_user';  // Jangan gunakan root
$password = 'password_yang_kuat_dan_random';

3. Disable Error Display

Edit php.ini atau .htaccess:

display_errors = Off
log_errors = On
error_log = /path/to/error.log

4. Enable HTTPS

# .htaccess
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

5. Secure File Permissions

# Linux/Mac
chmod 644 config/*.php
chmod 755 assets/images

6. Backup Database Regularly

# Setup cron job untuk backup otomatis
0 2 * * * mysqldump -u root -p retroloved > /backup/retroloved_$(date +\%Y\%m\%d).sql

7. Update Dependencies

composer update

8. Enable Security Headers

Tambahkan di .htaccess:

Header set X-Content-Type-Options "nosniff"
Header set X-Frame-Options "SAMEORIGIN"
Header set X-XSS-Protection "1; mode=block"

πŸ§ͺ Testing

Manual Testing

  1. Register akun baru β†’ Cek email OTP
  2. Login β†’ Cek session
  3. Browse products β†’ Cek pagination
  4. Add to cart β†’ Cek cart count
  5. Checkout β†’ Cek order creation
  6. Upload payment β†’ Cek file upload
  7. Admin: Confirm payment β†’ Cek status update
  8. Track order β†’ Cek timeline

Database Reset (Untuk Testing)

# Windows
reset-database.bat

# Manual via phpMyAdmin
# Import file: reset-database-safe.sql

πŸ“ Changelog

Version 1.0.0 (Current)

  • βœ… Initial release
  • βœ… Customer registration dengan email OTP
  • βœ… Product management dengan multiple images
  • βœ… Shopping cart dan checkout
  • βœ… Order tracking dengan timeline
  • βœ… Admin dashboard dengan statistik
  • βœ… Payment confirmation system
  • βœ… Notification system
  • βœ… Responsive design

🀝 Contributing

Contributions are welcome! Jika Anda ingin berkontribusi:

  1. Fork repository ini
  2. Buat branch baru (git checkout -b feature/AmazingFeature)
  3. Commit changes (git commit -m 'Add some AmazingFeature')
  4. Push ke branch (git push origin feature/AmazingFeature)
  5. Buat Pull Request

πŸ“„ Lisensi

Project ini dibuat untuk keperluan pembelajaran dan portfolio.


πŸ“ž Kontak & Support

Untuk pertanyaan, bug report, atau feature request:


πŸ™ Acknowledgments

  • PHPMailer untuk email service
  • Font Awesome untuk icons (jika digunakan)
  • Inspiration dari berbagai e-commerce platforms

RetroLoved - Vintage Fashion, Modern Style πŸ›οΈ

Made with ❀️ by Andre & Gilang

⬆ Back to Top

About

πŸ›οΈ Modern e-commerce platform for vintage & preloved fashion. Built with PHP & MySQL. Features: product catalog, shopping cart, order tracking, payment verification, email OTP, real-time shipping updates, and comprehensive admin dashboard.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •