Ini adalah backend untuk aplikasi kompresi audio & video berbasis Laravel 12, PostgreSQL, dan Redis. Semua kompresi media berat dilakukan secara asynchronous (di background) menggunakan integrasi FFmpeg.
Sebelum menjalankan project ini, pastikan sistem komputermu sudah memiliki:
- PHP >= 8.2 (pastikan ekstensi
pdo_pgsql,redis, dll aktif). - Composer (untuk instalasi dependensi Laravel).
- PostgreSQL (sebagai database utama).
- Redis (sebagai antrean / queue worker). Memerlukan instalasi via instalasi lokal, brew, atau Docker.
- FFmpeg & FFprobe (harus terinstal di system environment PATH sehingga OS mengenali perintah
ffmpeg).
Buka terminal dan arahkan ke folder compression-web-backend, lalu install package:
cd compression-web-backend
composer installSalin file .env.example menjadi .env (jika .env belum ada):
cp .env.example .envLalu pastikan pengaturan database dan queue mengarah ke konfigurasi yang benar:
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=compression_web
DB_USERNAME=postgres
DB_PASSWORD=root # Sesuaikan dengan password pgsql kamu
QUEUE_CONNECTION=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
FRONTEND_URL=http://localhost:5173Secara khusus, karena kita membolehkan upload video hingga 512MB, kamu HARUS memastikan batas upload dari PHP (di dalam file php.ini sistem-mu) sudah ditingkatkan.
Buka php.ini (lokasinya bisa dicek via perintah php --ini), lalu ubah baris ini:
upload_max_filesize = 512M
post_max_size = 512M(Ingat untuk me-restart terminal atau service php setelah merubahnya).
Jalankan migrasi tabel ke PostgreSQL dan buat symlink folder storage agar file bisa diakses secara publik (dimainkan via web):
php artisan migrate
php artisan storage:linkKini kamu perlu membuka DUA (2) tab terminal yang berbeda untuk menjalankan sistem backend ini.
Terminal 1 (REST API Server):
php artisan serveAPI akan berjalan di http://localhost:8000.
Terminal 2 (Queue Worker FFMPEG):
php artisan queue:work --queue=default(Jangan pernah menutup Terminal 2 ini! Terminal inilah yang secara diam-diam memproses FFMPEG di background saat ada request kompresi baru).
Aplikasi ini menggunakan Laravel Sanctum. Token akses disimpan menggunakan standar Bearer Token dan wajib dikirimkan di header Authorization: Bearer <token> pada setiap request dari Frontend.