Ada banyak jalan menuju Roma, sama dengan ada banyak cara membuat sebuah aplikasi web dan banyak teknik untuk mengoptimalkan sebuah aplikasi web. Cara membuat saat ini sudah cukup banyak tutorialnya, tapi bagaimana dengan teknik mengoptimalkannya?

Tantangan ini ingin mengajak teman-teman web developer Indonesia untuk mencoba membuat sebuah aplikasi RSS reader sederhana dengan goal membuat time to interactive dibawah 5 detik di kondisi jaringan 3G yang lambat dan mobile phone dengan spesifikasi menengah rata-rata.

image

Sebagai gambaran teknis untuk bisa mencapai 5 detik sendiri sebenarnya di kondisi jaringan 3G yang lambat (diasumsikan di 400kbps) maka kita sebenarnya cuma punya waktu sekitar 3,4 detik. Karena sekitar 1,6 detik itu sudah terpakai untuk waktu pemrosesan request lewat jaringan seperti DNS query, TCP handshake, atau HTTPS handshake. Dan dengan perhitungan 3,4 detik dengan kondisi jaringan 400ms round trip atau kecepatan 400kbps, maka kita hanya punya budget ukuran file aplikasi kita sekitar 170KB. Kalau tidak terkompresi dengan GZIP mungkin sekitar 800KB.

image

Time to interactive budget

Nah terinpirasi dari tantangan yang sebelumnya sudah ada di luar seperti di Hackernews PWA ini. Maka kita ingin mencoba membuat tantangan untuk teman-teman web developer Indonesia. Bagaimana bisa membuat sebuah aplikasi web sederhana yang bisa digunakan dalam waktu 5 detik. Nah aturan tantangannya kurang lebih sebagai berikut:

  1. Membuat sebuah aplikasi content reader dengan menggunakan feed publication WWWID ini yang sudah diubah menjadi JSON sehingga bisa dikonsumsi langsung. Silakan menggunakan URL berikut untuk mengakses feed JSON. [https://api.rss2json.com/v1/api.json?rss_url=https%3A%2F%2Fmedium.com%2Ffeed%2Fwwwid](https://api.rss2json.com/v1/api.json?rss_url=https%3A%2F%2Fmedium.com%2Ffeed%2Fwwwid)
  2. Bebas menggunakan library atau framework apapun selama bisa diakses melalui browser modern seperti Chrome, Firefox, Safari, Opera, dll.
  3. Aplikasi content reader ini cukup memiliki 2 halaman, yaitu halaman home dengan daftar latest feed di mana pada daftar konten cukup memunculkan :
  4. judul artikel
  5. nama penulis
  6. thumbnail artikel
  7. satu paragraf artikel.
  8. tanggal artikel di-_publish _Dan halaman konten detail di mana sama seperti daftar konten namun memunculkan konten artikel keseluruhan, bukan hanya 1 paragraf.
  9. Feed bisa di-filter menggunakan kategori, di mana kategori ini bisa diambil dari field categories di tiap konten. Feed filter harus punya unique URL sehingga kita bisa mengakses konten terkait kategori tersebut langsung via URL misalnya [https://my-reader.app/cat/pwa](https://my-reader.app/cat/pwa) yang otomatis menampilkan konten PWA saja.
  10. Bisa mencapai skor Lighthouse untuk PWA dan Performance diatas 90.
  11. Melakukan testing menggunakan Webpagetest mode yang easy dan mengaktifkan Lighthouse audit pada saat melakukan test.
  12. Menuliskan bagaimana aplikasi web tersebut dikembangkan dan teknik optimasi yang digunakan seperti apa untuk mencapai skor Lighthouse tersebut.
  13. Bergabung di group Telegram untuk tanya jawab dan update lebih lanjut. Bergabung di [_https://t.me/wwwid_pwa_](https://t.me/wwwid_pwa)
  14. Mendaftarkan aplikasi web tersebut di form submission __ dengan mencantumkan URL web app, Github repo URL, dan Medium article URL.
  15. Update progress di Twitter dengan hashtag #WWWIDChallenge
  16. Menambahkan topic wwwid dan wwwidchallenge di Github repo agar muncul di daftar repo para peserta tantangan.

Tantangan ini hanya sekedar untuk pembelajaran, bukan untuk berkompetisi. Dengan demikian kita bisa melihat bagaimana di setiap framework/library mengoptimasi sebuah aplikasi agar dapat ditampilkan dalam 5 detik. Update akan dilakukan secara bertahap di artikel ini.

Update

  1. Menambahkan filter kategori di point 4 dan update progress di Twitter via hashtag di point 10 — 12 Feb 2018
  2. Mengganti Lighthouse audit menggunakan Webpagetest di-point 6 — 15 Feb 2018
  3. Menambahkan topic di Github repo untuk membuat list di halaman Github topic di-point 11. — 15 Feb 2018
  4. Menambahkan URL form submission dan menghilangkan score pada submission. Score akan dihitung automatis dengan tes Lighthouse yang tersentralisasi. — 6 Mar 2018