Fasa 12 — Modul Pelajar

Mobile App dengan AI (PWA)

Bina aplikasi mobile yang boleh di-install di phone — tanpa belajar React Native, Flutter, atau Swift. Cuma HTML, CSS, JavaScript — dan AI.

Bina App Mobile Tanpa Belajar React Native/Flutter

Bayangkan: Awak tunjuk app yang BOLEH di-install di phone — ada icon di home screen, buka macam app native, berfungsi offline — dibina tanpa belajar React Native atau Flutter. Cuma guna HTML, CSS, JS — dan AI.

Inilah Progressive Web App (PWA). Satu teknologi yang mengubah web app biasa menjadi pengalaman macam app native. Dan dengan kuasa AI, proses untuk mencipta PWA menjadi lebih mudah dan cepat dari sebelumnya.

Cabaran dulu:

  • Nak buat app mobile? Kena belajar React Native (JavaScript), Flutter (Dart), atau Swift (iOS) / Kotlin (Android)
  • Kena guna App Store / Google Play untuk distribusi
  • Kena belajar konsep kompleks macam state management, native modules, build tools
  • Masa pembelajaran: berbulan-bulan

Sekarang dengan PWA + AI:

  • Guna HTML, CSS, JavaScript yang dah awak belajar
  • AI yang tulis manifest.json dan service worker
  • Install direct dari browser — tak perlu App Store/Google Play
  • Berfungsi offline, boleh hantar push notification
  • Boleh akses kamera, geolocation, dan banyak lagi
  • Masa pembelajaran: satu sesi 3-4 jam

Falsafah modul ini: Dengan AI, fokus beralih dari "cara tulis kod" ke "apa yang boleh dibina". Anda tidak perlu menghafal syntax manifest.json atau service worker API. AI handle itu. Tugas awak adalah想像 (imagine) apa yang PWA boleh buat, dan gunakan AI untuk merealisasikannya.

Apa Itu PWA?

PWA = Progressive Web App. Ianya web app biasa yang ditingkatkan dengan superpower — boleh di-install di phone, berfungsi offline, dan ada feature macam app native.

Bayangkan perbezaan ni:

Web App Biasa

Buka di pelayar web (Chrome/Safari). Kena taip URL. Kena ada internet. Tiada icon di home screen. Ada address bar. Macam melawat kedai — kena pergi, kena buka pintu.

PWA (Progressive Web App)

Boleh di-install di home screen. Buka direct macam app native (tiada address bar). Boleh guna offline. Boleh hantar push notification. Macam kedai yang dah ada di depan rumah awak — buka je pintu, terus masuk.

Tiga Komponen Utama PWA

1. Web App (HTML + CSS + JS)

Ini yang dah awak buat sebelum ni. PWA tetap guna teknologi web biasa. Cuma ditingkatkan dengan dua komponen tambahan.

2. Manifest.json (Kad Pengenalan)

Fail JSON yang "memperkenalkan" app awak kepada phone. Ia mengandungi nama app, ikon, warna tema, dan cara app patut dipaparkan (fullscreen/standalone).

3. Service Worker (Pekerja Latar)

Script JavaScript yang berjalan di latar belakang. Ia "menyadang" (intercept) request internet, menyimpan response dalam cache, dan menghidangkan semula bila offline. Macam pembantu peribadi yang ingat semua benda.

Contoh PWA Popular

  • Twitter (X): PWA yang sangat famous — ada di Play Store tapi sebenarnya PWA
  • Pinterest: PWA mereka 40% lebih ringan dari app native, tapi 60% lebih engagement
  • Starbucks: PWA untuk order kopi — loading super pantas, offline menu
  • Spotify: Versi web di desktop — sebenarnya PWA yang power
  • WhatsApp Web: Bukan PWA tapi konsep sama — web app yang powerful

Langkah 1: Bina Web App Responsive (Mobile-First)

Sebelum jadi PWA, kena ada web app yang responsive dulu. Guna mana-mana projek sedia ada atau bina baru guna AI.

Guna AI prompt untuk buat web app mobile-friendly:

Prompt AI: "Buat web app mobile-responsive dengan: - Viewport meta tag - Flexbox/Grid layout - Font saiz sesuai untuk mobile - Touch-friendly buttons (min 44px) - Dark theme (warna #0b0d17) - Satu halaman dashboard ringkas dengan header, content, footer"

Ciri web app yang mobile-friendly:

  • Guna <meta name="viewport"> untuk kawal skala
  • Reka bentuk mobile-first — desktop adalah "bonus"
  • Button besar — minimum 44x44px untuk senang tekan guna jari
  • Font saiz minima 16px (iOS akan zoom kalau kurang)
  • Layout guna flexbox/grid yang auto-adjust
  • Touch target ada ruang rehat (gap) antara satu sama lain

Nota: Kalau guna projek sedia ada dari fasa sebelumnya, pastikan ia sudah responsive. Test di Chrome DevTools dengan mobile view (toggle device toolbar — Ctrl+Shift+M).

Langkah 2: Tambah PWA Manifest (AI Prompt)

Manifest.json adalah fail yang memberitahu browser: "Hei, web app ni boleh jadi PWA!"

Apa yang ada dalam manifest.json:

  • name — Nama penuh app
  • short_name — Nama pendek (untuk icon label)
  • icons — Senarai ikon dalam pelbagai saiz
  • start_url — Halaman mula bila app dibuka
  • display — Cara paparan: standalone, fullscreen, minimal-ui
  • theme_color — Warna tema (nampak di status bar phone)
  • background_color — Warna latar semasa loading

Prompt AI untuk generate manifest.json:

Prompt: "Tambah PWA manifest.json untuk web app saya. Nama app: Dashboard Saya Nama pendek: Dashboard Warna tema: #0b0d17 Warna latar: #ffffff Display: standalone Orientasi: any Sediakan placeholder icon untuk saiz 192x192 dan 512x512 Guna format PNG dengan warna tema cyan (#06d6f0)"

Selepas dapat output, simpan dan link:

1. Copy output AI ke fail baru → simpan sebagai 'manifest.json' 2. Dalam index.html, tambah dalam bahagian <head>: <link rel="manifest" href="manifest.json"> 3. Juga tambah: <meta name="theme-color" content="#0b0d17">

Tip: Ikon PWA adalah penting. Minta AI buat SVG icon atau guna tool macam favicon.io hasilkan ikon. Jangan guna gambar JPEG — PNG dengan transparent background adalah terbaik.

Langkah 3: Tambah Service Worker untuk Offline (AI Prompt)

Service worker adalah "otak" PWA. Ia berjalan di latar belakang, menguruskan caching dan membolehkan app berfungsi offline.

Apa itu caching? Bayangkan awak ada pembantu peribadi. Setiap kali awak baca buku, pembantu simpan salinan. Bila awak nak baca semula, pembantu bagi terus tanpa perlu pergi ke kedai buku. Itulah yang service worker buat — ia menyimpan salinan fail web app dan menghidangkannya semula bila diperlukan.

Prompt AI untuk generate service worker:

Prompt: "Tambah service worker untuk offline caching. Nama cache: dashboard-app-v1 Senarai fail untuk di-cache: - index.html - style.css - script.js - manifest.json - Semua gambar dalam folder images/ Guna strategi 'Cache First, Network Fallback': 1. Mula-mula, cache semua fail (install event) 2. Bila user buka app, service worker serve dari cache dulu 3. Kalau fail ada dalam cache, guna terus (pantas) 4. Kalau tak ada, baru request dari network 5. Simpan response baru dalam cache untuk kegunaan akan datang Tambah 'activate' event untuk cleanup cache lama"

Register service worker dalam index.html:

<script> if ('serviceWorker' in navigator) { navigator.serviceWorker.register('sw.js') .then(function(reg) { console.log('Service Worker Registered!', reg); }) .catch(function(err) { console.log('Service Worker Failed:', err); }); } </script>

Peringatan Penting: Service worker HANYA berfungsi di HTTPS (atau localhost). Kalau buka guna HTTP biasa, service worker tak akan register. Ini sebab kenapa deployment ke hosting dengan HTTPS sangat penting. Cloudflare Pages, Netlify, Vercel — semuanya bagi HTTPS percuma.

Langkah 4: Test Install di Phone

Sekarang PWA dah siap. Masa untuk test sama ada ia boleh di-install.

Test di Desktop (Chrome DevTools)

1. Buka PWA di Chrome (localhost atau HTTPS) 2. Buka DevTools (F12) 3. Klik tab "Application" 4. Dalam sidebar kiri, klik "Manifest" — semak semua info betul 5. Klik "Service Workers" — pastikan status "Activated" 6. Di address bar, klik icon install ( ) atau ⋮ menu → "Install..." 7. PWA akan buka dalam standalone window

Test di Phone

1. Deploy PWA ke hosting HTTPS dulu (lihat Langkah 7) 2. Buka URL di Chrome pada phone 3. Tunggu "Add to Home Screen" banner muncul (bawah skrin) 4. Klik "Install" 5. PWA akan muncul di home screen 6. Buka dari home screen — ia buka standalone! 7. Turn off internet — refresh — masih berfungsi!

Kenapa perlu deploy dulu? Kalau test di localhost, phone tak boleh akses. Nak test betul-betul di phone, PWA kena di-host di server dengan HTTPS. Guna Cloudflare Pages — deploy percuma, HTTPS auto.

Langkah 5: Push Notification Basic (AI Prompt)

Push notification membolehkan PWA hantar notifikasi ke phone walaupun app tak dibuka. Untuk sesi ini, kita buat local notification (notifikasi dalam app) yang lebih mudah.

Prompt AI untuk notification basic:

Prompt: "Tambah push notification basic dalam web app saya. Guna Notification API JavaScript: 1. Minta permission dari user 2. Jika allow, tunjuk button 'Hantar Notifikasi' 3. Bila button klik, hantar notification dengan: - Title: 'Hello dari Dashboard Saya!' - Body: 'Ini adalah push notification pertama awak.' - Icon: guna ikon yang sama dari manifest Guna kod yang ringkas dan mudah difahami."

Contoh output AI:

<button onclick="sendNotification()">Hantar Notifikasi</button> <script> // Minta permission if ('Notification' in window) { Notification.requestPermission(); } function sendNotification() { if (Notification.permission === 'granted') { new Notification('Hello dari Dashboard Saya!', { body: 'Ini adalah push notification pertama awak.', icon: 'icon-192.png' }); } } </script>

Limitasi: Notification API asas hanya berfungsi semasa app dibuka. Untuk push notification dari server (notifikasi sampai walaupun app tutup), ia memerlukan setup yang lebih kompleks — VAPID keys, push service, dan backend. Itu topik advanced. Untuk sesi ini, fokus pada Notification API dulu.

Langkah 6: Camera & Geolocation Access via AI

Salah satu kuasa PWA — ia boleh akses hardware phone macam kamera dan GPS, sama seperti app native.

Camera Access

Prompt AI:

Prompt: "Tambah feature kamera dalam web app saya. Guna getUserMedia() API untuk akses kamera belakang phone: 1. Button 'Buka Kamera' 2. Bila klik, paparkan live video dari kamera 3. Button 'Tangkap Gambar' untuk ambil screenshot dari video 4. Paparkan gambar yang ditangkap di bawah video 5. Guna <video> untuk live preview dan <canvas> untuk capture Buat interface yang mudah dan mobile-friendly."

Geolocation

Prompt AI:

Prompt: "Tambah geolocation feature dalam web app saya. Guna navigator.geolocation API: 1. Button 'Dapatkan Lokasi Saya' 2. Bila klik, minta permission lokasi 3. Paparkan latitude dan longitude 4. Tunjukkan link ke Google Maps dengan koordinat tersebut 5. Handle error kalau user deny permission Buat UI yang ringkas dan mobile-friendly."

Nota Keselamatan: Browser akan minta permission setiap kali web app nak akses kamera atau lokasi. Ini adalah ciri keselamatan — user kena bagi izin secara eksplisit. PWA yang di-install akan diingati permissionsnya.

Langkah 7: Deploy & Install di Phone Sendiri

Sekarang PWA awak dah siap. Masa untuk deploy ke hosting dan install di phone!

Deploy ke Cloudflare Pages

1. Git add, commit, push semua fail ke GitHub git add . git commit -m "Tambah PWA manifest dan service worker" git push origin main 2. Buka https://dash.cloudflare.com 3. Klik Workers & Pages → Create application → Pages 4. Connect to Git → pilih repository awak 5. Set build output directory: / 6. Klik Save and Deploy 7. Dapatkan URL: https://projek-awak.pages.dev

Install di Phone

1. Buka Chrome di phone 2. Taip URL: https://projek-awak.pages.dev 3. Tunggu "Add to Home Screen" banner 4. Klik Install 5. Icon PWA akan muncul di home screen 6. Buka dari home screen — ta-da! 🎉

Test Offline

1. Buka PWA — pastikan semua content loaded 2. Turn off WiFi / Flight Mode 3. Buka semula PWA dari home screen 4. App masih berfungsi! 🔥

Share dengan kawan-kawan! Kongsi URL PWA awak dengan rakan sekelas. Mereka juga boleh install PWA awak di phone mereka. Bayangkan — app yang awak bina sendiri boleh diguna oleh orang lain!

Ringkasan

Apa yang awak dah belajar dalam modul ini:

  • PWA (Progressive Web App) — web app yang boleh di-install di phone, berfungsi offline, macam app native
  • Manifest.json — kad pengenalan PWA, guna AI untuk generate
  • Service Worker — pekerja latar yang handle caching dan offline
  • Install Prompt — "Add to Home Screen" — cara PWA di-install
  • Push Notification — hantar notifikasi ke phone
  • Camera & Geolocation — akses hardware phone dari PWA
  • Deploy HTTPS — wajib untuk PWA, Cloudflare Pages bagi percuma

Langkah seterusnya: Cuba bina PWA sendiri untuk portfolio, bisnes, atau projek akhir. Dengan kuasa AI + PWA, awak boleh hasilkan aplikasi mobile yang professional tanpa perlu belajar React Native atau Flutter. Bayangkan potensinya!