{
  "title": "Dự án 3: Hộp Sưu Tập Sticker",
  "subtitle": "Học và rèn luyện kỹ năng Bài 19 môn Web",
  "description": [
    {
      "text": "Chào mừng các em học sinh lớp 4! Trong dự án 3 này, chúng ta sẽ lập trình ứng dụng 'Hộp Sưu Tập Sticker'.",
      "bold": false
    },
    {
      "text": " Em sẽ thực hành và sử dụng các kiến thức đã học ở Bài 19 kết hợp với các kiến thức từ các bài trước để xây dựng giao diện tương tác sinh động.",
      "bold": false
    }
  ],
  "knowledge_title": "Kiến thức trọng tâm",
  "knowledge_tags": [
    "Bài học chính: Bài 19",
    "Ngôn ngữ: HTML, CSS, JavaScript",
    "Mảng dữ liệu: Array []",
    "Thêm phần tử: push()",
    "Danh sách: ul, ol, li",
    "CSS: list-style-type"
  ],
  "steps_title": "Các bước thực hiện chi tiết",
  "steps": [
    {
      "title": "Bước 1: Khởi tạo thư mục dự án",
      "body": "- Trên ổ đĩa Z, tạo thư mục dự án của em: hocsinh01/{tên của em}/bai19-3.\n- Tạo file: index.html, style.css, và tạo một thư mục con tên là assets để chứa các tệp tài nguyên hình ảnh, âm thanh."
    },
    {
      "title": "Bước 2: Xây dựng khung HTML chính",
      "body": "- Trong thẻ <head>, khai báo thẻ đường dẫn cơ sở: <base href=\"./assets/\"> và kết nối file CSS ngoài bằng đường dẫn tương đối lùi cấp: <link rel=\"stylesheet\" href=\"../style.css\">.\n- Tạo một thẻ div lớp 'container' bao bọc toàn bộ nội dung.\n- Thêm thẻ tiêu đề chính <h1> với nội dung 'HỘP SƯU TẬP STICKER'.\n- Tạo một thẻ <input type=\"text\" id=\"o-nhap-moi\" placeholder=\"Tên Sticker...\"> để học sinh nhập dữ liệu.\n- Tạo nút bấm <button class=\"btn-them\"> với nội dung 'THÊM' và sự kiện click chuột onclick gọi tương tác."
    },
    {
      "title": "Bước 3: Lập trình tương tác JavaScript",
      "body": "- Tự viết mã JavaScript trong thẻ <script> đặt ở cuối body (học sinh tự xây dựng, không có code mẫu):\n  + Tự khai báo một mảng rỗng để lưu danh sách bộ sưu tập: let mangDuLieu = [];\n  + Khai báo hàm thêm sticker mới: lấy tên sticker từ ô nhập id='o-nhap-moi' bằng .value. Sử dụng câu lệnh if kiểm tra nếu người dùng chưa nhập chữ thì nhắc nhở bằng alert().\n  + Nếu có chữ hợp lệ: Dùng phương thức mảng .push() để thêm sticker vào danh sách, sau đó hiển thị phần tử mới ra thẻ danh sách <ul id=\"danh-sach-hien-thi\"> bằng .innerHTML và xóa trắng ô nhập liệu."
    },
    {
      "title": "Bước 4: Định dạng CSS cho đẹp mắt",
      "body": "- Mở file style.css để thiết lập màu nền cho body là '#ff9ff3'.\n- Định dạng lớp '.container': chiều rộng tối đa '600px', viền '3px solid #f368e0' và đổ bóng đẹp mắt.\n- Thiết lập cursor: pointer cho tất cả phần tử tương tác click chuột được."
    },
    {
      "title": "Bước 5: Sáng tạo thêm",
      "body": "- Hãy bổ sung ít nhất 5 loại vật phẩm khác vào danh sách của em, định dạng CSS cho chúng nổi bật và lập trình thêm nút để xóa phần tử cuối cùng khỏi danh sách sử dụng phương thức .pop().\n- Định dạng màu sắc và hình nền mang đậm phong cách cá nhân độc đáo của riêng em để hoàn thành bài tập."
    }
  ],
  "code_samples_title": "Gợi ý Code mẫu",
  "code_samples_desc": "Đây là bài tập rèn luyện tư duy độc lập về nhà, học sinh hãy tự suy nghĩ và tự viết toàn bộ code HTML/CSS/JavaScript (không có code mẫu có sẵn).",
  "code_samples": [
    {
      "title": "HTML Gợi ý",
      "type": "html",
      "code": "<!-- Giao diện dự án Hộp Sưu Tập Sticker -->\n<base href=\"/* base href assets */\">\n<link rel=\"stylesheet\" href=\"/* đường dẫn lùi cấp ra style.css */\">\n<div class=\"container\">\n  <h1>HỘP SƯU TẬP STICKER</h1>\n  <input type=\"text\" id=\"o-nhap-moi\" placeholder=\"/* placeholder */\">\n  <button class=\"btn-them\" onclick=\"/* JS code của em */\">THÊM</button>\n</div>\n<script>\n  /* Tự viết mã JavaScript xử lý trong thẻ script của em */\n</script>"
    },
    {
      "title": "CSS Gợi ý",
      "type": "css",
      "code": "/* CSS Cơ bản cho dự án */\nbody {\n  background-color: /* màu nền: #ff9ff3 */;\n}\n.container {\n  max-width: /* độ rộng container: 600px */;\n  border: /* viền: 3px solid #f368e0 */;\n  /* bo góc, đổ bóng container */\n}\n.nut-bam, .btn, .btn-nhac, .btn-mo, .btn-dong, .btn-tinh, .btn-them, .btn-play, .btn-pause, .btn-check, .btn-kick, .btn-go {\n  /* màu nền nút bấm */\n  /* con trỏ chuột: bàn tay chỉ */\n}"
    }
  ],
  "tip": {
    "title": "💡 Mẹo nhỏ:",
    "desc": "Để thêm một món đồ vào cuối mảng, ta dùng mảng.push('tên'). Để hiển thị nó dạng danh sách, hãy kết hợp thẻ ul và li trong HTML."
  }
}