Aplikasi Android · Java

Bingung nonton apa? Pilih genre, selesai.

MovieTracker membantu penonton memilih film lewat alur singkat: login → pilih genre → daftar film → detail, lalu simpan ke favorit dan beri rating 1–5. Semua tersimpan di perangkat.

15film awal di database
5genre pilihan
4tabel SQLite
8Activity
Latar aplikasi MovieTracker bertema roll film
Halo, Andi! Pick a Movie My Favorites Logout
01 Masalah & Solusi

Menyelesaikan masalah dari ide MovieTracker

Ide awalnya sederhana: orang sering menghabiskan waktu memilih film dan tidak punya catatan pribadi tentang film yang disukai. MovieTracker memangkas pilihan menjadi alur yang pendek dan menyimpan preferensi pengguna.

Masalah

  • Terlalu banyak pilihan. Katalog film panjang dan tidak terfilter sesuai suasana hati.
  • Tidak ada catatan pribadi. Film yang sudah disukai dan penilaian sendiri mudah terlupa.
  • Rating tersebar. Pengguna sulit melihat nilai rata-rata yang ringkas di satu tempat.
  • Akses tidak personal. Favorit seharusnya terikat ke akun, bukan perangkat bersama.

Solusi di aplikasi

  • Pilih genre dulu (Action, Comedy, Horror, Romance, Sci-Fi) lalu lihat 3 film per genre.
  • Favorit per akun lewat tabel favorites dengan relasi user–film.
  • Rating 1–5 yang bisa diubah; rata-rata dihitung otomatis dengan AVG(score).
  • Sesi login disimpan di SharedPreferences, jadi tidak perlu login ulang.

Alur navigasi (sesuai kode)

LoginActivity→MainActivity→GenreActivity→MovieListActivity→MovieDetailActivity⇄FavoriteActivity

Data dikirim antar halaman lewat Intent extras: userId, genre, movieId, movieTitle. Setiap Activity memeriksa userId; bila hilang, pengguna diarahkan kembali ke Login, bukan crash.

02 Analisa Requirement

Apa yang harus dipenuhi aplikasi

Requirement disusun dari kode yang sudah ada, lalu dibandingkan dengan target tugas untuk melihat celah yang masih perlu dikerjakan.

Kebutuhan fungsional

IDKebutuhanImplementasiStatus
FR-01Registrasi akun (nama, username, email, password)RegisterActivity + registerUser(), cek username/email unikSelesai
FR-02Login dengan username atau emailLoginActivity + loginUser(), password di-hash SHA-256 + saltSelesai
FR-03Sesi login tetap tersimpanSessionManager (SharedPreferences)Selesai
FR-04Pilih genre & lihat daftar filmGenreActivity, MovieListActivitySelesai
FR-05Detail film, sinopsis, rata-rata ratingMovieDetailActivitySelesai
FR-06Tambah/hapus favorittabel favorites, FavoriteActivitySelesai
FR-07Beri & ubah rating 1–5tabel ratings (CHECK 1..5, UNIQUE user+film)Selesai
FR-08Lupa passwordForgotPasswordActivity masih kosong dan belum terdaftar di ManifestBelum
FR-09Data film dari API publikFilm masih dari data awal SQLiteRencana
FR-10Iklan AdMobBelum ada dependensi / ID iklanRencana

Kebutuhan non-fungsional

Keamanan

Password tidak disimpan polos; memakai salt acak 16 byte + SHA-256 dan pembandingan MessageDigest.isEqual. Rencana: ganti ke PBKDF2/bcrypt untuk produksi.

Kompatibilitas

minSdk 26 (Android 8.0), targetSdk & compileSdk 36, Java 11, Material Components, ConstraintLayout.

Keandalan & kegunaan

Foreign key SQLite diaktifkan, validasi input dengan TextInputLayout, tema gelap bergaya bioskop, pesan error berbahasa Indonesia.

Temuan analisis kode

  • Tombol “Lupa password” berpotensi crash. ForgotPasswordActivity belum ada di AndroidManifest.xml dan tidak memanggil setContentView() (layout activity_forgotpw.xml sudah ada). Perbaikan ada di folder android-upgrade/.
  • Daftar film memakai ListView + BaseAdapter, bukan RecyclerView. Pola ViewHolder sudah ada, jadi migrasinya ringan.
  • Poster hanya 5 drawable generik (satu per genre), belum poster asli per film.
  • onUpgrade() menghapus semua tabel; aman untuk tugas, tetapi harus diganti migrasi bertahap sebelum rilis.
03 Fitur-fitur

Fitur untuk pengguna

Delapan fitur inti yang dilihat pengguna di aplikasi.

🔐

Akun & Login

Daftar dan masuk dengan username atau email. Sesi tetap aktif sampai logout.

🎭

Pilih Genre

Lima kartu genre berwarna: Action, Comedy, Horror, Romance, Sci-Fi.

🎞️

Daftar Film

Judul, genre, tahun, dan rata-rata rating dalam satu list.

📖

Detail Film

Poster, sinopsis, dan rating komunitas.

❤️

Favorit

Simpan dan hapus film favorit per akun, daftar langsung diperbarui.

⭐

Rating 1–5

Beri penilaian, ubah kapan saja, rata-rata dihitung otomatis.

🌐

Film dari API Rencana

Katalog film terbaru dari REST API publik.

💸

Iklan & Premium Rencana

Versi gratis berbasis AdMob dan opsi bebas iklan.

Fitur teknis Android

Enam materi pengembangan yang diterapkan

Status dinilai langsung dari source code. Fitur yang belum lengkap disertai kode penerapannya di folder android-upgrade/.

#MateriBukti di kodeStatus
1Activity, UI/UX & widget dasar8 Activity; TextView, MaterialButton, TextInputLayout, ImageView, RatingBar, kartu genreTerapan
2Navigasi & IntentstartActivity(Intent) + putExtra/getExtra di 6 transisi; flag CLEAR_TASK saat logoutTerapan
3SharedPreferences & SQLiteSessionManager; DatabaseHelper (users, movies, favorites, ratings)Terapan
4RecyclerView + Adapter + ViewHolderSaat ini ListView + BaseAdapter + ViewHolder manualMigrasi
5Integrasi API publikBelum ada; disiapkan klien TMDBTambah
6Monetisasi AdMobBelum ada; disiapkan banner + interstitial (ID uji)Tambah

Activity, UI/UX & widget dasar

Setiap layar adalah satu AppCompatActivity dengan layout XML sendiri. Validasi form memakai TextInputLayout yang menampilkan pesan error langsung di bawah kolom. Tema gelap memakai palet #0D0D10 / #E50914 yang sama dengan website ini.

// LoginActivity – validasi widget input
if (input.isEmpty()) {
    tilUsernameOrEmail.setError("Username atau email wajib diisi");
    valid = false;
}
findViewById(R.id.btnLogin).setOnClickListener(v -> attemptLogin());
04 Tim, Kualifikasi & Peran

Lima peran untuk membawa MovieTracker ke rilis

Nama anggota di bawah adalah placeholder, silakan ganti lewat file template-parts/section-tim.php.

PM

Nama Anggota 1

Project Manager / Product Owner

Menyusun roadmap dan backlog, menjaga jadwal sprint, menjadi penghubung dengan dosen/stakeholder.

  • Memahami Scrum/Kanban
  • Menulis user story & acceptance criteria
  • Komunikasi dan manajemen risiko
AD

Nama Anggota 2

Android Developer

Mengembangkan Activity, SQLite, SessionManager, RecyclerView, dan integrasi API/AdMob.

  • Java/Kotlin & Android SDK
  • SQLite, SharedPreferences, REST (HTTP/JSON)
  • Git & debugging dengan Logcat
UX

Nama Anggota 3

UI/UX Designer

Merancang alur, wireframe, dan tema gelap bergaya bioskop; memastikan kontras dan keterbacaan.

  • Figma & Material Design
  • User flow dan usability testing
  • Dasar aksesibilitas
QA

Nama Anggota 4

Backend / API & QA Engineer

Mengelola integrasi TMDB/Firebase, menulis uji unit dan UI (JUnit, Espresso), memantau crash.

  • REST, JSON, Firebase
  • JUnit & Espresso
  • Dasar keamanan data (UU PDP)
GR

Nama Anggota 5

Marketing & Growth

Mengelola ASO, konten sosial media, kemitraan komunitas, dan analitik iklan.

  • Copywriting & konten video pendek
  • ASO & Google Play Console
  • Analitik (Firebase / AdMob)
05 Arsitektur Aplikasi

Struktur berlapis yang mudah dikembangkan

Garis solid adalah komponen yang sudah ada di kode. Garis putus-putus adalah komponen rencana (RecyclerView, API, AdMob).

PRESENTATION LAYER LoginActivity+ RegisterActivity MainActivityHome / sapaan GenreActivity5 kartu genre MovieListActivitydaftar per genre MovieDetailActivityrating + favorit FavoriteActivity ForgotPassword (perbaikan) AdMob Banner/Int. ADAPTER & MODEL MovieAdapter (ListView)BaseAdapter + ViewHolder MovieRecyclerAdapterRecyclerView.Adapter Model: Movieimmutable, 8 field Model: Userid, nama, email DATA & SERVICES DatabaseHelper (SQLite) • users• movies (15 film awal)• favorites (FK → users, movies)• ratings (CHECK 1..5)Foreign key aktif + CASCADE SessionManagerSharedPreferences: sesi login UtilsPasswordUtil · Constants TmdbClient (REST)HTTP + JSON, thread latar Firebase (opsional)Auth / Firestore sync Layanan Eksternalapi.themoviedb.orgGoogle AdMobGoogle Play Billing(untuk Premium)

Pola

Activity-per-layar dengan lapisan data terpisah (database/, utils/, model/, adapter/). Cocok sebelum naik ke MVVM + Repository.

Aliran data

Activity → DatabaseHelper → SQLite → Model → Adapter → daftar. Data API nanti masuk lewat Repository yang menyimpan ke SQLite sebagai cache.

Rencana evolusi

Pindahkan query ke thread latar, tambah Repository, lalu ViewModel/LiveData supaya layar tidak memuat ulang saat rotasi.

06 Analisa SWOT & BMC

Posisi strategis dan model bisnis

Analisa SWOT

Strengths (Kekuatan)

  • Alur sangat singkat: genre → film → detail.
  • Data tersimpan lokal; berfungsi tanpa internet.
  • Keamanan dasar baik (hash + salt, foreign key).
  • UI gelap konsisten dan berbahasa Indonesia.

Weaknesses (Kelemahan)

  • Katalog hanya 15 film dan poster generik.
  • Rating hanya lokal; belum ada “komunitas” nyata.
  • Lupa password belum berfungsi.
  • Belum ada API, iklan, atau pendapatan.

Opportunities (Peluang)

  • Pengguna internet Indonesia 229,43 juta (APJII 2025).
  • Katalog besar lewat API publik tanpa biaya konten sendiri.
  • Rekomendasi berbasis mood dan rating pengguna.
  • Kemitraan komunitas film dan kampus.

Threats (Ancaman)

  • Pesaing besar: IMDb, Letterboxd, TMDB app, platform streaming.
  • Ketergantungan pada syarat dan kuota API pihak ketiga.
  • Retensi aplikasi utilitas hiburan cenderung rendah.
  • Kepatuhan privasi (UU PDP) saat data pengguna di-cloud-kan.

Business Model Canvas

Key Partners

  • TMDB / penyedia API film
  • Google (AdMob, Play)
  • Komunitas film & kampus
  • Micro-influencer film

Key Activities

  • Pengembangan app
  • Kurasi & sinkron data
  • ASO & konten

Value Propositions

  • Pilih film dalam beberapa ketukan
  • Favorit & rating pribadi
  • Ringan, offline-friendly
  • Bahasa Indonesia

Customer Relationships

  • Self-service in-app
  • Notifikasi rekomendasi
  • Komunitas & ulasan Play Store

Customer Segments

  • Penonton usia 15–34
  • Mahasiswa & pekerja muda
  • Pencinta genre tertentu
  • Pasangan/keluarga pemilih film

Key Resources

  • Tim developer & desainer
  • Basis data film
  • Akun AdMob/Play

Channels

  • Google Play
  • TikTok / Instagram
  • Website ini

Cost Structure

  • Gaji/honor tim & akun developer Play (sekali bayar)
  • Server/Firebase (setelah melewati kuota gratis)
  • Iklan akuisisi & konten

Revenue Streams

  • Iklan AdMob (banner, interstitial, rewarded)
  • Premium bebas iklan (langganan)
  • Sponsor/penempatan film & afiliasi tautan streaming
07 Analisis TAM, SAM & SOM

Ukuran pasar yang masuk akal

Perhitungan memakai pendekatan bottom-up: jumlah pengguna dikalikan pendapatan per pengguna per tahun (ARPU).

TAM · Total Addressable Market

Semua pengguna internet Indonesia yang berpotensi memakai aplikasi pencari/pencatat film.

229,43 jt pengguna internet × 60% penonton film digital ≈ 137,7 jt
137,7 jt × Rp 15.000 ARPU = ≈ Rp 2,07 triliun

SAM · Serviceable Available Market

Pengguna Android berbahasa Indonesia usia 15–34 yang aktif menonton film dan mencari rekomendasi.

137,7 jt × 25% ≈ 34,4 jt pengguna
34,4 jt × Rp 15.000 = ≈ Rp 516 miliar

SOM · Serviceable Obtainable Market

Bagian yang realistis direbut dalam 3 tahun pertama dengan modal dan tim kecil.

1% dari SAM ≈ 344 ribu pengguna
344 ribu × Rp 15.000 = ≈ Rp 5,2 miliar

Catatan metodologi. Hanya angka 229,43 juta pengguna internet (APJII, Survei Profil Internet Indonesia 2025) yang berasal dari sumber publik. Persentase 60%, 25%, 1% dan ARPU Rp 15.000/tahun adalah asumsi tim yang harus divalidasi lewat survei pengguna dan data AdMob nyata. Ubah di tahap validasi, hasilnya ikut berubah proporsional.

08 Audiens & Metode Pemasaran

Cara menjangkau penonton pertama

Target awal: mahasiswa dan pekerja muda 15–34 tahun di kota besar Pulau Jawa, yang menurut APJII menyumbang 58% pengguna internet nasional.

🔍

App Store Optimization

Kata kunci “rekomendasi film”, “pilih film”, “watchlist”. Tangkapan layar tema bioskop, deskripsi Indonesia, dan permintaan ulasan setelah pengguna memberi rating pertama.

🎬

Konten video pendek

TikTok/Reels seri “Film apa malam ini?”: pilih genre di app, tampilkan hasilnya. Format mudah ditiru dan dibagikan.

🎓

Komunitas & kampus

Kerja sama dengan komunitas film, UKM sinema, dan kelas pemrograman. Mini kuis genre dan hadiah premium gratis.

🤝

Micro-influencer

Reviewer film 5–50 ribu pengikut dengan kode undangan unik. Biaya kecil, kepercayaan tinggi.

🔗

Referral & berbagi

Tombol bagikan “Film favoritku” dan undang teman untuk membuka tema premium.

📝

Website & SEO (situs ini)

Blog WordPress: daftar film per genre dan mood, tautan ke Google Play.

Funnel & metrik

TahapTindakanMetrik
AwarenessVideo pendek, influencer, SEO blogImpresi, view, trafik organik
AcquisitionHalaman Play Store & ASOInstall, konversi halaman toko
ActivationRegistrasi → pilih genre → rating pertama% pengguna memberi rating di sesi 1
RetentionNotifikasi rekomendasi mingguanD1 / D7 / D30
RevenueIklan AdMob, upsell PremiumeCPM, konversi ke Premium
ReferralBagikan favorit & undanganK-factor, install dari referral
09 Monetisasi

Empat sumber pendapatan

Fokus awal pada iklan AdMob yang ringan dipasang. Langganan dan kemitraan menyusul setelah basis pengguna terbentuk.

Fase 1 · Tugas ini

Iklan AdMob

  • Banner di bawah MovieListActivity dan FavoriteActivity.
  • Interstitial setelah pengguna menutup detail film, dibatasi frekuensinya (misalnya tiap 3 detail).
  • Rewarded opsional: tonton iklan untuk membuka tema/avatar.
  • Jangan tampilkan iklan di layar Login/Register.
Fase 2

Premium bebas iklan

  • Langganan lewat Google Play Billing.
  • Manfaat: tanpa iklan, tema tambahan, sinkronisasi cloud, statistik tontonan.
Fase 3

Afiliasi & sponsor

  • Tautan “tonton di…” ke layanan streaming resmi dengan program afiliasi.
  • Slot “Film pilihan” berlabel jelas sebagai sponsor.
Fase 3

Wawasan agregat (B2B)

  • Tren genre populer dalam bentuk agregat dan anonim.
  • Hanya dengan persetujuan pengguna dan sesuai UU PDP.

Aturan AdMob. Selama pengembangan wajib memakai ID iklan uji. Jangan mengklik iklan sendiri dan jangan menempatkan iklan yang mudah tersentuh tidak sengaja; keduanya dapat membuat akun AdMob ditangguhkan.

10 Pricing

Gratis untuk memulai, Premium untuk bebas iklan

Harga di bawah adalah usulan awal dan perlu diuji (A/B test) sebelum rilis.

Gratis

Rp 0

Selamanya, didukung iklan.

  • Semua fitur inti (genre, favorit, rating)
  • Banner & interstitial terbatas
  • Data tersimpan di perangkat
Mulai gratis
PALING POPULER

Premium

Rp 19.000 / bulan

Batal kapan saja.

  • Tanpa iklan
  • Sinkronisasi favorit & rating (cloud)
  • Tema & avatar tambahan
  • Statistik tontonan pribadi
Pilih Premium

Partner / Sponsor

Hubungi kami

Untuk rumah produksi, bioskop, dan layanan streaming.

  • Slot “Film pilihan” berlabel sponsor
  • Laporan tren genre agregat
  • Kampanye bersama komunitas
Diskusi kerja sama

Dasar penetapan harga

Daya beli

Rp 19.000/bulan setara satu paket kopi; ditempatkan di bawah harga umum langganan streaming.

Potongan Google Play

Google memotong biaya layanan dari penjualan dalam aplikasi; tarif berubah, cek tabel resmi Play Console sebelum menghitung margin.

Titik impas

Dengan 1.000 pelanggan tahunan Rp 149.000, kotor ≈ Rp 149 juta/tahun sebelum potongan toko dan pajak. Uji harga pada 3 variasi sebelum menetapkan final.

Siap memilih film malam ini?

MovieTracker sedang dalam pengembangan. Ikuti perkembangannya atau ajak kami berkolaborasi.

Hubungi tim