Gold Insight adalah aplikasi web modern berbasis Vue 3 + Vuetify untuk mengelola dan menganalisis portofolio emas fisik. Dilengkapi dengan dashboard interaktif, grafik harian, dan integrasi ke (supabase) untuk pengalaman pengelolaan investasi emas fisik.
- Login Nasabah - Autentikasi dengan nama & no HP
- Cloud Storage - Semua data tersimpan aman di Supabase
- Real-time Sync - Data tersinkronisasi otomatis
- Portfolio Summary - Total emas, nilai portfolio, rata-rata harga
- Profit Calculator - Hitung potensi profit secara otomatis
- Visual Charts - Donut chart komposisi & line chart harga historis
- Price Tracking - Harga emas update otomatis dari database
- Tambah Transaksi - Input transaksi beli/jual dengan mudah
- Auto-fill Prices - Harga otomatis terisi, bisa edit manual
- Transaction History - Riwayat lengkap dengan filter dan sort
- Delete Transactions - Hapus transaksi dengan konfirmasi
- PDF Export - Download laporan portfolio lengkap
- Auto-naming - Format:
report_portfolio_emas_{nohp}_{tgl}_{seq}.pdf - Comprehensive Report - Termasuk chart, komposisi, dan riwayat
- Quick Download - Tombol download muncul setelah isi feedback
- Modern Design - Gradient backgrounds, smooth animations
- Responsive Layout - Perfect di desktop, tablet, dan mobile
- Interactive Elements - Hover effects, loading states, transitions
- Smooth Animations - 15+ custom keyframe animations
- Mobile-first - Touch-friendly dengan optimized layouts
- Welcome Banner - Greeting banner dengan auto-dismiss
- Back-to-top Button - Smooth scroll ke atas halaman
- Empty States - Informative messages saat data kosong
- Loading Indicators - Visual feedback untuk setiap action
- Feedback System - Integrated Google Form untuk user feedback
- Node.js 16+
- npm atau yarn
-
Clone repository:
git clone <repository-url> cd goldins
-
Install dependencies:
npm install
-
Setup Environment:
Buat file
.envdan tambahkan Supabase credentials:VITE_SUPABASE_URL=your_supabase_url VITE_SUPABASE_ANON_KEY=your_supabase_key
-
Jalankan development server:
npm run dev
-
Buka di browser:
Kunjungi http://localhost:5173
npm run buildOutput akan tersimpan di folder dist/
goldins/
├── src/
│ ├── App.vue # Main application shell (header, onboarding, logout UX)
│ ├── main.js # App entry
│ ├── style.css # Global styles
│ ├── assets/ # Images & static files
│ │ ├── onboarding1.png
│ │ ├── onboarding2.png
│ │ ├── onboarding3.png
│ │ └── ss_v2.png
│ │ └── ss.jpeg
│ ├── components/ # Vue components
│ │ ├── Dashboard.vue # Main dashboard (welcome banner, summary)
│ │ ├── PortfolioSummary.vue # Portfolio overview
│ │ ├── GoldComposition.vue # Donut chart composition
│ │ ├── GoldPriceChart.vue # Line chart price history
│ │ ├── TransactionForm.vue # Add transaction form (desktop horizontal layout)
│ │ ├── TransactionHistory.vue # Transaction list (compact pagination)
│ │ └── AppFeedback.vue # Feedback & PDF export flow
│ └── lib/
│ └── SupabaseClient.js # Supabase configuration
├── api/
│ └── prices.js # Serverless function for price fetch (Vercel)
├── vite.config.js # Vite configuration
├── vercel.json # Vercel deployment config
└── package.json # Dependencies & scripts
- Vue 3 - Progressive JavaScript framework
- Vuetify 3 - Material Design component framework
- Chart.js - Interactive charts and graphs
- Vite - Next-generation frontend tooling
- jsPDF - PDF generation library
- html2canvas - Screenshot HTML elements
- Supabase - Backend-as-a-Service
- PostgreSQL database
- Authentication
- Row Level Security
- Vercel - Serverless deployment platform
- Edge functions for API proxy
- Automatic SSL
- Global CDN
- phone (varchar, primary key)
- name (varchar)
- created_at (timestamp)- id (bigint, primary key)
- user_phone (varchar, foreign key)
- type (varchar)
- brand (varchar)
- denom (numeric)
- count (integer)
- date (date)
- price (numeric)
- total_price (numeric)
- created_at (timestamp)- id (bigint, primary key)
- brand (varchar)
- denom (numeric)
- date (date)
- price_buyback (numeric) - Selling price
- price_sell (numeric) - Buying price
- created_at (timestamp)- Harga emas diambil dari database
gold_prices - Auto-fill berdasarkan merk, denominasi, dan tanggal
- User bisa override dengan harga manual
- Validasi otomatis untuk transaksi jual (cek saldo)
- Total Emas: Sum dari (denom × count) untuk transaksi beli - jual
- Senilai: Total emas × latest price
- Avg Harga Beli: Sum(total_price) ÷ Sum(gram) dari transaksi beli
- Potensi Profit: (Latest price - Avg buy price) × Total gram
- Donut Chart: Komposisi portfolio per brand dengan persentase
- Line Chart: Trend harga 7 hari terakhir per brand & denomination
- Price Stats: Highest & lowest price dari data chart
- Capture donut chart sebagai image (html2canvas)
- Generate multi-section PDF dengan jsPDF
- Auto-naming:
report_portfolio_emas_{phone}_{date}_{sequence}.pdf - Sections: Portfolio summary, composition, transaction history
- Feedback → Download: Tombol download muncul 3 detik setelah klik feedback
- No Scroll Needed: Download button contextual di lokasi feedback
- Smooth Animations: 15+ custom CSS animations untuk transitions
- Loading States: Visual feedback untuk setiap async operation
Aplikasi menggunakan custom CSS animations:
fadeInUp- Card entrance from bottomslideInLeft/Right- Horizontal entrancefadeInScale- Zoom in with fadepulse- Continuous breathing effectbounce- Profit arrow bounceshimmer- Gradient shimmer effectchartZoom- Chart appear animationslide-fade- Download button entrance- ... dan banyak lagi!
- Login dengan phone number baru
- Tambah transaksi beli
- Tambah transaksi jual (validasi saldo)
- Lihat portfolio summary update
- Check donut chart composition
- Check line chart price history
- Filter chart by brand & denomination
- Delete transaction
- Click feedback button
- Wait 3s and check download button appears
- Download PDF report
- Test on mobile device
- Test on different browsers
| Browser | Version | Status |
|---|---|---|
| Chrome | 90+ | ✅ Tested |
| Firefox | 88+ | ✅ Tested |
| Safari | 14+ | ✅ Tested |
| Edge | 90+ | ✅ Tested |
| Mobile Safari | 14+ | ✅ Tested |
| Chrome Android | 90+ | ✅ Tested |
-
Install Vercel CLI:
npm install -g vercel
-
Login:
vercel login
-
Deploy:
vercel --prod
-
Set Environment Variables:
Di Vercel dashboard, tambahkan:
VITE_SUPABASE_URLVITE_SUPABASE_ANON_KEY
Connect repository ke Vercel untuk automatic deployment:
- Push to
main→ Production deployment - Push to branch → Preview deployment
- Images di-optimize dengan Vite
- Lazy loading untuk components
- CSS animations hardware-accelerated (transform/opacity)
- Minimal re-renders dengan computed properties
- Supabase Row Level Security enabled
- API keys di environment variables
- XSS protection dengan Vue's template sanitization
- HTTPS enforced via Vercel
- Semantic HTML elements
- ARIA labels untuk screen readers
- Keyboard navigation support
- Sufficient color contrast ratios
- Touch-friendly tap targets (min 44x44px)
This project is licensed under the MIT License.
Built with ❤️ using Vue 3, Vuetify, Chart.js, Supabase, and Vercel.
- Vuetify Team - Amazing Material Design components
- Supabase - Powerful Backend-as-a-Service
- Vercel - Seamless deployment platform
- Chart.js - Beautiful interactive charts
- Vue.js Community - Helpful resources and support
Version: 2.0
Last Updated: October 2025
Status: ✅ Production Ready
