Kurikulum Terbuka & Berjenjang

Panduan Lengkap Pemrograman Web Modern

Materi terstruktur dari tingkat dasar hingga mahir yang dirancang untuk siswa SMK kejuruan se-NTT dan siapa saja yang ingin menguasai rekayasa web modern. Setiap topik dilengkapi studi kasus yang bisa langsung Anda uji di Live Playground.

🚀
Panduan Resmi Terlengkap Siswa

Tutorial Langkah demi Langkah Siswa di VxAI Coding Lab

Dari membuka web, login akun, pengerjaan 10 level playground, hingga mendapatkan nilai dan sertifikat.

Baca Artikel Lengkap ➔
1
Tingkat 1 • Fondasi Utama

HTML5: Kerangka & Struktur Web

HyperText Markup Language menyusun seluruh teks, gambar, formulir, dan struktur dokumen.

⚡ Uji Latihan HTML di Playground

1.1 Struktur Dokumen Standar HTML5

Setiap file website diawali dengan deklarasi tipe dokumen dan struktur pembungkus utama:

<!DOCTYPE html>
<html lang="id">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Judul Halaman Web Saya</title>
  </head>
  <body>
    <h1>Selamat Datang di Dunia Pemrograman!</h1>
    <p>Ini adalah paragraf konten utama website.</p>
  </body>
</html>

Hirarki Judul & Teks

Gunakan heading untuk struktur dokumen yang ramah mesin pencari (SEO):

  • <h1>: Judul utama halaman (wajib hanya 1 per halaman).
  • <h2> - <h6>: Subjudul berjenjang.
  • <p>: Paragraf teks biasa.
  • <strong>: Menebalkan teks penting.
  • <em>: Memiringkan teks penekanan.

Tautan & Gambar

Menghubungkan halaman dan menampilkan media visual:

<!-- Tautan Eksternal -->
<a href="https://vxai.online" target="_blank">Buka VxAI</a>

<!-- Menyisipkan Gambar -->
<img src="logo.png" alt="Deskripsi Gambar" width="200">

1.2 Formulir Input & Pengumpulan Data

Coba Form Ini di Playground ➔

Formulir memungkinkan pengguna mengirimkan input teks, kata sandi, pilihan dropdown, dan tombol submit:

<form action="/simpan" method="POST">
  <label for="nama">Nama Lengkap:</label>
  <input type="text" id="nama" name="nama" placeholder="Ketik nama Anda" required>

  <label for="email">Email Pengguna:</label>
  <input type="email" id="email" name="email" required>

  <label for="jurusan">Jurusan:</label>
  <select id="jurusan" name="jurusan">
    <option value="RPL">Rekayasa Perangkat Lunak</option>
    <option value="TKJ">Teknik Komputer & Jaringan</option>
  </select>

  <button type="submit">Kirim Formulir</button>
</form>

1.3 Elemen Semantik HTML5 (Standar Industri)

Gunakan tag semantik dibanding tag `<div>` polos untuk meningkatkan aksesibilitas dan kemudahan dibaca mesin:

<header> Kepala dokumen, logo, dan navigasi situs.
<nav> Kumpulan tautan menu navigasi website.
<main> Konten pokok dan unik dari satu halaman.
<footer> Kaki halaman berisi hak cipta & kontak.
2
Tingkat 2 • Desain & Estetika

CSS3: Tata Letak, Flexbox & Grid Modern

Cascading Style Sheets mengatur warna, tipografi, jarak (spacing), dan animasi layar.

⚡ Uji Flexbox di Playground

2.1 Memahami CSS Box Model

Setiap elemen di web adalah kotak empat persegi panjang yang terdiri dari 4 lapisan:

MARGIN (Ruang Luar)
BORDER (Garis Tepi)
PADDING (Ruang Dalam)
CONTENT (Teks / Gambar)
.kotak {
  box-sizing: border-box; /* Sangat disarankan agar padding tidak merusak lebar */
  width: 300px;
  padding: 1.5rem;       /* Jarak ke dalam */
  border: 1px solid #38bdf8;
  margin: 1rem auto;     /* Jarak ke luar (tengah) */
  border-radius: 1rem;   /* Sudut bulat */
}

2.2 Master Tata Letak Flexbox

Muat Latihan Flexbox ➔

Flexbox adalah standar industri untuk menyusun elemen 1 dimensi (baris atau kolom) secara rapi:

/* Kontainer Induk (Parent) */
.baris-sejajar {
  display: flex;
  flex-direction: row;            /* default: 'row' (mendatar) atau 'column' (menurun) */
  justify-content: space-between; /* Perataan horizontal: flex-start, center, space-between */
  align-items: center;            /* Perataan vertikal: center, flex-start, stretch */
  gap: 1.5rem;                    /* Jarak otomatis antar elemen anak */
  flex-wrap: wrap;                /* Turun ke bawah jika layar sempit di HP */
}

/* Elemen Anak (Child) */
.item-anak {
  flex: 1;                        /* Membagi lebar secara merata */
  min-width: 250px;
}

2.3 CSS Grid untuk Galeri & Portofolio

Muat Latihan CSS Grid ➔

CSS Grid sempurna untuk tata letak 2 dimensi (baris dan kolom sekaligus). Sangat cocok untuk galeri kartu:

.galeri-grid {
  display: grid;
  /* Otomatis menambah atau mengurangi kolom sesuai ukuran layar */
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 1.5rem;
}

2.4 Desain Responsif dengan Media Queries

Memastikan website tampil sempurna di smartphone (HP), tablet, maupun monitor desktop:

/* Gaya default untuk Desktop / Layar Lebar */
.navigasi { display: flex; gap: 2rem; }

/* Jika dibuka di layar HP (lebar maksimal 768px) */
@media (max-width: 768px) {
  .navigasi {
    flex-direction: column; /* Ubah menu mendatar menjadi menurun */
    gap: 0.75rem;
  }
}
3
Tingkat 3 • Logika & Interaktivitas

JavaScript: DOM & Aksi Pengguna

Bahasa skrip yang menghidupkan website: merespon klik tombol, validasi, dan alur aplikasi.

⚡ Uji JavaScript di Playground

3.1 Variabel Modern (`const` & `let`) dan Fungsi

Gunakan `const` untuk nilai yang tidak berubah dan `let` untuk nilai yang akan bertambah atau berganti:

// Deklarasi Variabel
const namaSekolah = "SMK Vokasi NTT";
let jumlahSiswa = 350;

// Arrow Function Modern
const beriSalam = (nama) => {
  return `Halo ${nama}, selamat datang di ${namaSekolah}!`;
};

console.log(beriSalam("Budi"));

3.2 Menangkap Elemen & Mendengarkan Event Klik

Coba Counter di Playground ➔

DOM (Document Object Model) adalah jembatan antara JavaScript dan elemen HTML:

// 1. Tangkap elemen HTML berdasarkan ID
const tombol = document.getElementById("tombol-klik");
const labelAngka = document.getElementById("nilai-angka");

let counter = 0;

// 2. Pasang pendengar aksi klik (Event Listener)
tombol.addEventListener("click", function() {
  counter++;
  labelAngka.innerText = counter; // Perbarui teks di layar secara langsung!
  
  if (counter >= 10) {
    labelAngka.classList.add("text-sukses"); // Tambah class CSS
  }
});

3.3 Menambah Elemen HTML Baru Secara Dinamis

Buka Latihan To-Do List ➔

Membuat elemen baru `createElement` dan menyisipkannya ke dalam daftar `appendChild`:

function tambahTugasBaru(isiTugas) {
  const list = document.getElementById("daftar-tugas");
  
  // Buat tag <li> baru
  const itemBaru = document.createElement("li");
  itemBaru.innerText = isiTugas;
  
  // Klik untuk menandai selesai
  itemBaru.addEventListener("click", () => {
    itemBaru.classList.toggle("selesai");
  });

  // Masukkan ke dalam daftar
  list.appendChild(itemBaru);
}
4
Tingkat 4 • Portofolio & Proyek Nyata

Katalog Latihan & Tantangan Terpadu

Pilih proyek di bawah ini untuk langsung dikerjakan di Live Playground satu-klik:

🟢 Tingkat 1: Pemula

Struktur Web & Formulir Pendaftaran

Latihan menyusun profil diri, heading, paragraf, serta form registrasi siswa dengan validasi HTML5.

⚡ Kerjakan Proyek Ini ➔
🔵 Tingkat 2: Menengah

Tata Letak Flexbox & Grid Portofolio

Membuat navbar responsif, hero section, dan kartu galeri karya otomatis yang rapi di layar HP dan laptop.

⚡ Kerjakan Proyek Ini ➔
🟣 Tingkat 3: Mahir

Aplikasi To-Do List Interaktif

Aplikasi manajemen tugas: menambah catatan baru, menandai selesai dengan coret teks, dan menghapus tugas.

⚡ Kerjakan Proyek Ini ➔
🟣 Tingkat 3: Mahir

Simulator Obrolan AI Tutor Interaktif

Membangun antarmuka obrolan cerdas yang membalas pertanyaan koding pengguna secara otomatis.

⚡ Kerjakan Proyek Ini ➔

Siap Menguji Kemampuan Koding Anda?

Pilih latihan di Live Playground, ketik kode Anda, lihat hasilnya secara real-time, dan simpan agar dapat dievaluasi langsung oleh guru pengajar!

⚡ Mulai Latihan di Playground Sekarang
Chat WhatsApp