Satu film, satu kesepakatan. Nobar tanpa debat grup chat.
MovieTracker membantu pengguna menemukan film sesuai selera dan menyepakati satu film untuk ditonton bersama. Nobar Match mengumpulkan suara anggota room, AI Rekomendasi memahami permintaan bahasa sehari-hari, lalu aplikasi mengarahkan ke sumber tonton atau penjual tiket resmi.
Menyelesaikan masalah dari ide MovieTracker
Menentukan film untuk ditonton bersama sering memakan waktu karena setiap orang punya genre, suasana hati, dan preferensi berbeda. Diskusi di grup percakapan bisa berulang tanpa hasil, dan setelah film dipilih pengguna masih harus mencari layanan penayangan atau tiket sendiri.
Masalah yang diidentifikasi
- Sulit menyepakati satu film. Tidak ada cara ringkas untuk mengumpulkan suara seluruh anggota kelompok.
- Filter genre terlalu sederhana. Permintaan seperti “komedi romantis dengan akhir bahagia” menggabungkan genre, mood, durasi, dan akhir cerita.
- Informasi tersebar. Layanan penayangan dan penjual tiket resmi ada di banyak tempat berbeda.
- Aplikasi perlu rancangan teknis yang rapi untuk navigasi, penyimpanan data, dan integrasi API.
Solusi di MovieTracker
- Nobar Match: buat room, bagikan kode undangan, anggota memberi suara suka/lewati, lalu lihat hasil kecocokan.
- AI Rekomendasi menerima permintaan bebas, memilih kandidat dari katalog yang tersedia, dan menyusun rekomendasi dari kandidat itu.
- Tonton di mana & tiket resmi: tautan ke sumber penayangan atau penjual tiket resmi dalam satu alur. Aplikasi tidak menjual film maupun tiket.
- Arsitektur berlapis: Activity/Fragment, penyimpanan lokal (SharedPreferences, SQLite), layanan online, dan RecyclerView untuk semua daftar.
Mengapa masalah ini nyata
Sumber: Metro TV (2026), Bisnis.com (2026b), Investortrust (2026), Gomez-Uribe & Hunt (2016). Daftar lengkap ada di bagian Sumber. Penelitian rekomendasi grup juga menggabungkan preferensi tiap anggota menjadi satu rekomendasi (Dara dkk., 2020), prinsip yang sama dengan voting Nobar Match.
Alur penggunaan
- Daftar atau login, lalu pilih genre favorit di beranda.
- Jelajah daftar film, buka detail untuk sinopsis dan rating, atau simpan ke favorit.
- Tulis permintaan bebas di AI Rekomendasi dan terima daftar kandidat.
- Untuk nonton bersama, pembuat room membuat room dan membagikan kode undangan.
- Anggota bergabung dengan kode, lalu memberi suara suka atau lewati pada film kandidat.
- Aplikasi menampilkan hasil kecocokan, lalu tautan tonton di mana atau tiket resmi.
Rumusan masalah yang dijawab
- Bagaimana merancang Nobar Match agar kelompok menyepakati satu film lewat room, kode undangan, voting, dan hasil kecocokan?
- Bagaimana merancang AI Rekomendasi yang memahami permintaan bahasa sehari-hari dan memilih film dari katalog yang tersedia?
- Bagaimana menyajikan tempat menonton dan penjual tiket resmi dalam satu alur, tanpa aplikasi menjual film atau tiket?
- Bagaimana merancang arsitektur Android: navigasi, penyimpanan lokal dan online, RecyclerView, serta integrasi API data film dan layanan AI?
- Bagaimana menilai prospek pasar dan kelayakan bisnis lewat SWOT, TAM/SAM/SOM, BMC, pemasaran, monetisasi, dan pricing?
Apa yang harus dipenuhi aplikasi
Kebutuhan dikelompokkan menurut siapa penggunanya, fungsi yang harus ada, dan mutu yang harus dijaga. Status mengikuti proposal: sebagian fitur sudah ada di versi dasar, sisanya dikembangkan bertahap.
Pengguna sistem
Pembuat room
Membuat room, membagikan kode, dan melihat hasil voting.
Anggota room
Bergabung melalui kode dan memberi suara pada film.
Pengguna individu
Menjelajah film, melihat detail, menyimpan favorit, dan meminta rekomendasi.
Pengelola/pengembang
Menjaga kualitas data, keamanan API, privasi, dan stabilitas layanan.
Kebutuhan fungsional
| Kode | Fitur | Penjelasan | Status |
|---|---|---|---|
| F1 | Login dan daftar | Mengelola akun dan sesi pengguna | Sudah tersedia |
| F2 | Jelajah film, detail, favorit | Daftar film per genre, sinopsis, rating, dan penyimpanan film pilihan | Sudah tersedia |
| F3 | Filter mood dan durasi | Menyaring film berdasarkan suasana hati dan lama tayang | Pengembangan |
| F4 | Nobar Match | Room, kode undangan, voting suka/lewati, hasil kecocokan | Wajib/utama |
| F5 | AI Rekomendasi | Permintaan bebas dan percakapan lanjutan, mis. “komedi romantis dengan akhir bahagia” | Wajib/utama |
| F6 | Tonton di mana | Tautan ke platform penayangan resmi bila tersedia | Wajib/utama |
| F7 | Tiket resmi | Tautan ke penjual tiket resmi, bukan menjual tiket di aplikasi | Pengembangan |
| F8 | Paket Plus dan batas AI | Paket tanpa iklan dengan batas permintaan AI lebih tinggi | Opsional |
| F9 | Riwayat nobar | Catatan film yang dipilih bersama | Opsional |
Kebutuhan non-fungsional
⚡ Kinerja
Respons AI maksimal sekitar 5 detik dan hasil room tersedia kurang dari 5 menit. Keduanya target awal tim.
🔒 Keamanan
Kunci API disimpan di layanan perantara, bukan di kode aplikasi. Password dan kunci API tidak disimpan di SharedPreferences.
🛡️ Privasi
Data pengguna dikumpulkan seperlunya sesuai UU No. 27 Tahun 2022 tentang Pelindungan Data Pribadi.
🧱 Keandalan
Pesan yang jelas saat jaringan gagal, data kosong, atau batas permintaan tercapai.
📱 Kompatibilitas
Berjalan pada perangkat Android 11 atau lebih baru.
🧪 Kegunaan & kepatuhan
Alur utama dievaluasi lewat uji pengguna dengan skenario sama. Lisensi dan batas API data film serta layanan AI diperiksa sebelum dipakai.
Di luar cakupan. GPS dan kamera tidak dimasukkan karena bukan kebutuhan inti. Aplikasi juga tidak menjual film, tidak menjual tiket, dan tidak menjual data pribadi pengguna.
Fitur untuk pengguna
Sembilan kebutuhan fungsional (F1–F9) yang dilihat pengguna di aplikasi. Dua fitur utama, Nobar Match dan AI Rekomendasi, bisa dicoba langsung di bawah.
Akun & Jelajah
Login, daftar, daftar film per genre, detail, rating, dan favorit.
Filter mood & durasi
Saring film menurut suasana hati dan lama tayang.
Nobar Match
Room, kode undangan, voting suka/lewati, dan hasil kecocokan.
AI Rekomendasi
Permintaan bebas dan percakapan lanjutan, kandidat dari katalog yang tersedia.
Tonton di mana
Tautan ke platform penayangan resmi bila datanya tersedia.
Tiket resmi
Tautan ke penjual tiket resmi. Tiket tidak dijual di aplikasi.
Paket Plus & batas AI
Tanpa iklan dan batas permintaan AI lebih tinggi.
Riwayat nobar
Catatan film yang dipilih bersama.
Coba langsung simulasi, data contoh
Nobar Match F4
AI Rekomendasi F5
Bagaimana fitur dibangun
Enam konsep Android yang diterapkan di MovieTracker, masing-masing dengan penjelasan, penerapannya di aplikasi, dan contoh kode.
| # | Materi | Penerapan di MovieTracker | Status |
|---|---|---|---|
| 1 | Activity, UI/UX & widget dasar | 5 Activity; TextView, Button, EditText/TextInput, ImageView, ProgressBar | Versi dasar |
| 2 | Navigasi antar halaman | Intent dengan extras ID film dan kode room, divalidasi penerima | Versi dasar |
| 3 | Penyimpanan data | SharedPreferences untuk preferensi; SQLite untuk favorit, cache, riwayat | Versi dasar + pengembangan |
| 4 | RecyclerView & list data | Daftar jelajah, favorit, dan kandidat rekomendasi | Pengembangan |
| 5 | Integrasi API publik | API data film, layanan AI via perantara, Firebase untuk room | Pengembangan |
| 6 | Monetisasi AdMob | Banner/interstitial untuk paket Gratis; disembunyikan di paket Plus | Opsional |
Activity, UI/UX & Widget Dasar Versi dasar
Activity adalah satu layar aplikasi dengan siklus hidup sendiri (onCreate, onStart, onResume, …) dan layout XML. Widget dasar seperti TextView, Button, dan EditText dipakai untuk menampilkan data serta menerima aksi pengguna.
- Activity
- LoginActivity, HomeActivity, MovieDetailActivity, MovieRoomActivity, CreateRoomActivity. Alur terkait dapat memakai Fragment.
- TextView
- Judul, sinopsis, genre, rating, dan status room.
- Button
- Login, buat room, gabung room, minta rekomendasi, simpan favorit.
- EditText
- Data akun, kode room, dan permintaan rekomendasi AI (TextInputLayout untuk pesan error).
- ImageView / ProgressBar
- Poster film dan indikator saat memuat daftar atau menunggu respons AI.
LoginActivity.java
public class LoginActivity extends AppCompatActivity {
private TextInputLayout tilEmail;
private TextInputEditText etEmail;
private Button btnLogin;
private ProgressBar progress;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
tilEmail = findViewById(R.id.tilEmail);
etEmail = findViewById(R.id.etEmail);
btnLogin = findViewById(R.id.btnLogin);
progress = findViewById(R.id.progress);
btnLogin.setOnClickListener(v -> attemptLogin());
}
private void attemptLogin() {
String email = String.valueOf(etEmail.getText()).trim();
if (email.isEmpty()) {
tilEmail.setError("Email wajib diisi");
return;
}
tilEmail.setError(null);
progress.setVisibility(View.VISIBLE);
// ... proses autentikasi
}
}
Navigasi Antar Halaman Versi dasar
Intent eksplisit memindahkan pengguna dari satu Activity ke Activity lain dan membawa data kecil lewat extras. Penerima wajib memeriksa data itu sebelum memakainya.
- Detail film
- Klik item daftar membuka MovieDetailActivity dengan extra ID film.
- Room
- Buat atau gabung room membuka MovieRoomActivity dengan extra kode room.
- Validasi
- Jika extra hilang, tampilkan pesan dan tutup layar, bukan crash.
- Fragment
- Opsional untuk alur terkait di dalam satu Activity.
Constants.java + pengirim + penerima
public final class Constants {
public static final String EXTRA_MOVIE_ID = "extra_movie_id";
public static final String EXTRA_ROOM_CODE = "extra_room_code";
}
// Pengirim: daftar film -> detail
Intent intent = new Intent(this, MovieDetailActivity.class);
intent.putExtra(Constants.EXTRA_MOVIE_ID, movie.getId());
startActivity(intent);
// Penerima: validasi sebelum dipakai
long movieId = getIntent().getLongExtra(Constants.EXTRA_MOVIE_ID, -1L);
if (movieId == -1L) {
Toast.makeText(this, "Data film tidak tersedia", Toast.LENGTH_SHORT).show();
finish();
return;
}
// Gabung room: kirim kode undangan
Intent room = new Intent(this, MovieRoomActivity.class);
room.putExtra(Constants.EXTRA_ROOM_CODE, code);
startActivity(room);
Penyimpanan Data: SharedPreferences & SQLite Versi dasar + pengembangan
SharedPreferences menyimpan pasangan kunci–nilai ringan. SQLite menyimpan data terstruktur yang bisa di-query. Keduanya lokal di perangkat dan tidak menggantikan penyimpanan online untuk sinkronisasi antarperangkat.
- SharedPreferences
- Preferensi ringan (genre terakhir, pengaturan tampilan). Bukan untuk password atau kunci API.
- SQLite
- Favorit, cache daftar film, dan riwayat nobar.
- Online
- Voting room antarperangkat memerlukan penyimpanan online karena database lokal tidak cukup untuk sinkronisasi real-time.
SharedPreferences + DbHelper (SQLite)
// SharedPreferences: preferensi ringan (bukan password / kunci API)
SharedPreferences prefs = getSharedPreferences("mt_prefs", MODE_PRIVATE);
prefs.edit().putString("last_genre", "Komedi").apply();
String genre = prefs.getString("last_genre", "Semua");
// SQLite: tabel favorit
public class DbHelper extends SQLiteOpenHelper {
public DbHelper(Context c) { super(c, "movietracker.db", null, 1); }
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE favorites (" +
"movie_id INTEGER PRIMARY KEY, " +
"title TEXT NOT NULL, " +
"poster_url TEXT, " +
"added_at INTEGER NOT NULL)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldV, int newV) {
// migrasi bertahap, jangan hapus data pengguna
}
public void addFavorite(long id, String title, String poster) {
ContentValues v = new ContentValues();
v.put("movie_id", id);
v.put("title", title);
v.put("poster_url", poster);
v.put("added_at", System.currentTimeMillis());
getWritableDatabase().insertWithOnConflict(
"favorites", null, v, SQLiteDatabase.CONFLICT_REPLACE);
}
}
RecyclerView & List Data Pengembangan
RecyclerView menampilkan daftar panjang secara efisien dengan mendaur ulang tampilan. Adapter menghubungkan data ke tampilan, dan ViewHolder menyimpan referensi widget tiap baris.
- Jelajah film
- Daftar film per genre.
- Favorit
- Daftar film yang disimpan di SQLite.
- Kandidat rekomendasi
- Hasil AI Rekomendasi dan film kandidat voting.
- Klik item
- Membuka detail dengan mengirim ID film lewat Intent.
MovieAdapter.java + pemasangan di Activity
public class MovieAdapter extends RecyclerView.Adapter<MovieAdapter.VH> {
public interface OnMovieClick { void onClick(Movie movie); }
private final List<Movie> items = new ArrayList<>();
private final OnMovieClick listener;
public MovieAdapter(OnMovieClick listener) { this.listener = listener; }
public void submit(List<Movie> data) {
items.clear();
items.addAll(data);
notifyDataSetChanged();
}
@NonNull @Override
public VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_movie, parent, false);
return new VH(v);
}
@Override
public void onBindViewHolder(@NonNull VH h, int position) {
Movie m = items.get(position);
h.title.setText(m.getTitle());
h.meta.setText(m.getGenre() + " · " + m.getDuration() + " mnt");
h.itemView.setOnClickListener(v -> listener.onClick(m));
}
@Override public int getItemCount() { return items.size(); }
static class VH extends RecyclerView.ViewHolder {
final TextView title, meta;
VH(View v) {
super(v);
title = v.findViewById(R.id.tvTitle);
meta = v.findViewById(R.id.tvMeta);
}
}
}
// di Activity
RecyclerView rv = findViewById(R.id.rvMovies);
rv.setLayoutManager(new LinearLayoutManager(this));
MovieAdapter adapter = new MovieAdapter(movie -> openDetail(movie.getId()));
rv.setAdapter(adapter);
Integrasi API Publik Pengembangan
Aplikasi mengambil data JSON dari REST API lewat HTTP di thread latar, lalu menampilkannya di UI. Untuk data yang harus sinkron antarperangkat, Firebase (Firestore/Realtime Database) cocok sebagai penyimpanan online.
- API data film
- Penyedia belum ditetapkan. Dipilih setelah memeriksa dokumentasi, batas penggunaan, keamanan, dan lisensi.
- AI Rekomendasi
- Permintaan diteruskan lewat layanan perantara agar kunci API tidak tertanam di APK.
- Room voting
- Firebase untuk sinkronisasi suara antarperangkat (contoh di bawah).
- Status
- Loading, data kosong, jaringan gagal, dan batas permintaan harus punya pesan jelas.
Retrofit: ambil daftar film
public interface MovieApi {
@GET("movies")
Call<MovieResponse> byGenre(@Query("genre") String genre);
}
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BuildConfig.API_BASE_URL) // alamat layanan perantara
.addConverterFactory(GsonConverterFactory.create())
.build();
MovieApi api = retrofit.create(MovieApi.class);
api.byGenre("komedi").enqueue(new Callback<MovieResponse>() {
@Override
public void onResponse(Call<MovieResponse> c, Response<MovieResponse> r) {
if (r.isSuccessful() && r.body() != null) adapter.submit(r.body().results);
else showState("Data kosong atau batas permintaan tercapai");
}
@Override
public void onFailure(Call<MovieResponse> c, Throwable t) {
showState("Jaringan gagal. Coba lagi.");
}
});
Firebase Firestore: suara Nobar Match
FirebaseFirestore db = FirebaseFirestore.getInstance();
// kirim suara satu anggota untuk satu film
Map<String, Object> vote = new HashMap<>();
vote.put("uid", uid);
vote.put("movieId", movieId);
vote.put("like", true);
db.collection("rooms").document(roomCode)
.collection("votes").document(uid + "_" + movieId)
.set(vote);
// pantau suara seluruh anggota secara real-time
db.collection("rooms").document(roomCode).collection("votes")
.addSnapshotListener((snap, e) -> {
if (e != null || snap == null) { showState("Gagal memuat hasil"); return; }
tallyAndShow(snap.getDocuments());
});
Monetisasi Aplikasi dengan AdMob Opsional
AdMob menayangkan iklan (banner, interstitial, rewarded) dan membayar pengembang per tayangan atau klik. Selama pengembangan wajib memakai ID iklan uji milik Google.
- Paket Gratis
- Banner di bawah daftar film. Interstitial dibatasi frekuensinya.
- Paket Plus
- Iklan disembunyikan (tanpa iklan).
- Aturan
- Jangan klik iklan sendiri dan jangan taruh iklan di tempat yang mudah tersentuh tak sengaja. Tidak ada iklan di layar Login.
Gradle, Manifest, layout, dan Java (ID uji resmi Google)
// build.gradle (module app)
implementation("com.google.android.gms:play-services-ads:<versi terbaru>")
<!-- AndroidManifest.xml (ID aplikasi uji resmi Google) -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-3940256099942544~3347511713" />
<!-- activity_movie_list.xml (unit banner uji) -->
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adSize="BANNER"
ads:adUnitId="ca-app-pub-3940256099942544/6300978111" />
// MovieListActivity.java
MobileAds.initialize(this, status -> { });
AdView adView = findViewById(R.id.adView);
if (UserPrefs.isPlus(this)) {
adView.setVisibility(View.GONE); // paket Plus: tanpa iklan
} else {
adView.loadAd(new AdRequest.Builder().build());
}
Lima anggota, lima peran yang jelas
Tujuan pengelolaan tim adalah kerja kolaboratif dan efisien dengan tanggung jawab yang jelas pada tiap peran. Setiap anggota dapat merangkap peran sesuai kapasitas kelompok.
Anggota Kelompok 2
Struktur organisasi
Koordinator proyek
Mengatur pembagian tugas, jadwal, dokumentasi, dan koordinasi.
Kualifikasi yang dibutuhkan- Manajemen waktu
- Komunikasi
Pengembang Android
Mengembangkan Activity, UI, navigasi Intent, RecyclerView, dan penyimpanan lokal.
Kualifikasi yang dibutuhkan- Java/Kotlin
- Android SDK
- SQLite
Pengembang layanan dan AI
Mengelola API, sinkronisasi room, integrasi model AI, dan keamanan kunci API.
Kualifikasi yang dibutuhkan- Backend
- REST API
- Dasar keamanan
Desainer UI/UX
Merancang alur pengguna, tata letak layar, dan konsistensi visual.
Kualifikasi yang dibutuhkan- Desain antarmuka
- Prototipe
Riset dan pengujian
Mengumpulkan kebutuhan, menyusun skenario uji, mengukur hasil, dan merangkum umpan balik.
Kualifikasi yang dibutuhkan- Black-box testing
- Survei pengguna
Catatan tim
Setiap anggota dapat merangkap peran sesuai kapasitas kelompok. Pembagian nama ke setiap peran ditentukan berdasarkan kesepakatan kelompok.
Struktur berlapis yang mudah dikembangkan
Lima lapisan: Activity/Fragment dan widget, logika aplikasi, penyimpanan lokal, layanan online, dan sumber eksternal. Diagram ini rancangan konseptual, bukan bukti bahwa semua komponen sudah diimplementasikan.
Alur permintaan AI Rekomendasi
Pola aplikasi
Activity/Fragment dan widget memanggil logika aplikasi (Intent, validasi, favorit, repository). Logika memakai penyimpanan lokal dan layanan online, lalu menampilkan hasil lewat RecyclerView.
Data lokal vs online
SharedPreferences dan SQLite cukup untuk preferensi, favorit, cache, dan riwayat. Voting room antarperangkat perlu penyimpanan online karena database lokal tidak bisa sinkron real-time.
Keamanan & kepatuhan
Kunci API tidak tertanam di APK; permintaan AI lewat layanan perantara. Lisensi dan batas penggunaan API data film serta layanan AI diperiksa sebelum dipakai.
Posisi strategis dan model bisnis
SWOT menilai kondisi MovieTracker, tabel pembanding menempatkannya di antara aplikasi film yang sudah mapan, dan Business Model Canvas merangkum sembilan blok model bisnisnya. Seluruhnya rancangan tim yang belum divalidasi.
Analisa SWOT
Strengths (Kekuatan)
- Voting kelompok sebagai fitur pembeda.
- Rekomendasi menerima permintaan bebas.
- Aplikasi dasar sudah memiliki login, daftar film, detail, dan favorit.
Weaknesses (Kelemahan)
- Room dan AI memerlukan layanan online yang belum dikembangkan.
- Kualitas rekomendasi bergantung pada data.
- Lisensi dan ketersediaan data perlu diperiksa.
Opportunities (Peluang)
- Kebiasaan menonton bersama dan penggunaan smartphone (84,31% pengguna internet) membuka peluang uji coba di kampus dan komunitas film.
- Gen Z paling banyak memakai AI (29,4%), dan 44,4% di antaranya untuk hiburan.
Threats (Ancaman)
- Aplikasi besar dapat memiliki fitur serupa.
- API dapat berubah atau berbayar; lisensi dan kebijakan platform dapat membatasi implementasi.
- Adopsi AI masih terbatas: hanya 18,2% pengguna internet yang memakainya.
Sumber angka: APJII 2026 melalui Bisnis.com (2026b, 2026c).
Analisis pembanding
Disusun dari deskripsi fitur dan ulasan yang diakses pada 21 Oktober 2026. “Tidak tercantum” berarti fitur itu tidak ditemukan pada sumber, bukan bukti bahwa fitur tersebut pasti tidak ada.
| Aspek | JustWatch | Letterboxd | IMDb | MovieTracker |
|---|---|---|---|---|
| Fokus utama | Mencari ketersediaan film di layanan streaming | Jejaring sosial untuk mencatat, mengulas, dan membuat daftar film | Basis data film dengan rating, ulasan, dan watchlist | Memilih film bersama dan rekomendasi |
| Voting kelompok dalam room | Tidak tercantum | Tidak tercantum; ada perbandingan watchlist antarpengguna | Tidak tercantum; daftar film dapat dibagikan | Ada (Nobar Match) |
| Rekomendasi dari permintaan bebas | Penemuan dan rekomendasi; permintaan bahasa bebas tidak tercantum | Dari riwayat tontonan dan film yang disukai | Personal setelah pengguna masuk dan memberi rating | Ada (AI Rekomendasi) |
| Tautan tonton/tiket resmi | Ada (streaming, sewa, beli); cakupan bergantung negara | Daftar platform sesuai wilayah; filter layanan pada paket berbayar | Ada jadwal tayang dan pembelian tiket | Ada, bila data tersedia |
Sumber: Kotaku (t.t.), Android Authority (t.t.), PopSci (t.t.), IMDb (t.t.). Ketiganya kuat pada ketersediaan tontonan, katalog, dan rekomendasi personal. Celah yang diisi MovieTracker (voting room dan permintaan bahasa sehari-hari) masih perlu dibuktikan lewat uji pengguna.
Business Model Canvas
Mitra UtamaKey Partners
- Penyedia API data film
- Penyedia cloud/hosting
- Penyedia model AI
- Komunitas kampus dan film untuk uji coba
- Google AdMob/Play, bila iklan diimplementasikan
- Platform streaming dan penjual tiket hanya ditautkan; kemitraan resmi tidak diasumsikan
Aktivitas UtamaKey Activities
- Mengembangkan Nobar Match, AI Rekomendasi, dan filter mood
- Mengelola data film dan integrasi API
- Pengujian fungsional dan uji pengguna
- Menjaga keamanan kunci API dan data pengguna
- Dukungan pengguna dan promosi
Proposisi NilaiValue Propositions
- Memilih film bersama lewat voting Nobar Match, tanpa diskusi panjang di grup percakapan
- Rekomendasi AI dari permintaan bahasa sehari-hari (genre, mood, durasi, akhir cerita)
- Tautan tonton di mana dan tiket resmi dalam satu alur
- Jelajah film, favorit, dan Nobar Match gratis
Hubungan PelangganCustomer Relationships
- Panduan penggunaan di aplikasi
- Formulir masukan dan ulasan pengguna
- Sesi uji pengguna
- Interaksi dengan komunitas film dan kampus
- Perbaikan berdasarkan umpan balik
Segmen PelangganCustomer Segments
- Mahasiswa dan pelajar pengguna Android
- Kelompok teman dan pasangan yang sering menonton bersama
- Komunitas film dan komunitas kampus
- Pengguna individu yang mencari rekomendasi film
Sumber Daya UtamaKey Resources
- Aplikasi MovieTracker dan kode sumber
- Tim pengembang (5 anggota)
- Layanan online: room voting dan API perantara AI
- Katalog film dari API data film
- Dokumentasi dan data hasil uji
SaluranChannels
- Aplikasi Android (unduhan)
- Demo di komunitas kampus dan film
- Video singkat di media sosial
- Kode undangan room Nobar Match
Struktur BiayaCost Structure
- Akun pengembang, desain, dan perangkat uji
- Hosting dan layanan online
- Biaya layanan AI per permintaan
- Lisensi data film, bila diperlukan
- Pemasaran, pemeliharaan, dan dukungan pengguna
- Tenaga pengembangan mahasiswa tidak dihitung sebagai biaya tunai
Sumber PendapatanRevenue Streams
- Langganan Plus (usulan Rp19.900 per bulan): tanpa iklan dan batas AI lebih tinggi
- Iklan nonintrusif untuk pengguna paket Gratis (opsional)
- Sponsor komunitas (belum ada sponsor terkonfirmasi)
- Seluruhnya masih usulan, belum merupakan pendapatan yang diperoleh
Proposisi nilai (voting kelompok dan rekomendasi AI) ditujukan kepada mahasiswa, kelompok teman, dan komunitas film melalui saluran kampus, media sosial, dan kode undangan room. Biaya utama berasal dari hosting, layanan AI, dan lisensi data.
Ukuran pasar yang bisa ditelusuri
TAM, SAM, dan SOM memperkirakan cakupan calon pengguna, bukan pengguna yang sudah memakai aplikasi. Setiap langkah memakai data yang dapat ditelusuri ke sumbernya.
Ilustrasi konsep, tidak berskala.
TAM · Total Addressable Market
Pengguna internet berusia 13 tahun ke atas menurut survei APJII 2026. Pasar luas dan tidak semuanya membutuhkan aplikasi ini.
SAM · Serviceable Available Market
Gen Z pengguna Android di Pulau Jawa.
× 77,03% (Android) = 72,2 jt
× 58,24% (Pulau Jawa) = ±42,0 juta
SOM · Serviceable Obtainable Market
Target tim: pengguna aktif bulanan pada akhir tahun ke-3, lewat uji kampus dan pertumbuhan organik. Belum tervalidasi peluncuran.
Sumber tiap faktor
| Faktor | Nilai | Sumber |
|---|---|---|
| Pengguna internet | 235.261.078 (81,72% populasi) | APJII 2026 via Metro TV (2026) |
| Proporsi Gen Z (13–28 th) | 39,83% | RRI (2026) |
| Pangsa Android | 77,03% (Agustus 2026) | StatCounter (2026) |
| Kontribusi Pulau Jawa | 58,24% | Metro TV (2026) |
Relevansi AI Rekomendasi
AI Rekomendasi paling relevan bagi pengguna yang sudah terbiasa dengan AI. APJII 2026 mencatat 18,2% pengguna internet memakai AI, tertinggi pada Gen Z (29,4%). Jika proporsi ini berlaku pada SAM, sekitar 12,4 juta pengguna sudah akrab dengan AI.
Cara membaca angka ini
Hasilnya perkiraan orde besar. Perhitungan mengasumsikan proporsi Gen Z, pangsa Android, dan porsi Pulau Jawa saling bebas, serta memakai pangsa Android dari lalu lintas web, bukan jumlah kepemilikan perangkat.
Catatan. Proporsi Gen Z (39,83%) perlu dicocokkan dengan laporan resmi APJII 2026. SOM adalah target tim, bukan hasil yang sudah dicapai.
Cara menjangkau penonton pertama
Strategi awal adalah menguji aplikasi di komunitas kampus dan kelompok pertemanan, karena Nobar Match secara alami mendorong pengguna mengundang anggota lain. Tahap pertama tidak memerlukan iklan berbayar berskala besar; hasil uji coba diukur dulu sebelum menetapkan target pertumbuhan atau anggaran.
Siapa audiensnya (STP)
Segmen
Mahasiswa dan pelajar, kelompok teman, pasangan, dan komunitas film pengguna Android di Indonesia.
Sasaran
Awalnya mahasiswa di lingkungan kampus dan komunitas film yang sering menonton bersama, lalu meluas ke kelompok pertemanan lain.
Posisi
Aplikasi pemilih film bersama yang cepat: dari permintaan bebas atau voting, sampai tautan resmi untuk menonton.
Persona contoh
Mahasiswa 20 tahun yang sering menonton bersama teman, kesulitan menyepakati film di grup percakapan, dan ingin langsung tahu di mana film bisa ditonton.
Media sosial dipilih sebagai saluran karena komunikasi dan media sosial menjadi alasan utama penggunaan internet (19,9%), dan 43,4% pengguna mengakses internet 4 sampai 6 jam per hari (Bisnis.com, 2026a, 2026b).
Strategi 4P
Product
Aplikasi Android dengan jelajah film, favorit, Nobar Match, AI Rekomendasi, filter mood dan durasi, serta tautan tonton atau tiket resmi.
Price
Paket Gratis (Rp0) dengan batas permintaan AI, dan paket Plus usulan Rp19.900 per bulan tanpa iklan dengan batas AI lebih tinggi.
Place
Distribusi lewat unduhan aplikasi Android; halaman aplikasi memakai deskripsi dan tangkapan layar yang akurat bila dipublikasikan.
Promotion
Demo di komunitas kampus dan film, video singkat di media sosial, kode undangan room, serta sesi uji pengguna.
Saluran, aktivitas, dan indikator
| Saluran | Aktivitas | Indikator keberhasilan |
|---|---|---|
| Komunitas kampus | Demo dan uji coba di komunitas mahasiswa/film | Jumlah pengguna yang mencoba dan memberi umpan balik |
| Undangan room | Pengguna membagikan kode Nobar Match | Jumlah anggota baru per room |
| Media sosial | Video singkat demonstrasi fitur | Tayangan, klik, dan pengguna yang mencoba |
| Uji coba pengguna | Sesi dengan tugas yang sama untuk semua peserta | Tingkat keberhasilan tugas dan masalah yang ditemukan |
| Halaman aplikasi | Deskripsi dan tangkapan layar akurat | Unduhan dan ulasan pengguna |
Freemium: inti gratis, pendapatan dari iklan dan Plus
Fitur inti gratis. Iklan dan langganan Plus menjadi sumber pendapatan potensial, ditambah sponsor komunitas. Aplikasi tidak menjual film atau tiket dan tidak menjual data pribadi pengguna.
Paket Gratis (Rp0)
- Jelajah film, favorit, dan Nobar Match.
- Batas permintaan AI.
- Menjadi pintu masuk pengguna dan sumber tayangan iklan.
Iklan (Google AdMob)
- Iklan nonintrusif untuk pengguna paket Gratis.
- Banner di bawah daftar film; interstitial dengan frekuensi dibatasi.
- AdMob dievaluasi bila memenuhi ketentuan; lihat contoh kode di Fitur #6.
- Tidak ada iklan di layar Login.
Langganan Plus (Rp19.900 / bulan)
- Tanpa iklan.
- Batas permintaan AI lebih tinggi.
- Biaya layanan AI per permintaan menjadi pertimbangan utama harga.
Sponsor komunitas
- Dukungan acara atau kegiatan komunitas film.
- Dibahas per kegiatan, bukan paket tetap.
Strategi bisnis
Fokus pembeda
Voting kelompok dan rekomendasi bahasa sehari-hari, bukan menyaingi katalog film yang besar.
Biaya terkendali
Fitur wajib lebih dulu; monetisasi dan fitur opsional menyusul setelah hasil uji.
Tumbuh lewat undangan
Setiap room membawa anggota baru melalui kode Nobar Match.
Mitra seperlunya
Penyedia cloud/API dan sumber data film. Hubungan resmi dengan platform streaming atau penjual tiket tidak diasumsikan; aplikasi hanya menautkan ke sumber resmi.
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.
Gratis untuk memulai, Plus untuk tanpa iklan
Rp19.900 per bulan adalah angka usulan dari dokumen awal, bukan harga yang sudah divalidasi. Validasi memerlukan survei pengguna dan perhitungan biaya layanan AI.
Gratis
Selamanya.
- Jelajah film, favorit
- Nobar Match
- Batas permintaan AI
- Iklan nonintrusif (opsional)
Plus
Belum diuji ke pengguna.
- Tanpa iklan
- Batas permintaan AI lebih tinggi
- Semua fitur paket Gratis
Sponsor komunitas
Belum ada sponsor terkonfirmasi.
- Dukungan acara atau kegiatan komunitas film
Simulasi pendapatan Plus
Geser asumsi untuk melihat gambaran kasar pendapatan kotor dari langganan Plus. Angka awal hanyalah contoh (jumlah pengguna mengikuti target SOM), bukan prediksi. Persentase pelanggan Plus belum diketahui dan harus diukur lewat survei.
Belum termasuk potongan toko aplikasi, pajak, dan biaya lain. Tenaga pengembangan mahasiswa tidak dihitung sebagai biaya tunai.
Dasar penetapan dan validasi harga
Biaya layanan AI
Tiap permintaan AI memiliki biaya. Batas permintaan di paket Gratis dan Plus ditentukan setelah biaya per permintaan diketahui.
Kesediaan membayar
Harga Plus diuji lewat survei pengguna di komunitas kampus sebelum ditetapkan.
Iklan vs langganan
Plus menghapus iklan, jadi nilainya bergantung pada seberapa sering iklan tampil di paket Gratis. Keduanya perlu disetel bersama.