Avera App adalah aplikasi e-commerce modern yang dirancang untuk memberikan pengalaman belanja online yang cepat, aman, dan nyaman. Aplikasi ini menggunakan Next.js (TypeScript) untuk frontend dan Laravel 11 + PHP 8.3-FPM untuk backend, dengan arsitektur monorepo.
Fitur Utama:
- Browsing produk & kategori
- Manajemen toko & produk
- Keranjang belanja & checkout
- Pembayaran COD & Midtrans Snap token
- Estimasi ongkir & tracking order (Indonesia)
- Sistem voucher, promo & diskon
- Moderasi konten gambar menggunakan Sightengine
- Perhitungan ongkir & wilayah dengan RajaOngkir
- Sistem user dengan roles: buyer, seller, admin
- Product listing, detail, carousel, filter
- Cart management
- Checkout & Midtrans integration
- Responsive UI dengan Tailwind CSS
- Preview gambar & upload dengan moderation (Sightengine)
- Scrollable lists & interaktif modal untuk pengalaman user-friendly
- REST API untuk produk, cart, checkout, user, voucher, order
- Policy & Gate untuk otorisasi user
- Integrasi Midtrans (Snap token) & pembayaran COD
- Integrasi API ongkir (RajaOngkir / kurir lokal)
- Redis caching untuk session & queue (Predis client)
- Unit & Feature tests untuk core order flow
- Queue & Event system untuk email & push notification
- Validasi dan moderasi upload gambar menggunakan Sightengine API
/Avera
├─ /avera-be # Backend Laravel 11 + PHP-FPM + Redis
│ ├─ app/
│ ├─ config/
│ ├─ database/
│ └─ docker/
├─ /avera-fe # Frontend Next.js + TypeScript + Tailwind CSS
├─ docker-compose.yml
└─ README.md
| Layer | Teknologi |
|---|---|
| Frontend | Next.js, TypeScript, Tailwind CSS, Shadcn, React Query |
| Backend | Laravel 11, PHP 8.3-FPM, Redis (Predis) |
| Database | PostgreSQL 15 |
| Caching/Queue | Redis (Predis) |
| Payments | Midtrans (Snap token, COD) |
| Shipping | RajaOngkir API |
| Moderation | Sightengine (image moderation) |
| Container | Docker, Docker Compose |
| Testing | PHPUnit (Feature & Unit test) |
Tabel Utama:
- Menyimpan data pengguna aplikasi.
- Role:
buyer,seller,admin.
- Menyimpan data toko.
- Satu user bisa memiliki satu toko.
- Relasi:
products,store_vouchers,banners.
- Menyimpan daftar produk.
- Bisa memiliki lebih dari satu gambar (relasi ke tabel
images). - Bisa masuk dalam
promotionsataucampaigns.
- Menyimpan data order dari user.
- Menyertakan subtotal, shipping cost, total price.
- Status:
pending,awaiting_payment,paid,processing,shipped,completed,cancelled.
- Detail tiap produk dalam order.
- Termasuk: quantity, price, discount, weight, voucher yang digunakan.
- Menyimpan data produk di keranjang user.
- Mempermudah proses checkout.
- Menyimpan ulasan dan rating produk.
- Bisa terkait ke
order_itemuntuk produk yang sudah dibeli.
- Menyimpan data promo toko:
product_discount,bundle,combo. - Menyimpan produk yang termasuk dalam promo.
- Menyimpan data voucher:
cashback,discount,free_shipping. - Relasi ke toko/campaign dan user yang mengklaim voucher.
- Menyimpan banner homepage, kategori, promo, toko, atau admin.
- Bisa memiliki multiple images dengan urutan dan status moderasi.
- Menyimpan data sementara sebelum menjadi order.
- Termasuk produk, harga, ongkir, voucher, promo, dan pilihan kurir.
- Menyimpan data transaksi.
- Metode:
CODatau payment gateway (misal: Midtrans). - Menyimpan status pembayaran dan informasi gateway.
- Menyimpan data pengiriman order.
- Termasuk kurir, service, estimasi hari, tracking number, recipient info, dan status pengiriman.
- Menyimpan data invoice untuk setiap order.
- Termasuk nomor invoice, tanggal diterbitkan, due date, status pembayaran, total amount.
- Menyimpan pesan antara user (buyer-seller) untuk komunikasi terkait order.
- Menyimpan estimasi waktu pengiriman (SLAs) untuk masing-masing kurir yang aktif.
- Tabel
imagesmenyimpan file gambar untukproducts,stores,users,banners, dan kategori. - Tabel
user_addressesdanstore_addressesmenyimpan detail alamat lengkap, termasuk provinsi, kota, distrik, dan desa, menggunakan datarajaongkir. - Moderation dilakukan pada
imagesdanbannersuntuk memastikan konten sesuai aturan.
Diagram Tabel Akhir:
Berikut diagram tabel Avera App :
users ---< stores ---< products
users ---< cart_items --- products
users ---< orders ---< order_items --- products
orders ---< payments
products ---< reviews
orders ---< shipments
git clone https://github.com/username/avera.git
cd averacp avera-be/.env.example avera-be/.env
cp avera-fe/.env.example avera-fe/.env# Database
DB_CONNECTION=pgsql
DB_HOST=db
DB_PORT=5432
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=secret
# Redis
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
# Midtrans
MIDTRANS_SERVER_KEY=your_server_key
MIDTRANS_CLIENT_KEY=your_client_key
MIDTRANS_IS_PRODUCTION=false
# Sightengine
SIGHTENGINE_API_USER=your_user
SIGHTENGINE_API_SECRET=your_secret
# RajaOngkir
RAJAONGKIR_API_KEY=your_api_keydocker-compose up --build -ddocker exec -it avera-backend bash
php artisan key:generate
php artisan migrate
php artisan db:seed- Frontend:
http://localhost:3000 - Backend API:
http://localhost:8001/api/v1
GET /api/v1/products
GET /api/v1/products/{id}GET /api/v1/cart
POST /api/v1/cart
DELETE /api/v1/cart/{id}POST /api/v1/checkout/{checkout_id}/place-order POST /api/v1/order/payment/callbackPOST /api/v1/seller/product/image
# otomatis dicek menggunakan Sightengine APIBackend Laravel:
docker exec -it avera-backend bash
php artisan test- Push notification & email otomatis
- Multi-vendor marketplace
- Wishlist & rekomendasi produk
- Admin dashboard analytics
- Multi-language & multi-currency support
- CI/CD GitHub Actions + Docker build otomatis
- Optimasi caching Redis & queue untuk performa
Order Flow:
User selects product → Add to Cart → Checkout → Place Order → Payment (Midtrans/COD) → Shipment → Order Completed
Moderation Flow:
User uploads product image → Sightengine moderation → Approved / Rejected
Ongkir Flow:
User selects product → Add to Cart → Checkout → RajaOngkir API calculates cost → Checkout Page


