Pengumpulan EAS Pemrograman Perangkat Bergerak G

📚 PerpustakaanKu

Aplikasi Manajemen Perpustakaan Modern dengan Android & Jetpack Compose

👥 Tim Pengembang

👨‍💻 Muhammad Rayyaan Fatikhahur Rakhim

NRP: 5025221047

👨‍💻 Moch. Avin

NRP: 5025221061

👨‍💻 Abiyu Ramadhan Kiesly

NRP: 5025221123

🎓 Final Project PPB - Pemrograman Perangkat Bergerak
Institut Teknologi Sepuluh Nopember (ITS) - 2025

📎 Resource Links

Akses dokumentasi lengkap, presentasi, dan demo aplikasi melalui link berikut:

📊
Presentasi PPT
🎥
Demo Video
💻
Source Code
📱
Download APK
📝
Laporan Project

📝 Catatan: silahkan klik pada card terkait

🎯 Overview Aplikasi

PerpustakaanKu adalah aplikasi manajemen perpustakaan modern yang dibangun menggunakan teknologi Android terbaru. Aplikasi ini dirancang untuk memudahkan pengelolaan koleksi buku, sistem peminjaman, dan tracking inventory dengan antarmuka yang intuitif dan performa yang optimal.

💡 Visi: Menghadirkan solusi digital yang komprehensif untuk manajemen perpustakaan personal maupun institusi dengan pengalaman pengguna yang modern dan efisien.
100%
Kotlin
15+
Screens
MVVM
Architecture
Material 3
Design

⭐ Fitur Utama

🔐 Sistem Autentikasi

Login dan registrasi pengguna dengan enkripsi password menggunakan SHA-256. Sistem session management dengan SharedPreferences.

📖 Manajemen Buku

CRUD lengkap untuk koleksi buku dengan metadata seperti ISBN, genre, tahun terbit, kondisi, dan lokasi penyimpanan.

📋 Sistem Peminjaman

Track peminjaman dan pengembalian buku dengan riwayat lengkap, tanggal, dan catatan khusus.

🔍 Pencarian & Filter

Pencarian real-time berdasarkan judul atau penulis, dengan filter status ketersediaan buku.

📊 Dashboard Statistik

Visualisasi data koleksi dengan jumlah total buku, buku tersedia, dan buku yang sedang dipinjam.

🎨 Modern UI/UX

Antarmuka modern dengan Material Design 3, animasi smooth, dan responsive design.

🛠️ Tech Stack

Frontend & UI

  • Jetpack Compose
    Modern UI toolkit untuk membangun native Android UI dengan declarative approach
  • Material Design 3
    Latest design system Google dengan dynamic theming dan modern components
  • Navigation Compose
    Type-safe navigation dengan argument passing antar screens
  • Custom Font (Poppins)
    Typography modern dengan berbagai font weights untuk enhanced readability

Backend & Data

  • Room Database
    SQLite abstraction layer dengan compile-time query verification
  • Kotlin Coroutines
    Asynchronous programming untuk operasi database dan network
  • StateFlow & Flow
    Reactive data streams untuk real-time UI updates
  • Repository Pattern
    Abstraction layer untuk data access dengan single source of truth

🏗️ Arsitektur Aplikasi

Aplikasi menggunakan Clean Architecture dengan MVVM pattern untuk memastikan kode yang scalable, testable, dan maintainable.

Lapisan Arsitektur

🎨 UI Layer (Presentation)

Screens, ViewModels, Composables
LoginScreen, BookListScreen, AddEditBookScreen, BookDetailScreen, BorrowBookScreen

🔄 Domain Layer

Repository, Use Cases, Models
Business logic dan data abstraction layer

💾 Data Layer

Database, DAOs, Data Sources
Room Database dengan DAO implementations

💾 Database Schema

Aplikasi menggunakan Room Database dengan 3 tabel utama:

1. Books Table

@Entity(tableName = "books") data class Book( @PrimaryKey(autoGenerate = true) val id: Long = 0, // Basic info val title: String, val author: String, val isbn: String = "", val genre: String = "", // Publication details val language: String = "Indonesian", val yearPublished: Int? = null, // Physical details val condition: String = "Good", val location: String = "", // Status tracking val status: BookStatus = BookStatus.AVAILABLE, val createdAt: Long = System.currentTimeMillis() )

2. Borrowing History Table

@Entity( tableName = "borrowing_history", foreignKeys = [ ForeignKey( entity = Book::class, parentColumns = ["id"], childColumns = ["bookId"], onDelete = ForeignKey.CASCADE ) ] ) data class BorrowingRecord( @PrimaryKey(autoGenerate = true) val id: Long = 0, val bookId: Long, val borrowerName: String, val borrowedDate: Long, val returnedDate: Long? = null, val notes: String = "" )

3. Users Table

@Entity(tableName = "users") data class User( @PrimaryKey(autoGenerate = true) val id: Long = 0, val username: String, val email: String, val passwordHash: String, // SHA-256 hashed val createdAt: Long = System.currentTimeMillis() )

🔒 Keamanan

Password Security

// SHA-256 Password Hashing private fun hashPassword(password: String): String { val digest = MessageDigest.getInstance("SHA-256") val hashBytes = digest.digest(password.toByteArray()) return hashBytes.joinToString("") { "%02x".format(it) } }

Fitur Keamanan

  • SharedPreferences Encryption: Secure storage untuk user session
  • Auto Logout: Session timeout untuk enhanced security
  • Input Validation: Comprehensive validation untuk semua user inputs
  • SQL Injection Protection: Room ORM provides automatic protection
  • Local Database Security: Android security sandbox
  • Password Policy: Minimum 6 characters enforcement

📱 Screenshots

📱 Login Screen

Modern authentication dengan gradient
design


📚 Book List

Dashboard utama dengan search & filter













➕ Add Book

Form input yang user-friendly

📖 Book Detail

Detail lengkap dengan borrowing history





📋 Borrow Book

Sistem peminjaman dengan tracking

📊 Denda

Manajemen keuangan perpustakaan dan denda peminjam



🚀 Pengembangan Selanjutnya

Features Roadmap

☁️ Cloud Sync

Sinkronisasi data dengan Firebase untuk multi-device access

📸 Barcode Scanner

Integration dengan CameraX untuk scan ISBN barcode

📊 Advanced Analytics

Charts dan reporting dengan popular book analysis

🔔 Push Notifications

Reminder untuk return dates dan overdue notifications

Technical Improvements

  • Testing: Unit tests, UI tests, dan integration tests
  • CI/CD: GitHub Actions untuk automated testing & deployment
  • Performance: Database pagination dan image caching
  • Accessibility: Full accessibility support untuk users dengan disabilities
  • Localization: Multi-language support
  • Offline-first: Enhanced offline capabilities dengan sync

🚀 Pengembangan Selanjutnya

Features Roadmap

☁️ Cloud Sync

Sinkronisasi data dengan Firebase untuk multi-device access

📸 Barcode Scanner

Integration dengan CameraX untuk scan ISBN barcode

📊 Advanced Analytics

Charts dan reporting dengan popular book analysis

🔔 Push Notifications

Reminder untuk return dates dan overdue notifications

Technical Improvements

  • Testing: Unit tests, UI tests, dan integration tests
  • CI/CD: GitHub Actions untuk automated testing & deployment
  • Performance: Database pagination dan image caching
  • Accessibility: Full accessibility support untuk users dengan disabilities
  • Localization: Multi-language support
  • Offline-first: Enhanced offline capabilities dengan sync


Comments