Loading repository data…
Loading repository data…
irfandwisamudra / repository
Bookshelf App adalah aplikasi web sederhana untuk mengelola koleksi buku pribadi. Dapat menambahkan, mengedit, mencari, memindahkan, dan menghapus buku dengan data yang tersimpan di localStorage. Dibangun menggunakan HTML, CSS (Bootstrap), dan JavaScript murni sebagai submission kelas "Belajar Membuat Front-End Web untuk Pemula" di Dicoding.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Aplikasi Bookshelf untuk mencatat, memindahkan, mengedit, menghapus, dan mencari buku. Data persisten menggunakan localStorage. Dibuat dengan HTML + CSS (Bootstrap 5) dan JavaScript murni (tanpa framework) sesuai ketentuan submission Dicoding.
localStorage.data-testid sesuai starter project untuk auto-grader.assets/css/style.cssassets/js/main.js)localStorage).
├─ index.html
├─ assets/
│ ├─ css/
│ │ └─ style.css
│ ├─ img/
│ │ ├─ logo.png
│ │ ├─ slide-1.png
│ │ ├─ slide-2.png
│ │ └─ slide-3.png
│ └─ js/
│ └─ main.js
└─ README.md
Tidak ada proses build.
Clone/unduh repositori ini.
Buka index.html langsung di browser, atau jalankan server statis:
npx serve . lalu buka alamat yang diberikan.Browser modern sudah cukup (Chrome/Edge/Firefox/Safari).
Isi formulir “Tambahkan Buku Baru”:
Buku muncul pada rak:
Aksi pada setiap kartu buku:
localStorage.Cari Buku: masukkan judul di formulir pencarian dan submit.
localStorage: BOOKSHELF_APPS{
"id": 1695461234567, // number (timestamp)
"title": "Judul Buku",
"author": "Penulis",
"year": 2024, // number
"isComplete": false // boolean
}
iddihasilkan dari timestamp+new Date()agar unik.
DOMContentLoaded: inisialisasi form, sinkronisasi teks tombol submit, memuat data dari storage.
onjsonfetched (custom event): dipicu setelah data diambil dari localStorage untuk merender ulang rak.
Perubahan status/aksi buku akan:
books,updateJson() untuk menyimpan ke localStorage.Wajib
#incompleteBookList) & Selesai (#completeBookList).isComplete) tersimpan ke localStorage.localStorage.Opsional (terpenuhi)
main.js).data-testid.Styling: ubah di assets/css/style.css atau tambahkan kelas Bootstrap.
Jangan ubah atribut data-testid pada elemen:
bookItem, bookItemTitle, bookItemAuthor, bookItemYear,bookItemIsCompleteButton, bookItemDeleteButton, bookItemEditButton,searchBookForm*, bookForm*,incompleteBookList, completeBookList.Teks UI (mis. judul, label) aman untuk disesuaikan.
Tambah buku (kosongkan form → validasi HTML menangani required).
Pindah rak beberapa kali → refresh halaman → status tetap.
Edit buku (ubah judul/penulis/tahun/status) → simpan → refresh → perubahan bertahan.
Cari judul yang ada/tidak ada → pastikan filter bekerja.
Hapus buku → konfirmasi → refresh → item tidak kembali.
Bersihkan data (jika perlu):
BOOKSHELF_APPS,localStorage.removeItem('BOOKSHELF_APPS') di konsol.Jika item terduplikasi setelah memuat ulang, pastikan renderFromBooks() membersihkan kontainer rak sebelum append (sudah diterapkan).
Pastikan urutan <script> di index.html:
assets/js/main.jsGambar slider berada di assets/img/ dan opsional untuk diubah.
Desain & Pengembangan — Irfan Dwi Samudra