PantauBBM adalah aplikasi web untuk memantau harga BBM Indonesia per wilayah. Aplikasi ini menampilkan harga terkini, pencarian wilayah, tren harga, histori perubahan, serta admin panel untuk sinkronisasi data dan pengelolaan konten publik.
Website: https://pantaubbm.viasco.my.id/
PantauBBM bukan situs resmi Pertamina, MyPertamina, atau pemerintah Indonesia.
- Pencarian wilayah dengan autocomplete
- Daftar harga BBM regional
- Filter produk dan urutan harga
- Detail wilayah dengan harga saat ini
- Tren harga dan histori perubahan
- Halaman About dinamis
- Loading bar dan skeleton UI
- Dashboard operasional
- Sinkronisasi manual harga BBM
- Sync logs dan audit logs
- Manajemen user admin
- Runtime settings
- Konten About yang bisa diedit
- Fetch profil GitHub untuk data creator
| Layer | Teknologi |
|---|---|
| Backend | Laravel 12, PHP 8.2 |
| Frontend | Vue 3, Inertia.js, Vite |
| Styling | Tailwind CSS |
| Auth | Laravel Breeze |
| Routing helper | Ziggy |
| HTTP client | Axios, Laravel HTTP Client |
| Testing | PHPUnit |
| Tooling | Laravel Pint, Laravel Pail |
| Database | MySQL / PostgreSQL / SQLite |
Data harga BBM diambil dari Bensin API.
Source code API: nasgunawann/bensin-api
Konfigurasi utama:
FUEL_API_BASE_URL=https://nasgunawann.github.io/bensin-api
FUEL_API_TIMEOUT=15
FUEL_API_RETRY_ATTEMPTS=3
FUEL_API_RETRY_SLEEP_MS=500
FUEL_API_USER_AGENT="PantauBBM/1.0"Lihat detail integrasi di docs/05-api-integration.md dan sync engine di docs/06-sync-engine.md.
git clone <repo-url>
cd harga-bensincomposer install
npm installcp .env.example .env
php artisan key:generateMinimal konfigurasi .env:
APP_NAME=PantauBBM
APP_URL=http://localhost
APP_TIMEZONE=Asia/Jakarta
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=pantaubbm
DB_USERNAME=root
DB_PASSWORD=php artisan migrate --seedSeeder membuat:
- katalog produk BBM
- admin default dari
ADMIN_* - settings default termasuk konten About
Terminal 1:
php artisan serveTerminal 2:
npm run devBuka aplikasi di http://localhost:8000.
Atur credential admin lewat .env:
ADMIN_NAME=Administrator
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=password
ADMIN_REGISTRATION_ENABLED=falseLogin admin lewat /login, lalu buka /admin/dashboard.
Sinkronisasi bisa dijalankan dari admin dashboard atau command scheduler.
Contoh manual lewat Artisan:
php artisan fuel:syncJadwal sync dikontrol dari env/settings:
FUEL_SYNC_SCHEDULE_CRON="0 */6 * * *"
FUEL_SYNC_LOCK_STORE=file
FUEL_SYNC_LOCK_SECONDS=600
FUEL_SYNC_CACHE_STORE=filenpm run buildUntuk deployment Laravel umum:
php artisan config:cache
php artisan route:cache
php artisan view:cachephp artisan test
npm run buildJika memakai formatter Laravel Pint:
./vendor/bin/pintapp/
├── Http/Controllers
├── Models
└── Services
resources/js/
├── Components
├── Layouts
└── Pages
database/
├── migrations
└── seeders
docs/
└── *.md
Dokumentasi proyek ada di folder docs/.
docs/01-project-overview.md— gambaran proyekdocs/02-branding-design-system.md— brand dan design systemdocs/03-functional-requirements.md— kebutuhan fiturdocs/04-database-design.md— desain databasedocs/05-api-integration.md— integrasi Bensin APIdocs/06-sync-engine.md— engine sinkronisasidocs/07-routing-navigation.md— routing dan navigasidocs/08-frontend-architecture.md— arsitektur frontenddocs/09-backend-architecture.md— arsitektur backenddocs/10-seo-strategy.md— strategi SEOdocs/11-deployment.md— deploymentdocs/roadmap.md— roadmap
Ringkasan dokumentasi ada di README-docs.md.
| Key | Fungsi |
|---|---|
APP_TIMEZONE |
Timezone aplikasi, default Asia/Jakarta |
FUEL_API_BASE_URL |
Base URL Bensin API |
FUEL_API_TIMEOUT |
Timeout request API |
FUEL_SYNC_SCHEDULE_CRON |
Jadwal sync |
ADMIN_EMAIL |
Email admin awal |
ADMIN_PASSWORD |
Password admin awal |
ADMIN_REGISTRATION_ENABLED |
Aktif/nonaktif registrasi publik |
Proyek ini memakai lisensi MIT.