1 / 26
Front End Masterclass
HTML
CSS
JS
UI
WEB
DEV

FINAL PROJECT
SEMESTER 1

Modul Pembelajaran Interaktif — Membangun 4 Proyek Web Nyata dari Nol

📘 KELAS 10 · SMA / SMK

Gunakan tombol atau klik NEXT / PREV untuk navigasi

Daftar Isi

4 Proyek yang Akan Kamu Bangun

Di semester ini, kamu sudah belajar BAB 1–12. Sekarang saatnya menggabungkan semuanya menjadi proyek nyata yang bisa dipamerkan!

🧑‍💻

Portfolio

CV digital online: About, Skills, Projects, Contact

🏢

Company Profile

Home, About, Services, Gallery, Contact

📊

E-Report

Input data, tabel, statistik, export tampilan

🚀

Landing Page

Hero, fitur produk, testimoni, contact form

Setiap proyek diajarkan dengan urutan: Materi → Analogi Animasi → Penjelasan → Code → Demo Interaktif, lalu ditutup dengan slide latihan yang bisa langsung kamu kerjakan.

PROYEK 1Portfolio

🧑‍💻 Portfolio Website

🧍 📄 🌐

Bayangkan kamu melamar kerja. Biasanya kamu menyerahkan CV kertas (📄). Portfolio website adalah CV digital yang hidup di internet (🌐) — bisa diakses siapa saja, kapan saja, dari mana saja. Recruiter cukup membuka link, dan langsung melihat siapa kamu, keahlianmu, dan karyamu.

  • About Me — perkenalan singkat & foto kamu
  • Skills — daftar keahlian dengan progress bar
  • Projects — galeri karya yang pernah kamu buat
  • Contact — form agar orang bisa menghubungimu
Proyek 1 · Portfolio

Fitur: About Me & Skills

index.html
<section class="about">
  <img src="img/foto.jpg" alt="Foto">
  <h2>Halo, saya Sahil</h2>
  <p>Calon Front-End Developer.</p>
</section>

<div class="skill">
  <span>HTML</span>
  <div class="bar" style="width:90%"></div>
</div>

Klik tombol untuk menganimasikan skill bar — persis seperti di portfolio sungguhan.

HTML590%
CSS385%
JavaScript70%
Bootstrap75%
Proyek 1 · Portfolio

Fitur: Projects & Contact

contact.html
<form id="contact">
  <input type="text" placeholder="Nama">
  <input type="email" placeholder="Email">
  <button>Kirim</button>
</form>

// validasi sederhana
if (email.includes("@")) {
  alert("Pesan terkirim!");
}
Proyek 1 · Portfolio

Struktur Folder Proyek

Rapikan file-mu agar mudah dikelola. Animasi garis di bawah menunjukkan alur dari file utama ke folder pendukung.

index.html 📁 css/ 📁 js/ 📁 img/

Sama seperti lemari yang punya laci berbeda untuk baju, celana, dan kaos kaki — memisahkan CSS, JS, dan gambar ke folder masing-masing membuat proyekmu rapi dan mudah dicari saat sudah membesar.

Tugas 1

Buat Halaman About Me

Buat sebuah section About Me yang berisi foto diri dan deskripsi singkat tentang dirimu.

  • Ada foto / avatar
  • Ada nama lengkap
  • Deskripsi minimal 3 kalimat
  • Sudah diberi styling CSS
  1. Buat <section class="about">
  2. Tambahkan tag <img> untuk foto
  3. Tulis nama dengan <h2>
  4. Tambahkan deskripsi di <p>
  5. Beri warna & padding lewat CSS
Tugas 2

Section Skills dengan Progress Bar

Buat bagian Skills berisi minimal 5 keahlian, masing-masing dengan progress bar animasi seperti pada demo Slide 4.

  • Minimal 5 skill ditampilkan
  • Setiap skill punya progress bar (CSS)
  • Ada efek hover
  • Persentase terlihat jelas
  1. Buat container .skills
  2. Untuk tiap skill, buat label + track + fill
  3. Atur lebar fill dengan width: 80%
  4. Tambah transition agar animasi halus
  5. Beri :hover efek pada skill
PROYEK 2Company Profile

🏢 Company Profile Website

🏢 📰 💻

Dulu perusahaan memperkenalkan diri lewat brosur kertas (📰). Sekarang, Company Profile Website adalah brosur digital yang bisa diklik — lebih hidup, bisa berisi galeri, peta lokasi, dan tombol kontak langsung. Satu website mewakili wajah profesional sebuah perusahaan (🏢).

🏠 Homeℹ️ About🛠️ Services 🖼️ Gallery✉️ Contact
Proyek 2 · Company Profile

Fitur: Home & Navbar

index.html
<nav>
  <a class="active">Home</a>
  <a>About</a>
  <a>Services</a>
</nav>

<header class="hero">
  <h1>Selamat Datang</h1>
  <button>Pelajari Lebih</button>
</header>

Klik menu — item aktif akan ditandai, persis seperti navigasi web sungguhan.

Proyek 2 · Company Profile

Fitur: Services & Gallery

style.css
.gallery {
  display: grid;
  grid-template-columns: repeat(3,1fr);
  gap: 10px;
}
.gallery img:hover {
  transform: scale(1.05);
}

Klik salah satu gambar untuk memperbesar (lightbox).

Proyek 2 · Company Profile

Navigasi Multi-Halaman

Website perusahaan punya banyak halaman yang saling terhubung lewat navbar. Inilah peta alurnya:

Home About Services Gallery Contact

Gunakan navbar yang sama persis di setiap halaman agar pengunjung tidak tersesat. Tandai halaman aktif dengan warna berbeda (class .active).

Tugas 3

Buat Hero Section + CTA

Buat Hero Section dengan latar gradient dan sebuah tombol CTA (Call To Action) seperti "Hubungi Kami".

  • Background gradient (linear-gradient)
  • Judul besar (heading)
  • Tombol CTA yang menonjol
  • Teks terbaca jelas di atas background
  1. Buat <header class="hero">
  2. Beri background: linear-gradient(...)
  3. Tambah <h1> dan <p>
  4. Tambah <button> CTA
  5. Atur padding & center dengan flexbox
Tugas 4

Halaman Services — 4 Card Layanan

Buat halaman Services berisi 4 card layanan. Setiap card punya ikon, judul, dan deskripsi singkat.

  • Tepat 4 card layanan
  • Menggunakan CSS Grid / Flexbox
  • Setiap card ada ikon + judul + teks
  • Responsive saat layar dikecilkan
  1. Buat container .services (grid)
  2. Buat 4 .card di dalamnya
  3. Isi ikon (emoji/SVG), judul, deskripsi
  4. Atur grid-template-columns
  5. Tambah media query untuk mobile
PROYEK 3E-Report

📊 E-Report Website

🧑‍🏫
📈

Bayangkan seorang guru (🧑‍🏫) mengisi buku rapor. Setiap nilai yang dimasukkan mengalir sebagai data (•••) lalu otomatis tersusun di tabel dan berubah menjadi grafik (📈). E-Report adalah rapor digital — data masuk sekali, langsung bisa dihitung dan divisualisasikan.

  • Input Data — form untuk memasukkan data
  • Tabel Data — menampilkan data tersusun rapi
  • Statistik Dasar — rata-rata, nilai tertinggi & terendah
  • Export Tampilan — cetak / print laporan
Proyek 3 · E-Report

Fitur: Input Data & Tabel

app.js
let data = [];
function tambah(nama, nilai) {
  data.push({ nama, nilai });
  render();
}
function render() {
  tabel.innerHTML = data.map(d =>
    `<tr><td>${d.nama}</td>
     <td>${d.nilai}</td></tr>`
  ).join("");
}
NamaNilai
Belum ada data — tambahkan di atas.
Proyek 3 · E-Report

Fitur: Statistik & Export

stats.js
const nilai = data.map(d => d.nilai);
const rata = nilai.reduce((a,b)=>a+b,0) / nilai.length;
const max  = Math.max(...nilai);
const min  = Math.min(...nilai);

// export = cetak halaman
window.print();

Tambahkan data di slide sebelumnya, lalu hitung statistiknya di sini.

Rata-rata
Tertinggi
Terendah
Tugas 5

Form Input Nilai Siswa

Buat form input nilai siswa dengan 3 kolom: nama, nilai, keterangan (Lulus / Tidak). Data yang dimasukkan harus tampil di tabel.

  • Ada input nama, nilai, keterangan
  • Tombol "Tambah" berfungsi
  • Data muncul di tabel
  • Validasi: input tidak boleh kosong
  1. Siapkan array let data = []
  2. Buat 3 input + 1 tombol
  3. Saat klik: data.push({...})
  4. Buat fungsi render() untuk tabel
  5. Panggil render() setelah menambah
Tugas 6

Fitur Hapus Data dari Tabel

Tambahkan tombol Hapus di setiap baris tabel. Saat diklik, data tersebut hilang dari array dan tabel diperbarui.

  • Setiap baris punya tombol Hapus
  • Data benar-benar terhapus dari array
  • Tabel ter-update otomatis
  • Tidak error saat tabel kosong
  1. Di render(), tambah kolom tombol
  2. Beri onclick="hapus(i)" dengan index
  3. Fungsi hapus: data.splice(i,1)
  4. Panggil render() lagi
  5. Uji coba hapus beberapa baris
PROYEK 4Landing Page

🚀 Landing Page Produk

🪧 📱 🛒

Landing Page itu seperti baliho (🪧) di pinggir jalan — tugasnya menarik perhatian dalam hitungan detik. Bedanya, baliho digital ini bisa diklik dari smartphone (📱) dan langsung mengarahkan pengunjung untuk membeli (🛒). Satu halaman, satu tujuan: membuat orang bertindak.

🎯 Hero✨ Feature💬 Testimoni📩 Contact
Proyek 4 · Landing Page

Fitur: Hero & Product Feature

index.html
<section class="hero">
  <h1>Sepatu Lari Generasi Baru</h1>
  <button>Beli Sekarang</button>
</section>

<section class="features">
  <div class="feat">⚡ Ringan</div>
  <div class="feat">🛡️ Awet</div>
</section>

Klik untuk memunculkan kartu fitur satu per satu (efek scroll-reveal).


Ringan
🛡️
Awet
💧
Anti Air
💰
Terjangkau
Proyek 4 · Landing Page

Fitur: Testimoni & Contact Form

★★★★★

"Produk terbaik yang pernah saya beli!"

— Andi, Bandung

★★★★★

"Pengiriman cepat, kualitas mantap."

— Sari, Jakarta

★★★★☆

"Worth it banget, recommended!"

— Dimas, Surabaya

Tugas 7

Hero Section Produk + Tagline & CTA

Buat Hero Section untuk sebuah produk pilihanmu, lengkap dengan tagline yang menarik dan tombol CTA "Beli Sekarang".

  • Nama produk + tagline jelas
  • Gambar / ilustrasi produk
  • Tombol CTA mencolok
  • Komposisi rapi & seimbang
  1. Pilih produk (nyata / fiktif)
  2. Tulis tagline 1 kalimat yang kuat
  3. Susun layout hero (teks + gambar)
  4. Tambah tombol CTA
  5. Beri warna sesuai brand produk
Tugas 8

Section Testimoni — 3 Card Review

Buat section Testimoni berisi 3 card review pelanggan. Setiap card berisi rating bintang, kutipan, dan nama.

  • 3 card testimoni
  • Ada rating bintang
  • Ada kutipan & nama pelanggan
  • Tata letak rapi (grid/flex)
  1. Buat container .testimonials
  2. Buat 3 .review-card
  3. Isi bintang (★), kutipan, nama
  4. Atur grid 3 kolom (1 kolom di mobile)
  5. Beri shadow & border halus
Pencapaian

🏆 Skill yang Kamu Kuasai

Dengan menyelesaikan 4 proyek di atas, kamu telah resmi menguasai fondasi seorang Front-End Developer:

Computational Thinking
HTML5 Professional
CSS3 Professional
Bootstrap Fundamental
Responsive Design
JavaScript Fundamental
DOM Manipulation
UI Development
Git & GitHub Dasar
Deployment Dasar
Portfolio Development
Front-End Fundamental
Penutup
Setiap expert dulunya pemula.

Kamu sudah membuktikan bahwa kamu bisa membangun web nyata dari nol. Jangan berhenti di sini — teruslah ngoding, perbaiki, dan pamerkan karyamu ke dunia! 🌍

"Code is like humor. When you have to explain it, it's bad."
— Cory House

Terima kasih telah belajar bersama — Front End Masterclass Kelas 10