Fitur ini menyediakan tracking dan analitik pengunjung website dengan visualisasi grafik yang informatif.
- Hono - Framework web minimalis dan cepat untuk Node.js
- Better SQLite3 - Database lokal untuk menyimpan data statistik
- Node.js - Runtime environment
- React - Library UI
- Recharts - Library untuk membuat grafik/chart
- Axios - HTTP client untuk API calls
- date-fns - Library untuk manipulasi tanggal
Menyimpan setiap page view yang terjadi
id- Primary keypage_path- URL path yang dikunjungipage_title- Judul halamantimestamp- Waktu kunjunganuser_agent- Browser/device informationreferrer- Dari mana pengunjung datang
Statistik harian pengunjung
id- Primary keydate- Tanggaltotal_visits- Total kunjunganunique_pages- Jumlah halaman unik yang dikunjungi
Halaman paling populer
id- Primary keypage_path- URL pathpage_title- Judul halamanview_count- Jumlah viewlast_viewed- Waktu terakhir dilihat
Track page view baru
{
"pagePath": "/detail-comic/one-piece",
"pageTitle": "One Piece - Chapter 1",
"referrer": "https://google.com"
}Mendapatkan overview statistik keseluruhan
{
"total_views": 1234,
"unique_pages": 45,
"today_views": 89,
"yesterday_views": 67
}Mendapatkan data views harian untuk 30 hari terakhir
[
{ "date": "2025-01-01", "views": 123 },
{ "date": "2025-01-02", "views": 145 }
]Mendapatkan data views per jam untuk hari ini
[
{ "hour": "00:00", "views": 12 },
{ "hour": "01:00", "views": 8 }
]Mendapatkan halaman paling populer
[
{
"page_path": "/detail-comic/one-piece",
"page_title": "One Piece",
"view_count": 456
}
]Mendapatkan aktivitas terbaru
[
{
"page_path": "/trending",
"page_title": "Trending Comics",
"timestamp": "2025-01-07 14:30:00"
}
]Health check endpoint
{
"status": "ok",
"timestamp": "2025-01-07T14:30:00.000Z"
}npm installCopy file .env.example menjadi .env:
cp .env.example .envEdit .env jika perlu mengubah konfigurasi.
npm run dev:allTerminal 1 - Backend:
npm run serverTerminal 2 - Frontend:
npm run dev- Frontend: http://localhost:5173
- Backend API: http://localhost:3001
- Halaman Statistik: http://localhost:5173/statistics
- Total Views - Total semua page views
- Today Views - Views hari ini dengan persentase pertumbuhan
- Unique Pages - Jumlah halaman unik yang pernah dikunjungi
- Yesterday Views - Views kemarin untuk perbandingan
- Line chart menampilkan trend views 30 hari terakhir
- Membantu melihat pola kunjungan harian
- Bar chart menampilkan views per jam untuk hari ini
- Berguna untuk mengetahui jam-jam peak traffic
- List 10 halaman paling banyak dikunjungi
- Menampilkan jumlah views setiap halaman
- 10 aktivitas kunjungan terbaru
- Real-time monitoring pengunjung
- Tombol refresh untuk update data terbaru
- Data di-cache untuk performa optimal
Tracking otomatis terintegrasi di setiap halaman menggunakan custom hook usePageTracking:
import usePageTracking from './hooks/usePageTracking'
function App() {
usePageTracking() // Otomatis track setiap route change
return <Routes>...</Routes>
}- Hook mendeteksi perubahan route menggunakan
useLocation - Setiap ada navigasi, data dikirim ke API backend
- Backend menyimpan data ke database SQLite
- Data bisa dilihat di dashboard
/statistics
manhwa/
├── server/
│ ├── db.js # Database setup dan queries
│ ├── index.js # Hono server dan API endpoints
│ └── statistics.db # SQLite database (auto-generated)
├── src/
│ ├── hooks/
│ │ └── usePageTracking.js # Hook untuk tracking
│ ├── Pages/
│ │ └── StatisticsPage.jsx # Dashboard statistik
│ └── App.jsx # Integrasi tracking
└── package.json
- Backup Database: Database ada di
server/statistics.db, backup secara berkala - Performance: Database menggunakan index untuk query cepat
- Privacy: Data hanya menyimpan path dan basic info, tidak ada personal data
- Error Handling: Tracking gagal tidak akan mengganggu user experience
- Scalability: Untuk traffic tinggi, pertimbangkan migrasi ke PostgreSQL/MySQL
- Pastikan port 3001 tidak digunakan aplikasi lain
- Check error message di console
- Pastikan dependencies sudah terinstall dengan benar
- Pastikan backend server sudah running
- Check browser console untuk error
- Verify API URL di
.envsesuai dengan server
- Delete file
server/statistics.dbuntuk reset database - Database akan otomatis dibuat ulang saat server start
Beberapa ide pengembangan lebih lanjut:
- Export data ke CSV/Excel
- Filter by date range
- Geographic data (IP to location)
- Device & browser analytics
- Real-time dashboard dengan WebSocket
- Notification untuk traffic spike
- Custom events tracking
- A/B testing support