Peminjaman Buku

haikelz
Haikel, 2 min read.

بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ

banner

Deskripsi

peminjaman-buku adalah sebuah sistem peminjaman buku sederhana. Saya membuat project ini sebagai challenge kepada diri sendiri dan mencoba beberapa hal yang belum pernah diterapkan di real project, seperti mengatur multirole login, serta penerapan useDeferredValue hook.

Flow sistemnya:

  1. User login ke peminjaman-buku. Disini terdapat dua skema, yakni login sebagai guest atau sebagai admin.

  2. Setelah login, maka akan diarahkan ke page /dashboard.

  3. User memilih buku yang akan dipinjam. Buku-buku ini akan dimasukkan ke Wishlist.

  4. User menuju ke page /pinjam-buku, dimana Wishlistnya ada disini. Di page ini, user bisa membatalkan peminjaman buku yang ada di Wishlist, atau langsung meminjam bukunya.

  5. Jika user jadi meminjam buku, maka batas waktu pengembalian bukunya adalah 7 hari setelah peminjaman buku. Jadi misalnya user meminjam tanggal 1, maka batas waktu terakhir mengembalikannya adalah tanggal 8.

  6. Jika user yang mengembalikan buku setelah batas waktu yang berlaku, maka akan dikenakan denda berupa uang Rp.2.000/hari(bisa dirubah oleh admin).

Hampir semua data disimpan ke local storage, kecuali untuk data user yang meminjam buku. Jadi, untuk setiap user yang meminjam buku, maka datanya akan disimpan ke Supabase, dan akan ditampilkan ke sebuah table yang berada di page /list-users, dimana hanya admin yang bisa mengakses page ini. Admin juga bisa mendownload file CSV dari list-users nya.

Untuk langkah-langkah setupnya, saya sudah jabarkan di repo Github.

Fitur

  • Multirole auth login guest and admin (with github, google, or credentials).
  • CRUD operations.
  • Search the books that user want.
  • Save the user data who lend a/the book to Supabase and display it into a table in /list-users page(only admin who can access this page).
  • Show the user profile.
  • Export the users list to CSV format and only admin who can download it.
  • Books recommendation

Screenshots

ss-1ss-2ss-3ss-4ss-5ss-6ss-7ss-8

Tech Stack