# Movie App - Technical Test

Dokumentasi ini berisi penjelasan mengenai arsitektur, *library*, dan tangkapan layar (screenshot) dari aplikasi Movie App yang telah dikembangkan sesuai dengan kriteria test.

## 1. Architecture (Arsitektur yang Digunakan)
Aplikasi ini dibangun menggunakan framework **Laravel 5** dengan menerapkan pola arsitektur **MVC (Model-View-Controller)** yang dikombinasikan dengan pendekatan **Service Pattern**:

* **Model**: Bertugas mengelola interaksi data dengan database (seperti model `Favorite` untuk menyimpan daftar film favorit).
* **View**: Mengatur antarmuka pengguna (UI) menggunakan *Blade template engine* yang sudah mendukung sistem *Multi-Language* (ID/EN).
* **Controller**: Menangani alur logika dan *request* dari pengguna (seperti `MovieController`, `AuthController`, dan `FavoriteController`).
* **Service Layer (`OmdbService`)**: Logika untuk memanggil dan memproses data dari OMDb API dipisahkan dari Controller ke dalam kelas Service khusus. Hal ini membuat Controller tetap bersih (*Thin Controller*), terstruktur, dan mudah di-*maintain*.

## 2. Library yang Digunakan
Untuk mengoptimalkan performa dan antarmuka aplikasi, berikut adalah *library* yang digunakan:

* **GuzzleHTTP (`guzzlehttp/guzzle`)**: *Library* backend (PHP) yang digunakan untuk melakukan HTTP Request secara efisien dan aman ke *endpoint* OMDb API.
* **Bootstrap 4**: Framework CSS yang digunakan untuk membangun desain UI/UX yang responsif, rapi, serta memberikan tampilan *empty layout* yang profesional.
* **jQuery**: Digunakan pada sisi *front-end* untuk mengeksekusi request AJAX (seperti memuat data untuk *Infinite Scroll* dan mengecek status favorit secara dinamis) tanpa memuat ulang halaman.
* *(Native)* **Intersection Observer API**: Fitur *Infinite Scroll* dan *Lazy Load* gambar dibangun menggunakan API bawaan Javascript (*Vanilla JS*) ini demi menghasilkan performa yang jauh lebih ringan dan cepat tanpa perlu membebani aplikasi dengan *library front-end* tambahan.

## 3. Screenshot Aplikasi

### Halaman Login
![Halaman Login](login.png)

### Halaman List Movie & Fitur Pencarian
![Halaman List Movie](listmovie.png)

### Halaman Detail Movie (beserta Data OMDb)
![Halaman Detail Movie](detailmovie.png)

### Halaman Film Favorit
![Halaman Favorit](favoritemovie.png)