← Kembali ke Beranda
Ilustrasi Artikel

Proyek Web: Membangun Aplikasi Cuaca Cerdas dengan API

Halo Sobat Jurnal Coding! Selamat datang kembali di ruang eksplorasi tanpa batas pada kategori Proyek.

Mari kita bicarakan sebuah kejadian yang pasti pernah dialami oleh kita semua. Pernahkah kamu merencanakan sebuah liburan akhir pekan yang sempurna, sudah berpakaian sangat rapi, menyemprotkan parfum favoritmu, lalu melangkah keluar rumah dengan penuh percaya diri... namun lima menit kemudian hujan turun dengan sangat deras dan menghancurkan seluruh rencanamu? Atau sebaliknya, kamu membawa payung besar yang berat karena ramalan cuaca pagi mengatakan akan ada badai lebat, namun ternyata sepanjang hari matahari bersinar sangat terik hingga membuatmu berkeringat lelah?

Cuaca memang sangat sulit ditebak dan sering kali menjengkelkan. Di masa kini, kita memang sering mengandalkan aplikasi cuaca bawaan dari ponsel pintar yang terkadang membosankan, kaku, atau malah penuh dengan iklan pop-up yang sangat mengganggu pandangan mata. Sebagai seorang calon pengembang perangkat lunak (Software Engineer) yang andal, kamu tidak perlu lagi pasrah dan tunduk pada aplikasi buatan orang asing. Kamu sejatinya memiliki kekuatan sihir digital di ujung jarimu untuk menciptakan mesin peramal cuaca milikmu sendiri!

Pada proyek spektakuler kita kali ini, kita akan membangun sebuah Aplikasi Cuaca Cerdas (Smart Weather App) yang fungsional. Proyek ini bukanlah sekadar aplikasi pencatat atau permainan tebak angka biasa. Kita akan membuat aplikasimu benar-benar "hidup" dan bisa berkomunikasi secara langsung dengan jaringan satelit cuaca di seluruh belahan dunia melalui keajaiban teknologi perantara yang bernama API (Application Programming Interface).

Bayangkan API ini seperti seorang kurir agen rahasia yang sangat patuh. Saat kamu mengetikkan nama kota tujuan seperti "Jakarta" atau "Tokyo" di layar aplikasimu, kurir agen rahasia ini akan berlari secepat kilat melintasi jaringan internet global, menanyakan kondisi cuaca saat detik itu juga kepada pusat pangkalan data cuaca raksasa, dan langsung kembali kepadamu membawa laporan sangat lengkap tentang suhu udara, kelembapan, hingga kondisi awan. Sangat keren dan terdengar seperti fiksi ilmiah, bukan?

Proyek menakjubkan ini adalah ujian kelulusan yang sangat sempurna untuk melatih pemahaman menulismu tentang pengambilan data dari pihak luar (Fetch API), teknik pengolahan bongkahan data berformat JSON, dan tentu saja, seni manipulasi layar tampilan (DOM) secara instan. Siapkan secangkir minuman hangat favoritmu, lenturkan jari-jarimu, dan mari kita mulai merakit mesin pengontrol cuaca pribadi ini!


Langkah 1: Membangun Jendela Pemantau (HTML)


Setiap aplikasi berbasis web yang canggih pasti harus selalu dimulai dari sebuah kerangka bangunan struktural yang sangat kokoh. Untuk mewujudkan aplikasi cuaca ini, kerangka yang kita butuhkan sebenarnya tidak terlalu rumit. Kita hanya membutuhkan sebuah kotak area pencarian tempat pengunjung mengetikkan nama kota asal mereka, sebuah tombol pemindai sebagai pelatuk perintah, dan sebuah area layar panggung raksasa untuk menampilkan angka suhu ruangan dan deskripsi visual mengenai langit saat itu.

Silakan persiapkan file baru pada aplikasi penulisan kodemu dan tuliskan struktur kerangka dasar HTML berikut ini dengan sangat teliti:


<div id="wadah-cuaca">
<h1>Pemantau Cuaca Global</h1>

<div class="area-pencarian">
<input type="text" id="input-kota" placeholder="Masukkan nama kota...">
<button id="tombol-cari">Pindai Cuaca</button>
</div>

<div id="layar-hasil" style="display: none;">
<h2 id="nama-kota-tampil">Jakarta</h2>
<h1 id="suhu-tampil">28°C</h1>
<p id="deskripsi-cuaca">Hujan Ringan</p>
<div class="detail-ekstra">
<p>Kelembapan Udara: <span id="kelembapan-tampil">80%</span></p>
<p>Kecepatan Angin: <span id="angin-tampil">5 km/j</span></p>
</div>
</div>
</div>


Rahasianya ada pada penggunaan gaya tersembunyi secara mutlak (display: none;) pada area bingkai layar hasil. Mengapa kita melakukan ini? Kita sengaja menyembunyikan layar tersebut sejak awal halaman dimuat karena pada detik tersebut kita belum tahu persis kota apa yang akan dicari oleh pengunjung. Sangat logis dan mempertimbangkan kenyamanan mata pengguna!


Langkah 2: Memberikan Nuansa Estetika Langit Gelap (CSS)


Aplikasi peramal cuaca pribadi haruslah terlihat sangat bersih, menenangkan pikiran, dan dapat diandalkan akurasinya. Untuk itu, kita akan menggunakan sihir CSS gaya Glassmorphism yang sangat elegan. Desain bingkai kaca buram transparan beraksen futuristik ini akan membuat aplikasimu seolah-olah menyatu secara alami dengan embun pagi yang menempel di kaca jendela rumahmu yang hangat.


body {
background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%);
color: #f8fafc;
display: flex;
justify-content: center;
padding-top: 60px;
font-family: sans-serif;
margin: 0;
}

#wadah-cuaca {
background: rgba(255, 255, 255, 0.05);
padding: 40px;
border-radius: 20px;
width: 100%;
max-width: 450px;
text-align: center;
box-shadow: 0 15px 35px rgba(0,0,0,0.5);
backdrop-filter: blur(15px);
border: 1px solid rgba(255, 255, 255, 0.1);
}

.area-pencarian {
display: flex;
gap: 12px;
margin-bottom: 30px;
}

input {
flex: 1;
padding: 15px;
border: none;
border-radius: 8px;
background: rgba(255, 255, 255, 0.05);
color: white;
font-size: 16px;
border: 1px solid rgba(255, 255, 255, 0.2);
}

button {
background-color: #00ffff;
color: #0f172a;
border: none;
padding: 15px 25px;
border-radius: 8px;
cursor: pointer;
font-weight: bold;
font-size: 16px;
transition: 0.3s;
}

button:hover {
background-color: #ffffff;
}

#suhu-tampil {
font-size: 72px;
margin: 15px 0;
color: #00ffff;
text-shadow: 0 0 20px rgba(0, 255, 255, 0.5);
}

#deskripsi-cuaca {
font-size: 24px;
text-transform: capitalize;
margin-bottom: 30px;
}

.detail-ekstra {
display: flex;
justify-content: space-between;
margin-top: 25px;
padding-top: 25px;
border-top: 1px solid rgba(255, 255, 255, 0.1);
font-size: 18px;
}


Cobalah simpan kode desain tersebut dan buka file pelacak ini di jendela peramban! Gradasi latar belakang biru kegelapan malam yang dipadukan dengan panel kaca buram tersebut tampak sangat memukau dan menghipnotis mata. Aplikasi independen ini kini terlihat sangat mirip seperti layar antarmuka radar pesawat luar angkasa canggih dari film masa depan.


Langkah 3: Membangkitkan Agen Rahasia Penjelajah Waktu (JavaScript)


Kini tiba saatnya pada bagian paling mendebarkan: menyuntikkan kecerdasan logika ke dalam mesin aplikasi kita. Kita akan memerintahkan bahasa JavaScript untuk menggunakan antarmuka publik dari sebuah layanan cuaca raksasa. Dalam praktiknya nanti di dunia nyata, kamu sangat perlu mendaftar secara mandiri ke situs layanan seperti OpenWeatherMap untuk mendapatkan kunci otentikasi rahasia pribadimu. Namun untuk keperluan latihan alur logika ini, mari kita perhatikan secara saksama bagaimana barisan kode pengambil data ini bekerja secara gaib mengeksekusi misi.


const inputKota = document.getElementById("input-kota");
const tombolCari = document.getElementById("tombol-cari");
const layarHasil = document.getElementById("layar-hasil");
const namaKotaTampil = document.getElementById("nama-kota-tampil");
const suhuTampil = document.getElementById("suhu-tampil");
const deskripsiCuaca = document.getElementById("deskripsi-cuaca");
const kelembapanTampil = document.getElementById("kelembapan-tampil");
const anginTampil = document.getElementById("angin-tampil");

// Ingat baik-baik: Kamu harus mengganti tulisan KUNCI_RAHASIA_KAMU dengan deretan huruf kunci aslimu nanti
const KUNCI_API = "KUNCI_RAHASIA_KAMU";

tombolCari.addEventListener("click", function() {
let namaKota = inputKota.value;

if (namaKota === "") {
alert("Peringatan: Kamu tidak boleh mengosongkan nama kota yang ingin dicari!");
return;
}

let urlTarget = "https://api.openweathermap.org/data/2.5/weather?q=" + namaKota + "&appid=" + KUNCI_API + "&units=metric&lang=id";

// Menyuruh sang agen rahasia pergi berselancar ke jaringan internet luar
fetch(urlTarget)
.then(function(responServer) {
if (!responServer.ok) {
throw new Error("Data kota tersebut tidak ditemukan di peta dunia");
}
return responServer.json();
})
.then(function(dataCuaca) {
// Agen rahasia berhasil kembali membawa koper data, saatnya kita bongkar isinya!
namaKotaTampil.innerText = dataCuaca.name;
suhuTampil.innerText = Math.round(dataCuaca.main.temp) + "°C";
deskripsiCuaca.innerText = dataCuaca.weather[0].description;
kelembapanTampil.innerText = dataCuaca.main.humidity + "%";
anginTampil.innerText = dataCuaca.wind.speed + " km/j";

// Tampilkan layar hasil secara penuh dengan gaya blok
layarHasil.style.display = "block";
})
.catch(function(pesanError) {
alert("Maaf ada gangguan: " + pesanError.message);
layarHasil.style.display = "none";
});
});


Membedah Misteri Baris Kode: Bagaimana Sistem Ajaib Ini Bekerja?

Bagi kamu yang baru pertama kali berurusan dengan komunikasi internet antar mesin aplikasi berbeda, kepalamu mungkin akan sedikit terasa berputar melihat rentetan perintah bahasa inggris tersebut. Jangan merasa takut apalagi panik! Mari kita bedah rahasia kejeniusan di balik kode peramal cuaca ini menggunakan pendekatan bahasa manusia sehari-hari.

Fungsi sakti paling utama yang membuat seluruh keajaiban pemanggilan satelit ini bisa terjadi adalah sebuah perintah bernama fungsi mengambil jaringan. Saat kamu memanggil fungsi penjemput data ini, kamu seolah-olah sedang melepaskan seekor burung merpati pos super cepat atau mengirimkan seorang kurir agen rahasia untuk terbang jauh menuju alamat peladen komputer server yang telah ditentukan pada seutas rantai URL. Setibanya di alamat markas server tersebut, sang agen kurirmu memberikan informasi mengenai nama kota yang diminta sekaligus memperlihatkan lencana kunci izin akses masuk.

Jika kota yang dicari tersebut memang benar-benar terdaftar di peta atlas dunia mereka, mesin server raksasa tersebut akan mengangguk lalu membalas kunjungan agenmu dengan membekalinya sebuah koper parsel data berformat bahasa perantara khusus. Parsel data ini ibarat sebuah koper perjalanan besar yang di dalamnya berisi sangat banyak laci penyimpan kecil bertingkat. Laci tingkat pertama menyimpan nilai suhu temperatur, laci tingkat kedua menyimpan tingkat uap air kelembapan, dan laci tingkat ketiga menyimpan informasi seberapa kencang embusan angin bergerak.

Lalu apa kegunaan utama dari fungsi pisau pemotong pembulatan matematika pada variabel teks penampil suhu di atas? Ini juga merupakan trik psikologis! Komputer mesin satelit cuaca itu terlalu teliti menghitung sehingga mereka gemar mengirimkan hasil angka suhu berupa deretan nilai pecahan panjang seperti 28.765 derajat celsius. Tentu saja sepasang mata manusia biasa akan kurang nyaman jika harus membaca angka serumit itu di pagi hari sebelum berangkat kerja, bukan? Fungsi pisau pembulat matematika bertugas secara diam-diam memotong ekor angka pecahan tersebut dan seketika membulatkannya menjadi angka 29 bulat utuh yang sangat sempurna dan ringkas!

Selanjutnya pada babak akhir skrip, struktur blok jaringan tangkapan kesalahan bertindak mutlak sebagai sistem pelindung bantalan parasut udara. Bayangkan jika pengguna sedang kebingungan lalu salah mengeja atau asal mengetik nama kota menjadi "Jakaaaarta", mesin satelit server cuaca tentu akan kebingungan dan hanya melemparkan pesan tanda bahaya merah kembali kepadamu. Alih-alih membiarkan aplikasimu hancur berkeping-keping hingga memunculkan layar putih kosong yang menakutkan, parasut udara pengaman ini akan segera menangkap masalah kode berbahaya tersebut dengan sangat lembut dan kemudian hanya memunculkan jendela peringatan pop-up yang sopan kepada mata pengguna. Sungguh sebuah perancangan logika mesin yang sangat sistematis dan tahan banting!

Kesimpulan Akhir Proyek dan Nasihat Pendorong Semangat

Berikan tepuk tangan yang sangat gemuruh tanpa henti untuk dirimu sendiri! Kamu pada hari ini baru saja merakit dan membangun pondasi aplikasi komunikasi data eksternal pihak ketiga yang tingkat kesulitannya cukup tinggi dan sangat canggih. Keberhasilan dalam menguasai cara kerja komunikasi pengambilan data dan penguraian laci data eksternal adalah tiket gerbang pembuka utama bagi siapapun untuk kelak melamar lalu mendapatkan posisi pekerjaan bergaji cukup tinggi di perusahaan industri teknologi masa depan yang kompetitif.

Mulai detik sekarang ini, hak guna aplikasi cuaca pintar ini adalah kebanggaan milikmu seutuhnya. Kamu bisa dan bahkan sangat diwajibkan untuk menaruh purwarupa kode menakjubkan ini di dalam catatan portofolio repositori pribadi milikmu. Teruslah tanpa lelah berlatih merangkai barisan kode baru setiap pagi. Di luar latihan dasar ini, cobalah paksa otakmu untuk berpikir lalu menambahkan fitur ekstra seperti menyuruh warna gradasi latar belakang panel agar berubah muram secara otomatis jika laporan cuacanya menunjukkan keadaan hujan lebat, dan jangan pernah sekalipun membiarkan otakmu berhenti bermimpi menciptakan solusi kehidupan. Terus pantau langit melalui barisan layarmu, pertahankan semangat menulismu, dan sampai jumpa kembali di proyek tantangan pembuatan mahakarya kode yang jauh lebih menakjubkan berikutnya bersama Jurnal Coding!

Apa pendapatmu tentang artikel ini?