📚 Sistem Informasi Perpustakaan

Logo
INITIALIZING...

Aplikasi web manajemen perpustakaan berbasis Laravel 12 yang dirancang untuk membantu pengelolaan koleksi buku, peminjaman, pengembalian, dan komunitas siswa di lingkungan SMK.

✨ Fitur Utama

👤 Autentikasi & Role


Login, register, dan logout
Tiga level akses: Admin, Petugas, dan Siswa
Two-Factor Authentication (2FA via OTP email) khusus untuk Admin
Middleware proteksi halaman berdasarkan role


📖 Manajemen Buku

(Admin/Petugas)
CRUD data buku (tambah, edit, hapus, lihat detail)
Upload cover buku via file atau URL eksternal
Upload e-book dalam format PDF
Filter katalog berdasarkan genre
Pencarian buku berdasarkan judul, pengarang, atau ISBN
Manajemen stok buku secara real-time


📋 Peminjaman & Pengembalian


Siswa dapat mengajukan peminjaman langsung dari halaman detail buku
Keranjang peminjaman — siswa bisa menambah beberapa buku sekaligus dan checkout dalam satu permintaan
Tanggal kembali fleksibel (minimal besok, maksimal 7 hari)
Admin/Petugas menyetujui atau menolak permintaan peminjaman
Konfirmasi pengembalian buku oleh Admin/Petugas
Laporan kerusakan/kehilangan saat pengembalian (dengan denda otomatis berdasarkan harga buku)
Perpanjangan peminjaman — siswa mengajukan, Admin/Petugas menyetujui (max +7 hari)


💰 Sistem Denda


Denda keterlambatan dihitung otomatis
Denda kerusakan/kehilangan berdasarkan harga buku
Siswa upload bukti pembayaran denda
Admin mengkonfirmasi pembayaran denda


🚫 Sistem Blacklist


Admin/Petugas dapat memblokir akun siswa (durasi tertentu atau permanen)
Siswa yang di-blacklist tidak dapat melakukan aktivitas peminjaman
Petugas tidak dapat memblokir sesama petugas atau admin


💬 Komunitas & Chat


Grup chat — semua pengguna dapat berkirim pesan dan lampiran
Chat privat — percakapan one-on-one antar pengguna
Mendukung pengiriman lampiran file (max 5MB)


📊 Dashboard & Laporan (Admin)


Statistik buku terpopuler
Statistik siswa paling aktif
Statistik genre terpopuler (pie chart)
Total denda keseluruhan
Export laporan lengkap ke Excel (.xlsx) dan PDF
Laporan peminjaman per buku
Buku terpopuler
Peminjaman per siswa
Genre terpopuler
Siswa paling sering terlambat

🛠️ Teknologi yang Digunakan

KomponenDetail
FrameworkLaravel 12
PHP$\ge 8.2$
DatabaseSQLite (default) / MySQL
ExportMaatwebsite/Laravel-Excel 3.1
PDFbarryvdh/laravel-dompdf 3.1
HTTP ClientGuzzle 7
FrontendBlade Templates + Vite
AuthCustom session-based

📁 Struktur Direktori Utama

📁 app/
│ 📁 Exports/ # Kelas export Excel (laporan)
│ 📁 Http/
│ │ 📁 Controllers/ # BookController, LoanController, dll.
│ │ └── 📁 Middleware/ # CheckLogin, RoleMiddleware, dll.
│ └── 📁 Models/ # Book, Loan, User, Cart, Post, dll.
│
📁 database/
│ └── 📁 migrations/ # Migrasi database
│
📁 resources/
│ └── 📁 views/
│ 📁 admin/ # Halaman dashboard admin
│ 📁 siswa/ # Halaman katalog, histori, cart siswa
│ 📁 komunitas/ # Halaman chat & komunitas
│ 📁 auth/ # Login, register
│ └── 📁 layouts/ # Layout utama (admin & siswa)
│
📁 routes/
└── 📄 web.php # Semua definisi route

⚙️ Instalasi & Setup Prasyarat

PHP >= 8.2
Composer
Node.js & npm
XAMPP / Laragon / server lokal lainnya

Langkah Instalasi

1. Clone repository

Bash

 
git clone https://github.com/LinggaKeandre/Perpustakaan-Lingga
cd perpustakaan-smk

2. Install dependencies PHP

Bash

 
composer install

3. Install dependencies JavaScript

Bash

 
npm install

4. Salin file environment

Bash

 
cp .env.example .env

5. Generate application key

Bash

 
php artisan key:generate

6. Konfigurasi database

Edit file .env sesuai kebutuhan Anda:

Ini, TOML

 
# Untuk SQLite (default, tidak perlu setup tambahan)
DB_CONNECTION=sqlite

# Untuk MySQL
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=perpustakaan_smk
DB_USERNAME=root
DB_PASSWORD=

7. Jalankan migrasi database

Bash

 
php artisan migrate

8. Buat symbolic link storage

Bash

 
php artisan storage:link

9. Build asset frontend

Bash

 
npm run build

10. Jalankan server lokal

Bash

 
php artisan serve

Akses aplikasi di: `http://localhost:8000`

🔧 Konfigurasi Email (Opsional)

Email digunakan untuk fitur OTP 2FA pada login admin. Edit bagian ini di `.env`:
“`env
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your_email@gmail.com
MAIL_PASSWORD=your_app_password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=your_email@gmail.com
MAIL_FROM_NAME=”Perpustakaan SMKN 40 Jakarta”
“`
> Untuk Gmail, gunakan **App Password** (bukan password akun biasa). Aktifkan 2FA di akun Google terlebih dahulu, lalu buat App Password di pengaturan keamanan akun.
—

👥 Akun & Role

Fitur / Otoritas🧑‍💻 Admin👥 Siswa
Kelola Data Buku (CRUD)✅ Ya❌ Tidak
Kelola Kategori Buku (CRUD)✅ Ya❌ Tidak
Proses Pengembalian Buku✅ Ya❌ Tidak
Export Laporan (Excel & PDF)✅ Ya❌ Tidak
Melihat Katalog Buku✅ Ya✅ Ya
Keranjang Pinjam (Cart Buku)✅ Ya✅ Ya
Proses / Ajukan Peminjaman✅ Ya✅ Ya
Melihat Histori / Riwayat✅ Ya (Semua)✅ Ya (Pribadi)
Komunitas / Chat Ruang Obrolan✅ Ya✅ Ya

📌 Route Penting

URLKeterangan
/Halaman utama (welcome)
/loginHalaman login
/registerDaftar sebagai siswa
/booksKatalog buku publik
/admin/dashboardDashboard admin
/siswa/katalogKatalog buku siswa
/siswa/historyRiwayat peminjaman siswa
/siswa/cartKeranjang peminjaman
/chatHalaman chat komunitas
/admin/books/exportExport laporan (Excel/PDF)

 

🗃️ Database

Aplikasi menggunakan SQLite secara default (file `database/database.sqlite`). Untuk produksi, disarankan beralih ke MySQL.
Tabel-tabel utama:
`users` — data pengguna + role + blacklist
`books` — data buku + stok + harga + e-book
`loans` — data peminjaman + denda + perpanjangan
`book_issues` — laporan kerusakan/kehilangan buku
`carts` & `cart_items` — keranjang peminjaman siswa
`posts` — pesan grup komunitas
`private_messages` — pesan pribadi antar pengguna

👨‍💻 Developer

Developed by Lingga Keandre – Full-stack Developer

Portofolio Lingga