Page 1 of 16
System Requirements Document for tombol-hp
1. Introduction
tombol-hp adalah aplikasi mobile Android yang dibuat untuk orang-orang yang tombol volume fisik di HP-nya sudah rusak. Ketika rocker volume tidak lagi berfungsi, pengguna kehilangan satu-satunya cara bawaan untuk menaikkan, menurunkan, atau membisukan suara perangkat — dan kehilangan itu terasa setiap hari: alarm yang terlalu keras, panggilan yang tidak terdengar, media yang tiba-tiba memekakkan telinga di ruang publik.
Aplikasi ini mengembalikan kendali itu ke layar. Pengguna dapat menaikkan volume, menurunkan volume, dan membisukan perangkat sepenuhnya dari dalam aplikasi, serta memverifikasi level volume saat ini agar setiap perubahan dapat dipastikan berhasil. Aplikasi juga menyertakan fitur-fitur tambahan yang berguna dan bermanfaat bagi pemilik HP dengan tombol rusak, sehingga perangkat tetap dapat dipakai dengan nyaman tanpa harus memperbaiki tombol fisiknya.
Audiens: Pemilik perangkat Android yang tombol volume fisiknya tidak berfungsi lagi — sering kali perangkat lama, layar retak, HP warisan, atau perangkat yang biaya perbaikannya tidak terjangkau. Aplikasi dirancang agar jelas, mudah dibaca, dan dapat dipercaya: sebuah alat yang berperilaku seperti rambu publik — gamblang, hangat, terbaca dari jarak lengan dalam cahaya buruk, tanpa gestur tersembunyi.
Page 2 of 16
2. System Overview
tombol-hp adalah aplikasi mobile (Android) yang berjalan di perangkat pengguna sendiri. Seluruh kontrol volume dijalankan dari dalam aplikasi, bukan melalui tombol fisik — ini adalah batasan keras dari kebutuhan pengguna, karena tombol fisik memang sudah rusak.
Aktor:
- Pengguna HP dengan Tombol Fisik Rusak — satu-satunya persona aktif manusia. Ia adalah pemilik perangkat yang mengoperasikan aplikasi untuk mengatur volume perangkatnya.
- Sistem operasi Android / lapisan audio perangkat — aktor non-persona yang mengeksekusi perubahan volume yang diminta aplikasi dan menyediakan level volume saat ini.
Perilaku yang diterima (current):
- Kontrol volume perangkat: menaikkan, menurunkan, dan membisukan (mute) dari dalam aplikasi.
- Menampilkan level volume perangkat saat ini agar pengguna dapat memverifikasi perubahan.
- Fitur tambahan yang berguna dan bermanfaat bagi pengguna dengan tombol HP rusak.
Kepemilikan: Seluruh antarmuka kontrol volume dimiliki oleh aplikasi (custom UI). Eksekusi perubahan volume dan pembacaan level volume dimiliki oleh sistem audio Android; aplikasi hanya meminta dan menampilkan hasilnya.
Pengecualian sempit: Aplikasi tidak menggantikan atau memperbaiki tombol fisik, dan tidak melakukan kontrol volume melalui tombol fisik. Tidak ada kontrol volume yang dijalankan lewat perangkat keras.
Page 3 of 16
2a. Product Interpretation and Delivery Boundary
Pengiriman saat ini. tombol-hp dikirim sebagai aplikasi mobile yang dijalankan langsung di perangkat Android pengguna. Tidak ada akun, tidak ada pendaftaran, dan tidak ada server pihak ketiga yang diperlukan untuk fungsi inti: pengguna membuka aplikasi dan langsung dapat mengendalikan volume perangkatnya. Semua halaman kontrol volume dapat diakses tanpa identitas apa pun, karena tidak ada keadaan milik pengguna yang perlu disimpan, dilanjutkan, atau diikatkan pada orang tertentu — level volume adalah keadaan perangkat, bukan keadaan akun.
Kepemilikan akses. Karena tidak ada hubungan, komitmen, atau nilai yang harus tetap terikat pada peserta tertentu, aplikasi tidak memiliki identitas milik aplikasi. Halaman masuk (Landing) bersifat anonim dan berfungsi menjelaskan aplikasi serta mengarahkan pengguna ke kontrol volume. Halaman kontrol volume juga anonim.
Batas saat ini dan masa depan. Yang termasuk dalam cakupan saat ini adalah kontrol volume (naik, turun, mute), tampilan level volume, dan fitur bantu yang berguna bagi pengguna dengan tombol rusak. Kemampuan di luar itu — misalnya akun, sinkronisasi antarperangkat, atau penggantian fungsi tombol lain yang tidak diminta — tidak termasuk dalam cakupan saat ini dan tidak dijanjikan oleh dokumen ini.
2c. Page Content and Component Coverage
Page 4 of 16
Landing
- Informasi/keadaan: Penjelasan singkat bahwa tombol-hp adalah aplikasi Android untuk mengendalikan volume HP ketika tombol volume fisik rusak; penegasan bahwa kontrol dilakukan dari dalam aplikasi, bukan lewat tombol fisik.
- Aksi utama: Masuk ke kontrol volume (menuju halaman Volume).
- Aksi pendukung: Membaca penjelasan fungsi aplikasi; melihat penanda arah (naik/turun/mute) sebagai pengenalan kode warna.
- Entitas domain: Perangkat Android pengguna; tombol volume fisik yang rusak (sebagai konteks masalah).
- Tanggung jawab komponen: Hero tipografis dengan numeral volume besar sebagai penanda identitas; label mikro "VOLUME MEDIA"; dua pelat kontrol arah (naik merah, turun kuning) sebagai pratinjau; papan status empat baris aliran audio; pita merah penuh berisi nama produk "TOMBOL-HP".
- Keadaan: Loading — tidak ada (halaman statis). Empty — tidak berlaku. Success — pengguna memahami fungsi dan dapat melanjutkan ke kontrol volume. Error — tidak berlaku. Recovery — tidak berlaku.
Volume
- Informasi/keadaan: Level volume perangkat saat ini untuk aliran media, ditampilkan sebagai numeral besar dengan satuan "dari 15"; papan status menampilkan empat aliran audio (Media, Alarm, Nada dering, Panggilan) dengan persentase tabular dan swatch warna.
- Aksi utama: Membaca level volume saat ini untuk memverifikasi perubahan.
- Aksi pendukung: Berpindah ke kontrol Volume Up, Volume Down, atau Mute.
- Entitas domain: Level volume perangkat (0–15); aliran audio perangkat (media, alarm, nada dering, panggilan).
- Tanggung jawab komponen: Numeral tabular besar rata kiri di atas garis rambut penuh lebar; unit "dari 15" di baseline; papan status empat baris bergaris dengan swatch dan persentase; pelat kontrol arah.
- Keadaan: Loading — menampilkan nilai sementara saat membaca level perangkat. Empty — tidak berlaku (level selalu ada). Success — level terbaru ditampilkan dan cocok dengan keadaan perangkat. Error — pembacaan level gagal; tampilkan nilai terakhir yang diketahui dengan penanda bahwa nilai mungkin sudah usang, dan sediakan aksi coba lagi. Recovery — pengguna dapat mencoba membaca ulang atau langsung memakai kontrol naik/turun/mute.
Volume Up
- Informasi/keadaan: Level volume saat ini sebelum dan sesudah aksi; umpan balik bahwa volume telah dinaikkan satu langkah.
- Aksi utama: Menaikkan level volume perangkat satu langkah.
- Aksi pendukung: Menekan berulang untuk menaikkan beberapa langkah; kembali ke halaman Volume untuk verifikasi.
- Entitas domain: Level volume perangkat; batas maksimum volume.
- Tanggung jawab komponen: Pelat kontrol putih dengan segitiga merah ke atas, border bawah 2px tinta, turun 2px saat ditekan; numeral yang menghitung naik dalam langkah 120ms; bilah aliran yang terisi dengan wipe bertepi keras.
- Keadaan: Loading — tidak ada (aksi instan). Empty — tidak berlaku. Success — volume naik satu langkah dan numeral menampilkan nilai baru. Error — permintaan kenaikan gagal; tampilkan pesan singkat dan pertahankan nilai lama. Recovery — pengguna dapat menekan ulang; jika sudah di maksimum, kontrol memberi tahu bahwa batas atas tercapai.
Page 5 of 16
Volume Down
- Informasi/keadaan: Level volume saat ini sebelum dan sesudah aksi; umpan balik bahwa volume telah diturunkan satu langkah.
- Aksi utama: Menurunkan level volume perangkat satu langkah.
- Aksi pendukung: Menekan berulang untuk menurunkan beberapa langkah; kembali ke halaman Volume untuk verifikasi.
- Entitas domain: Level volume perangkat; batas minimum volume.
- Tanggung jawab komponen: Pelat kontrol putih dengan segitiga kuning ke bawah, border bawah 2px tinta, turun 2px saat ditekan; numeral yang menghitung turun dalam langkah 120ms; bilah aliran yang terisi dengan wipe bertepi keras.
- Keadaan: Loading — tidak ada (aksi instan). Empty — tidak berlaku. Success — volume turun satu langkah dan numeral menampilkan nilai baru. Error — permintaan penurunan gagal; tampilkan pesan singkat dan pertahankan nilai lama. Recovery — pengguna dapat menekan ulang; jika sudah di minimum, kontrol memberi tahu bahwa batas bawah tercapai.
Mute
- Informasi/keadaan: Status bisu perangkat saat ini (aktif atau tidak); level volume yang tersimpan sebelum dibisukan.
- Aksi utama: Membisukan (mute) volume perangkat.
- Aksi pendukung: Memulihkan volume ke level sebelum dibisukan.
- Entitas domain: Status mute perangkat; level volume tersimpan.
- Tanggung jawab komponen: Pelat kontrol dengan glif speaker tercoret bergaris 2px; swatch hijau sebagai penanda keadaan "mute dipulihkan"; numeral yang menampilkan 0 saat bisu dan kembali ke nilai tersimpan saat dipulihkan.
- Keadaan: Loading — tidak ada (aksi instan). Empty — tidak berlaku. Success — perangkat bisu dan status terlihat jelas; pemulihan mengembalikan level sebelumnya. Error — permintaan mute atau pemulihan gagal; tampilkan pesan singkat dan pertahankan status lama. Recovery — pengguna dapat mencoba lagi; jika status tidak pasti, halaman Volume menampilkan level sebenarnya.
Page 6 of 16
3. Functional Requirements
FR-01 — Mengendalikan volume perangkat dari dalam aplikasi
- Provenance: explicit
- Story: As a Pengguna HP dengan Tombol Fisik Rusak, I should dapat mengendalikan volume perangkat saya sepenuhnya dari dalam aplikasi, sehingga saya tidak perlu menyentuh tombol volume fisik yang sudah rusak.
- Aktor: Pengguna HP dengan Tombol Fisik Rusak (pemrakarsa); sistem audio Android (pelaksana perubahan).
- Pemicu/input: Pengguna membuka aplikasi dan memilih aksi kontrol volume.
- Hasil yang dapat diamati: Level volume perangkat berubah sesuai aksi yang dipilih, dan perubahan itu tercermin pada tampilan level volume.
- Keadaan akses: Anonim; tidak memerlukan identitas.
- Kegagalan/recovery: Jika permintaan perubahan volume tidak dapat dijalankan, aplikasi memberi tahu pengguna dan mempertahankan level yang berlaku; pengguna dapat mencoba lagi.
- Kelanjutan: Pengguna dapat melanjutkan ke aksi kontrol lain atau memverifikasi level di halaman Volume.
- Penerimaan: Setelah aksi kontrol dijalankan, level volume perangkat benar-benar berubah dan nilai yang ditampilkan cocok dengan keadaan perangkat.
FR-02 — Menaikkan volume perangkat
- Provenance: explicit
- Story: As a Pengguna HP dengan Tombol Fisik Rusak, I should dapat menaikkan level volume perangkat dari dalam aplikasi, sehingga saya bisa memperkeras suara tanpa tombol naik fisik.
- Aktor: Pengguna HP dengan Tombol Fisik Rusak (pemrakarsa); sistem audio Android (pelaksana).
- Pemicu/input: Pengguna menekan kontrol naik volume.
- Hasil yang dapat diamati: Level volume perangkat naik satu langkah; numeral volume menampilkan nilai baru.
- Keadaan akses: Anonim.
- Kegagalan/recovery: Jika kenaikan gagal, nilai lama dipertahankan dan pengguna diberi tahu; jika sudah di batas maksimum, aplikasi memberi tahu bahwa batas atas tercapai.
- Kelanjutan: Pengguna dapat menekan lagi untuk menaikkan lebih lanjut atau beralih ke kontrol lain.
- Penerimaan: Setiap penekanan yang berhasil menaikkan volume satu langkah dan nilai yang ditampilkan bertambah sesuai.
FR-03 — Menurunkan volume perangkat
- Provenance: explicit
- Story: As a Pengguna HP dengan Tombol Fisik Rusak, I should dapat menurunkan level volume perangkat dari dalam aplikasi, sehingga saya bisa memperpelan suara tanpa tombol turun fisik.
- Aktor: Pengguna HP dengan Tombol Fisik Rusak (pemrakarsa); sistem audio Android (pelaksana).
- Pemicu/input: Pengguna menekan kontrol turun volume.
- Hasil yang dapat diamati: Level volume perangkat turun satu langkah; numeral volume menampilkan nilai baru.
- Keadaan akses: Anonim.
- Kegagalan/recovery: Jika penurunan gagal, nilai lama dipertahankan dan pengguna diberi tahu; jika sudah di batas minimum, aplikasi memberi tahu bahwa batas bawah tercapai.
- Kelanjutan: Pengguna dapat menekan lagi untuk menurunkan lebih lanjut atau beralih ke kontrol lain.
- Penerimaan: Setiap penekanan yang berhasil menurunkan volume satu langkah dan nilai yang ditampilkan berkurang sesuai.
FR-04 — Membisukan (mute) volume perangkat
- Provenance: explicit
- Story: As a Pengguna HP dengan Tombol Fisik Rusak, I should dapat membisukan volume perangkat dari dalam aplikasi, sehingga saya bisa mematikan suara sepenuhnya tanpa tombol fisik.
- Aktor: Pengguna HP dengan Tombol Fisik Rusak (pemrakarsa); sistem audio Android (pelaksana).
- Pemicu/input: Pengguna menekan kontrol mute.
- Hasil yang dapat diamati: Perangkat menjadi bisu; status bisu terlihat jelas di aplikasi.
- Keadaan akses: Anonim.
- Kegagalan/recovery: Jika permintaan mute gagal, status lama dipertahankan dan pengguna diberi tahu; pengguna dapat mencoba lagi.
- Kelanjutan: Pengguna dapat memulihkan volume ke level sebelum dibisukan.
- Penerimaan: Setelah mute dijalankan, perangkat benar-benar bisu dan statusnya tampil konsisten.
FR-05 — Memulihkan volume setelah mute
- Provenance: required_inference
- Story: As a Pengguna HP dengan Tombol Fisik Rusak, I should dapat memulihkan volume perangkat ke level sebelum dibisukan, sehingga saya tidak kehilangan pengaturan volume saya setelah memakai mute.
- Aktor: Pengguna HP dengan Tombol Fisik Rusak (pemrakarsa); sistem audio Android (pelaksana).
- Pemicu/input: Pengguna menekan kontrol pemulihan saat perangkat dalam keadaan bisu.
- Hasil yang dapat diamati: Level volume kembali ke nilai yang tersimpan sebelum mute; numeral menampilkan nilai tersebut.
- Keadaan akses: Anonim.
- Kegagalan/recovery: Jika pemulihan gagal, perangkat tetap bisu dan pengguna diberi tahu; pengguna dapat mencoba lagi atau menaikkan volume secara manual.
- Kelanjutan: Pengguna dapat melanjutkan mengatur volume seperti biasa.
- Penerimaan: Setelah pemulihan berhasil, level volume perangkat sama dengan level sebelum mute.
- Alasan inferensi: Diperlukan agar mute dapat dibalik; tanpa pemulihan, mute menjadi jalan buntu yang merusak kegunaan kontrol volume.
FR-06 — Menampilkan level volume perangkat saat ini
- Provenance: explicit
- Story: As a Pengguna HP dengan Tombol Fisik Rusak, I should dapat melihat level volume perangkat saat ini di dalam aplikasi, sehingga saya dapat memverifikasi bahwa perubahan volume benar-benar terjadi.
- Aktor: Pengguna HP dengan Tombol Fisik Rusak (pembaca); sistem audio Android (penyedia data).
- Pemicu/input: Pengguna membuka halaman Volume atau kembali ke halaman itu setelah melakukan aksi kontrol.
- Hasil yang dapat diamati: Level volume saat ini ditampilkan sebagai numeral dengan satuan "dari 15".
- Keadaan akses: Anonim.
- Kegagalan/recovery: Jika pembacaan level gagal, aplikasi menampilkan nilai terakhir yang diketahui dengan penanda bahwa nilai mungkin sudah usang, dan menyediakan aksi coba lagi.
- Kelanjutan: Pengguna dapat langsung memakai kontrol naik, turun, atau mute.
- Penerimaan: Nilai yang ditampilkan cocok dengan level volume perangkat yang sebenarnya pada saat pembacaan.
FR-07 — Menampilkan status seluruh aliran audio perangkat
- Provenance: required_inference
- Story: As a Pengguna HP dengan Tombol Fisik Rusak, I should dapat melihat status aliran audio perangkat (media, alarm, nada dering, panggilan) beserta levelnya, sehingga saya tahu aliran mana yang akan terpengaruh sebelum saya mengubah volume.
- Aktor: Pengguna HP dengan Tombol Fisik Rusak (pembaca); sistem audio Android (penyedia data).
- Pemicu/input: Pengguna membuka halaman Volume.
- Hasil yang dapat diamati: Empat baris bergaris menampilkan label aliran, swatch warna, dan persentase tabular.
- Keadaan akses: Anonim.
- Kegagalan/recovery: Jika sebagian data aliran tidak tersedia, baris yang tidak tersedia ditandai dan baris lain tetap ditampilkan.
- Kelanjutan: Pengguna dapat memilih aksi kontrol berdasarkan informasi ini.
- Penerimaan: Setiap aliran yang tersedia ditampilkan dengan label dan persentase yang benar.
- Alasan inferensi: Diperlukan agar pengguna dapat memverifikasi perubahan volume pada aliran yang relevan; tanpa ini, verifikasi pada FR-06 tidak dapat dibedakan per aliran.
FR-08 — Menyediakan fitur tambahan yang berguna bagi pengguna dengan tombol rusak
- Provenance: explicit
- Story: As a Pengguna HP dengan Tombol Fisik Rusak, I should mendapatkan fitur-fitur tambahan yang berguna dan bermanfaat di dalam aplikasi, sehingga perangkat saya tetap nyaman dipakai meskipun tombol fisiknya rusak.
- Aktor: Pengguna HP dengan Tombol Fisik Rusak.
- Pemicu/input: Pengguna memakai aplikasi untuk kebutuhan volume sehari-hari.
- Hasil yang dapat diamati: Fitur bantu yang tersedia di aplikasi dapat dipakai tanpa tombol fisik.
- Keadaan akses: Anonim.
- Kegagalan/recovery: Jika sebuah fitur bantu tidak dapat dijalankan, aplikasi memberi tahu pengguna dan fungsi kontrol volume inti tetap berjalan.
- Kelanjutan: Pengguna dapat kembali ke kontrol volume kapan saja.
- Penerimaan: Fitur bantu yang disediakan benar-benar dapat dipakai dan tidak menghalangi kontrol volume inti.
- Catatan cakupan: Fitur tambahan yang termasuk dalam cakupan saat ini adalah yang secara langsung mendukung pengendalian volume tanpa tombol fisik: pemulihan setelah mute (FR-05), tampilan level volume (FR-06), dan tampilan status aliran audio (FR-07). Fitur di luar itu tidak termasuk dalam cakupan saat ini.
Page 7 of 16
4. User Personas
Page 8 of 16
Pengguna HP dengan Tombol Fisik Rusak
Konteks produk. Ia memiliki perangkat Android yang tombol volume fisiknya tidak lagi berfungsi — tidak bisa menaikkan, menurunkan, atau membisukan volume lewat tombol. Perangkatnya sering kali sudah berumur, layarnya mungkin retak, atau merupakan HP warisan; memperbaiki tombolnya sering kali tidak terjangkau atau tidak sepadan. Ia memakai HP-nya untuk hal-hal biasa: mendengarkan media, mengandalkan alarm, menerima panggilan, dan mendengar nada dering. Karena tombolnya mati, setiap perubahan volume menjadi masalah kecil yang berulang sepanjang hari.
Tujuan utama. Mengatur level volume perangkat (naik, turun, mute) langsung dari aplikasi, serta memakai fitur bantu lain yang berguna sebagai pengganti fungsi tombol yang hilang. Keberhasilan tercapai ketika volume perangkat dapat dikendalikan penuh tanpa menyentuh tombol fisik.
Tanggung jawab yang diterima. Ia adalah satu-satunya aktor manusia yang memprakarsai dan mengendalikan seluruh aksi: menaikkan volume, menurunkan volume, membisukan perangkat, memulihkan volume setelah mute, membaca level volume saat ini, dan membaca status aliran audio perangkat. Ia juga yang memutuskan kapan perubahan volume diperlukan dan aliran mana yang perlu diperhatikan.
Input dan keputusan. Ia memutuskan arah perubahan (lebih keras atau lebih pelan), memutuskan kapan perangkat harus bisu, dan memutuskan kapan volume perlu dipulihkan. Ia membaca numeral level volume dan baris status aliran untuk memastikan keputusannya berhasil.
Interaksi dengan peserta lain. Satu-satunya peserta lain dalam alur ini adalah sistem audio Android, yang mengeksekusi perubahan volume dan menyediakan level serta status aliran. Ia tidak berinteraksi dengan manusia lain di dalam aplikasi; tidak ada akun, tidak ada undangan, dan tidak ada pihak ketiga.
Keberhasilan yang dapat diamati. Volume perangkat berubah sesuai keinginannya, nilai yang ditampilkan cocok dengan keadaan perangkat, dan ia dapat menyelesaikan pengaturan volume tanpa pernah menyentuh tombol fisik.
Yang membedakan perannya. Pekerjaannya bukan "memakai aplikasi utilitas" pada umumnya — ia menggantikan fungsi perangkat keras yang hilang. Setiap interaksi harus gamblang dan terbaca dalam sekali lihat, karena tidak ada tombol fisik yang bisa ia raba tanpa melihat. Karena itu, kejelasan label, ukuran kontrol, dan umpan balik status lebih penting daripada efisiensi atau kerapian.
Page 9 of 16
5. Core User Flows
Alur 1 — Menaikkan volume perangkat tanpa tombol fisik
- Konteks awal: Pengguna sedang menonton media di HP Android-nya dan suaranya terlalu pelan. Tombol volume fisiknya tidak berfungsi.
- Langkah: Pengguna membuka aplikasi tombol-hp. Halaman Landing tampil dengan penjelasan singkat dan pratinjau kontrol arah.
- Langkah: Pengguna masuk ke kontrol volume dan tiba di halaman Volume, yang menampilkan level volume media saat ini sebagai numeral besar dengan satuan "dari 15", serta papan status empat aliran audio.
- Langkah: Pengguna membuka halaman Volume Up dan menekan pelat kontrol naik. Pelat turun 2px dan numeral menghitung naik dalam langkah 120ms.
- Hasil yang dapat diamati: Sistem audio Android menaikkan level volume perangkat satu langkah; numeral menampilkan nilai baru.
- Keputusan/kelanjutan: Jika suara masih terlalu pelan, pengguna menekan lagi untuk menaikkan beberapa langkah. Jika sudah cukup, ia berhenti.
- Verifikasi: Pengguna kembali ke halaman Volume dan memastikan numeral serta baris aliran media menunjukkan level yang diinginkan.
- Kegagalan/recovery: Jika kenaikan gagal, nilai lama dipertahankan dan aplikasi memberi tahu pengguna; ia dapat menekan ulang. Jika sudah di batas maksimum, aplikasi memberi tahu bahwa batas atas tercapai.
- Langkah berikutnya: Pengguna kembali ke aktivitasnya dengan volume yang sudah disesuaikan.
Alur 2 — Menurunkan volume perangkat tanpa tombol fisik
- Konteks awal: Pengguna berada di ruang publik dan media di HP-nya terlalu keras. Tombol volume fisiknya tidak berfungsi.
- Langkah: Pengguna membuka aplikasi tombol-hp dan masuk ke kontrol volume.
- Langkah: Di halaman Volume, pengguna melihat level saat ini dan papan status aliran audio untuk mengetahui aliran mana yang akan terpengaruh.
- Langkah: Pengguna membuka halaman Volume Down dan menekan pelat kontrol turun. Pelat turun 2px dan numeral menghitung turun dalam langkah 120ms.
- Hasil yang dapat diamati: Sistem audio Android menurunkan level volume perangkat satu langkah; numeral menampilkan nilai baru.
- Keputusan/kelanjutan: Pengguna menekan lagi sampai level yang diinginkan tercapai.
- Verifikasi: Pengguna kembali ke halaman Volume dan memastikan numeral serta baris aliran media menunjukkan level yang diinginkan.
- Kegagalan/recovery: Jika penurunan gagal, nilai lama dipertahankan dan aplikasi memberi tahu pengguna; ia dapat menekan ulang. Jika sudah di batas minimum, aplikasi memberi tahu bahwa batas bawah tercapai.
- Langkah berikutnya: Pengguna melanjutkan aktivitasnya dengan volume yang lebih pelan.
Page 10 of 16
Alur 3 — Membisukan perangkat dan memulihkan volume
- Konteks awal: Pengguna akan memasuki rapat atau ruang ibadah dan perlu memastikan HP-nya benar-benar bisu. Tombol volume fisiknya tidak berfungsi.
- Langkah: Pengguna membuka aplikasi tombol-hp dan masuk ke kontrol volume.
- Langkah: Pengguna membuka halaman Mute dan menekan pelat kontrol mute. Glif speaker tercoret dan swatch hijau menandai keadaan.
- Hasil yang dapat diamati: Sistem audio Android membisukan perangkat; status bisu terlihat jelas di aplikasi dan numeral menampilkan 0.
- Keputusan/kelanjutan: Setelah acara selesai, pengguna memutuskan untuk memulihkan volume.
- Langkah: Pengguna menekan kontrol pemulihan di halaman Mute.
- Hasil yang dapat diamati: Sistem audio Android mengembalikan level volume ke nilai yang tersimpan sebelum mute; numeral menampilkan nilai tersebut.
- Verifikasi: Pengguna membuka halaman Volume dan memastikan level serta baris aliran sudah kembali normal.
- Kegagalan/recovery: Jika mute gagal, status lama dipertahankan dan pengguna diberi tahu; ia dapat mencoba lagi. Jika pemulihan gagal, perangkat tetap bisu dan pengguna dapat mencoba lagi atau menaikkan volume secara manual lewat halaman Volume Up.
- Langkah berikutnya: Pengguna kembali ke aktivitasnya dengan volume yang sudah dipulihkan.
Alur 4 — Memverifikasi level volume dan status aliran audio
- Konteks awal: Pengguna tidak yakin apakah perubahan volume yang ia lakukan tadi benar-benar berhasil, atau ia ingin tahu aliran mana yang akan terpengaruh sebelum mengubah volume.
- Langkah: Pengguna membuka aplikasi tombol-hp dan masuk ke kontrol volume.
- Langkah: Di halaman Volume, pengguna membaca numeral level volume media saat ini dan satuan "dari 15".
- Langkah: Pengguna membaca papan status empat baris — Media, Alarm, Nada dering, Panggilan — masing-masing dengan swatch warna dan persentase tabular.
- Hasil yang dapat diamati: Pengguna mengetahui level volume saat ini dan status setiap aliran audio perangkat.
- Keputusan/kelanjutan: Berdasarkan informasi itu, pengguna memutuskan apakah perlu menaikkan, menurunkan, atau membisukan volume, lalu menuju halaman kontrol yang sesuai.
- Kegagalan/recovery: Jika pembacaan level gagal, aplikasi menampilkan nilai terakhir yang diketahui dengan penanda bahwa nilai mungkin sudah usang, dan menyediakan aksi coba lagi. Jika sebagian data aliran tidak tersedia, baris yang tidak tersedia ditandai dan baris lain tetap ditampilkan.
- Langkah berikutnya: Pengguna melanjutkan ke aksi kontrol yang dipilih atau kembali ke aktivitasnya.
Page 11 of 16
6. Visuals Colors and Theme
Arah kreatif ini mengikuti Erik Spiekermann — bahasa tipografi humanis, logika wayfinding, kontrol bernomor, dan warna sinyal yang dipakai seperti jalur transit. Judul arah: Typographic infrastructure for a phone whose buttons gave up.
Mode: Light mode sebagai mode utama.
Warna (peran):
#F2EDE4 — background / paper ground (dasar halaman, bukan putih murni)
#FFFFFF — surface (hanya untuk pelat kontrol agar terbaca sebagai panel fisik)
#141414 — text / ink (seluruh tipografi)
#D22B1F — primary / signal red (jalur "naik / lebih keras", warna aksi utama)
#F0A500 — accent / transit yellow (jalur "turun / perhatian", warna keadaan aktif)
#1F7A4D — line green (khusus keadaan mute / dipulihkan)
#6E6862 — muted (metadata dan satuan)
Proporsi: sekitar 70% paper, 20% pelat putih, 10% warna sinyal. Warna dipakai seperti peta transit — garis tipis, swatch persegi kecil, tidak pernah sebagai isian dekoratif besar kecuali satu pita merah penuh di hero.
Tipografi:
- Headings: Fira Sans, SemiBold 600, tracking -0.02em, sentence case (huruf kapital hanya untuk label mikro 12px dengan letterspacing 0.14em).
- Body: Fira Sans, 17px/1.6 (16px di mobile).
- Numeral hero: Fira Sans ExtraBold 800, tabular figures, rata kiri, boleh bleed ke tepi kanan viewport pada 1280px.
- Skala 1.25 modular: display numeral
clamp(88px, 22vw, 200px), h1 clamp(34px, 7vw, 64px), h2 clamp(24px, 4vw, 36px), body 17px/1.6 (mobile 16px), label 12px all-caps +0.14em, data numerals tabular 20px.
- Rentang berat 400/600/800 membawa seluruh hierarki, bukan ukuran saja.
Bentuk: Tepi lurus dan garis beraturan, tanpa gradien, tanpa bayangan lembut. Pelat kontrol adalah persegi putih radius 12px dengan border bawah 2px tinta agar terbaca sebagai tombol fisik dengan travel. Swatch persegi kecil 10px sebagai penanda jalur. Garis tinta 1px memisahkan setiap baris data; garis merah 6px di bawah judul bagian seperti garis tepi peron. Piktogram adalah glif geometris bergaris 2px (segitiga naik, segitiga turun, speaker tercoret) yang digambar pada grid yang sama dengan tipografi.
Ritme spasi: Grid 12 kolom dengan margin luar 24px pada 375px, 48px pada 768px, 96px pada 1280px. Kontrol ditumpuk vertikal sebagai pelat selebar penuh di mobile dan tidak pernah lebih pendek dari 56px.
Gaya citra: Tanpa fotografi dan tanpa 3D. Citranya adalah antarmuka itu sendiri: diagram skematis tepi HP dengan rocker mati ditandai merah, set piktogram pada grid 2px yang sama, diagram potongan melintang aliran audio, dan satu diagram kontras tinggi profil samping HP dengan pelat kontrol aplikasi ditumpangkan di tempat tombol dulu berada.
Page 12 of 16
7. Signature Design Concept
Hero halaman Landing: "Papan Tanda Volume".
Pada 1280px, layar pertama adalah bidang kertas hangat penuh yang dibelah satu pita merah horizontal pada 38% tinggi. Di atas pita, rata kiri di kolom 1–7, label mikro "VOLUME MEDIA" dalam 12px caps duduk di atas numeral tabular 200px yang membaca "7" dalam Fira Sans ExtraBold, dengan garis tinta 1px membentang penuh di bawahnya dan satuan "dari 15" kecil di baseline-nya. Tepat di bawah garis, dua pelat kontrol putih duduk berdampingan, masing-masing 96px tinggi dengan border bawah 2px: pelat segitiga merah ke atas dan pelat segitiga kuning ke bawah, keduanya berlabel caps. Di kanan, kolom 8–12, papan status putih mendaftar empat baris bergaris (Media, Alarm, Nada dering, Panggilan), masing-masing dengan swatch warna, label, dan persentase tabular — sehingga pengguna melihat setiap aliran sekaligus. Pita merah itu sendiri membawa nama produk "TOMBOL-HP" dalam berat 800 caps dengan tracking lebar, terpotong oleh tepi pita.
Pada 375px komposisi yang sama runtuh menjadi satu kolom: numeral, lalu dua pelat ditumpuk selebar penuh, lalu baris papan status — setiap label, numeral, dan kontrol utuh dan berada di dalam viewport.
Konsep ini hanya menyusun ulang konten, keadaan, dan kontrol yang sudah diterima: numeral level volume (FR-06), pelat kontrol naik dan turun (FR-02, FR-03), papan status aliran (FR-07), dan nama produk. Tidak ada perilaku, halaman, atau tujuan baru yang diperkenalkan.
Page 13 of 16
8. Interaction Model & Motion Direction
Interaction Model: Static (direction)
Motion Tempo: restrained
Hero Dimensionality: flat
Landing Hero Motion Brief
- Subjek fokus: Numeral volume tabular besar dan dua pelat kontrol arah pada bidang kertas hangat, dibelah pita merah yang membawa nama produk.
- Tesis input → transformasi → hasil: Pengguna menekan pelat kontrol → pelat bergeser turun 2px dan numeral menghitung ke nilai baru dalam langkah 120ms → bilah aliran terisi dengan wipe bertepi keras, sehingga pengguna melihat perubahan volume sebagai gerakan angka, bukan animasi dekoratif.
- Kosakata gerak: Fungsional dan pendek — 140–180ms ease-out hanya pada perubahan keadaan. Tidak ada parallax, tidak ada scroll reveal, tidak ada bounce.
- Bingkai pertama yang tersusun: Bidang kertas penuh dengan pita merah pada 38% tinggi; numeral besar rata kiri di atas garis tinta; dua pelat putih berdampingan di bawah garis; papan status empat baris di kolom kanan; nama produk terpotong tepi pita.
- Keadaan reduced-motion: Ketika
prefers-reduced-motion diatur, hitungan numeral dan isian bilah diperbarui seketika tanpa langkah 120ms dan tanpa pergeseran pelat.
Page 14 of 16
9. Non-Functional Requirements
NFR-01 — Platform mobile Android
- Provenance: explicit
- Pernyataan: Aplikasi ditujukan untuk perangkat HP (mobile) Android.
- Alasan: Kebutuhan pengguna menyebut kontrol volume HP untuk tombol HP yang rusak; kontrol volume perangkat hanya dapat dilakukan di perangkat itu sendiri.
NFR-02 — Kontrol volume dilakukan dari dalam aplikasi, bukan melalui tombol fisik
- Provenance: explicit
- Pernyataan: Seluruh kontrol volume (naik, turun, mute) dijalankan dari dalam aplikasi; tidak ada kontrol volume yang dijalankan melalui tombol fisik.
- Alasan: Batasan keras dari kebutuhan pengguna — tombol fisik memang sudah rusak.
NFR-03 — Keterbacaan dan ukuran kontrol
- Provenance: explicit (arah kreatif)
- Pernyataan: Teks yang dapat dibaca dan kontrol tetap utuh di dalam viewport dan kontainernya pada 375px, 768px, dan 1280px; kontrol tidak pernah lebih pendek dari 56px; tidak ada elemen lain yang menutupi teks atau kontrol.
- Alasan: Pengguna sering memakai perangkat lama dengan layar retak dan harus membaca dari jarak lengan dalam cahaya buruk.
NFR-04 — Umpan balik keadaan yang singkat dan jelas
- Provenance: explicit (arah kreatif)
- Pernyataan: Perubahan keadaan menggunakan transisi 140–180ms ease-out; hitungan numeral berlangsung dalam langkah 120ms; tidak ada animasi dekoratif, parallax, bounce, atau scroll reveal.
- Alasan: Gerak hanya berfungsi sebagai umpan balik keadaan, bukan hiasan.
NFR-05 — Aksesibilitas gerak
- Provenance: explicit (arah kreatif)
- Pernyataan: Ketika
prefers-reduced-motion diatur, hitungan numeral dan isian bilah diperbarui seketika.
- Alasan: Menghormati preferensi pengguna yang sensitif terhadap gerak.
NFR-06 — Tanpa akun dan tanpa identitas aplikasi
- Provenance: required_inference
- Pernyataan: Aplikasi tidak memerlukan akun, pendaftaran, atau identitas milik aplikasi; semua halaman kontrol volume dapat diakses secara anonim.
- Alasan: Tidak ada keadaan milik pengguna yang perlu disimpan, dilanjutkan, atau diikatkan pada orang tertentu; level volume adalah keadaan perangkat, bukan keadaan akun.
NFR-07 — Ketahanan terhadap kegagalan pembacaan dan perubahan volume
- Provenance: required_inference
- Pernyataan: Jika pembacaan level atau perubahan volume gagal, aplikasi menampilkan nilai terakhir yang diketahui dengan penanda bahwa nilai mungkin sudah usang, memberi tahu pengguna, dan menyediakan aksi coba lagi; fungsi kontrol inti tetap berjalan.
- Alasan: Pengguna harus dapat mempercayai nilai yang ditampilkan dan tetap dapat mengendalikan volume meskipun ada gangguan sementara.
Page 15 of 16
10. Tech Stack
- Aplikasi mobile: React Native (Android) — aplikasi berjalan di perangkat pengguna sendiri dan memanggil API audio Android untuk membaca dan mengubah level volume perangkat.
[Default — not specified by user]
- Akses audio perangkat: API audio sistem Android melalui jembatan native React Native untuk menaikkan, menurunkan, membisukan, dan membaca level volume serta status aliran audio.
[Default — not specified by user]
- Penyimpanan lokal: Penyimpanan lokal di perangkat untuk menyimpan level volume sebelum mute agar dapat dipulihkan (FR-05).
[Default — not specified by user]
- Backend: Tidak ada backend yang diperlukan untuk cakupan saat ini; seluruh fungsi inti berjalan di perangkat.
[Default — not specified by user]
- Tipografi: Fira Sans (400/600/800) dengan tabular figures, disertakan sebagai aset aplikasi.
[Default — not specified by user]
11. Assumptions and Constraints
Asumsi:
- A1: Pengguna memiliki perangkat Android yang tombol volume fisiknya rusak, dan perangkat itu masih dapat menjalankan aplikasi.
[Default — not specified by user]
- A2: Perangkat menyediakan API audio sistem yang memungkinkan aplikasi membaca dan mengubah level volume serta status aliran audio.
[Default — not specified by user]
- A3: Level volume media ditampilkan pada skala 0–15 sesuai arah kreatif ("dari 15").
[Default — not specified by user]
- A4: Empat aliran audio yang ditampilkan adalah Media, Alarm, Nada dering, dan Panggilan, sesuai arah kreatif.
[Default — not specified by user]
Batasan:
- C1: Aplikasi ditujukan untuk perangkat HP (mobile) dengan tombol fisik yang rusak; kontrol volume dilakukan dari dalam aplikasi, bukan melalui tombol fisik. (explicit)
- C2: Aplikasi tidak memperbaiki atau menggantikan tombol fisik, dan tidak melakukan kontrol volume melalui tombol fisik. (explicit)
- C3: Tidak ada akun, pendaftaran, atau identitas milik aplikasi; semua halaman kontrol volume anonim. (required_inference)
- C4: Fitur tambahan yang termasuk dalam cakupan saat ini terbatas pada yang secara langsung mendukung pengendalian volume tanpa tombol fisik: pemulihan setelah mute, tampilan level volume, dan tampilan status aliran audio. Fitur di luar itu tidak termasuk dalam cakupan saat ini. (explicit)
- C5: Palet, tipografi, bentuk, tata letak, dan gerak mengikuti arah kreatif Erik Spiekermann; template SaaS indigo/biru-putih dilarang. (explicit)
Page 16 of 16
12. Glossary
- tombol-hp: Nama produk aplikasi mobile Android untuk mengendalikan volume HP ketika tombol volume fisik rusak.
- Rocker volume: Tombol fisik di sisi HP untuk menaikkan dan menurunkan volume; dalam proyek ini, tombol yang sudah rusak.
- Mute: Keadaan perangkat ketika suara dibisukan sepenuhnya.
- Pemulihan (restore): Mengembalikan level volume perangkat ke nilai yang tersimpan sebelum mute.
- Aliran audio: Kanal suara terpisah pada perangkat — media, alarm, nada dering, dan panggilan — yang masing-masing memiliki level sendiri.
- Numeral tabular: Angka dengan lebar digit seragam sehingga nilai dapat berubah tanpa menggeser tata letak.
- Papan status: Empat baris bergaris di halaman Volume yang menampilkan label aliran, swatch warna, dan persentase tabular.
- Pelat kontrol: Persegi putih radius 12px dengan border bawah 2px tinta yang berfungsi sebagai tombol fisik dengan travel.
- Kode sinyal: Penggunaan warna sebagai penanda arah — merah untuk naik/media, kuning untuk turun/perhatian, hijau untuk mute/dipulihkan.
No comments yet. Be the first!