{"id":29121383,"url":"https://github.com/learnwithsuryaa/siperpus","last_synced_at":"2025-08-08T18:31:55.158Z","repository":{"id":300614985,"uuid":"1006643449","full_name":"LearnWithSuryaa/siperpus","owner":"LearnWithSuryaa","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-25T09:10:09.000Z","size":35447,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-30T21:24:33.771Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LearnWithSuryaa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-22T17:53:34.000Z","updated_at":"2025-06-25T09:10:12.000Z","dependencies_parsed_at":"2025-06-22T18:48:00.408Z","dependency_job_id":null,"html_url":"https://github.com/LearnWithSuryaa/siperpus","commit_stats":null,"previous_names":["learnwithsuryaa/siperpus"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/LearnWithSuryaa/siperpus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LearnWithSuryaa%2Fsiperpus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LearnWithSuryaa%2Fsiperpus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LearnWithSuryaa%2Fsiperpus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LearnWithSuryaa%2Fsiperpus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LearnWithSuryaa","download_url":"https://codeload.github.com/LearnWithSuryaa/siperpus/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LearnWithSuryaa%2Fsiperpus/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269470098,"owners_count":24422454,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-08T02:00:09.200Z","response_time":72,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-29T16:05:45.167Z","updated_at":"2025-08-08T18:31:54.874Z","avatar_url":"https://github.com/LearnWithSuryaa.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sistem Informasi Perpustakaan (Desktop)\n\n![Java Version](https://img.shields.io/badge/Java-17%2B-blue)\n![JavaFX Version](https://img.shields.io/badge/JavaFX-21-orange)\n![Maven Build](https://img.shields.io/badge/Build-Maven-red)\n\n## Deskripsi Proyek\n\nAplikasi ini adalah sistem manajemen perpustakaan (Library Management System/LMS) berbasis desktop yang dibangun menggunakan Java dan JavaFX. Sistem ini dirancang untuk mendukung operasi harian perpustakaan seperti manajemen koleksi buku, data anggota, dan transaksi peminjaman/pengembalian, serta menyediakan antarmuka khusus untuk peran Admin dan Mahasiswa.\n\n![Screenshot Aplikasi](src/main/resources/images/preview.png)\n\n## Tujuan Proyek\n\n- Meningkatkan efisiensi pengelolaan perpustakaan dengan sistem digital.\n- Memberikan pengalaman pengguna yang intuitif dan informatif.\n- Menyediakan visualisasi data dan fitur pelaporan untuk pengambilan keputusan.\n\n---\n\n## Fitur Utama\n\n### Untuk Admin\n\n- **Dashboard \"Pusat Komando\"**: Ringkasan aktivitas terbaru \u0026 status keterlambatan buku secara _real-time_.\n- **Manajemen Buku**: CRUD lengkap untuk katalog buku dalam format \"Rak Buku Virtual\".\n- **Manajemen Anggota**: CRUD lengkap dengan pencarian real-time dan visualisasi berdasarkan gender.\n- **Proses Pengembalian**: Menampilkan denda secara otomatis dalam panel kontekstual.\n- **Laporan \u0026 Analisis**: \"Activity Feed\" dengan filter tanggal, tipe transaksi, dan pencarian teks.\n\n### Untuk Mahasiswa\n\n- **Login Otomatis Berdasarkan Peran**.\n- **Dashboard Pribadi**: Menampilkan buku yang sedang dipinjam dan rekomendasi populer.\n- **Katalog Buku Interaktif**: Fitur pencarian, sortir, dan filter.\n- **Proses Peminjaman Dinamis**: Pilih durasi, lihat estimasi jatuh tempo secara langsung.\n- **Manajemen Profil**: Edit informasi kontak \u0026 PIN.\n- **Validasi Pinjaman Otomatis**: Sistem mencegah peminjaman jika batas maksimal tercapai.\n\n---\n\n## Tumpukan Teknologi\n\n| Kategori           | Teknologi                   |\n| ------------------ | --------------------------- |\n| Bahasa Pemrograman | Java 17+                    |\n| Framework UI       | JavaFX 21                   |\n| Build \u0026 Dependensi | Apache Maven                |\n| Penyimpanan Data   | File `.csv` melalui OpenCSV |\n| Ikonografi         | FontAwesomeFX               |\n\n---\n\n## Struktur Proyek\n\n```\n📁 NAMA_PROYEK/\n├── data/                     # File CSV (books, members, transactions)\n├── src/\n│   └── main/\n│       ├── java/\n│       │   └── com/perpustakaan/\n│       │       ├── controller/     # Logika kontrol halaman\n│       │       ├── dao/            # Data Access Object (interaksi file CSV)\n│       │       ├── model/          # POJO (Book, Member, dll)\n│       │       └── App.java        # Entry point aplikasi\n│       └── resources/\n│           ├── com/perpustakaan/view/\n│           │   ├── *.fxml          # Tampilan UI\n│           │   ├── base.css\n│           │   ├── theme-login.css\n│           │   └── theme-dashboard.css\n│           ├── fonts/\n│           └── images/\n└── pom.xml\n```\n\n### `data/`\n\nBerisi:\n\n- `books.csv`: database koleksi buku\n- `members.csv`: database data mahasiswa/anggota\n- `transactions.csv`: riwayat transaksi peminjaman \u0026 pengembalian\n\nFormat `.csv` ini digunakan sebagai alternatif ringan pengganti database relasional. Operasi baca-tulis dilakukan via **OpenCSV**.\n\n---\n\n### `src/main/java/com/perpustakaan/`\n\n#### `controller/`\n\nBerisi kelas-kelas _controller_ JavaFX (annotasi `@FXML`) yang mengatur interaksi antara antarmuka pengguna (FXML) dan logika program. Contoh:\n\n- `LoginController.java`\n- `BukuSayaController.java`\n- `BerandaMemberController.java`\n\n#### `dao/`\n\nBerisi _Data Access Object_, yaitu kelas-kelas yang menangani akses ke data `.csv`:\n\n- `BookDAO.java`\n- `MemberDAO.java`\n- `TransactionDAO.java`\n\nMasing-masing DAO bertanggung jawab atas:\n\n- Membaca dan menulis data\n- Melakukan pencarian, filter, dan modifikasi\n\n#### `model/`\n\nBerisi _Plain Old Java Objects (POJO)_ yang mewakili entitas data:\n\n- `Book.java`: Properti seperti `id`, `judul`, `penulis`, `status`\n- `Member.java`: Properti seperti `nim`, `nama`, `jenisKelamin`, dll\n- `Transaction.java`: Properti seperti `id`, `nim`, `isbn`, `tanggalPinjam`, `tanggalKembali`\n\nDigunakan sebagai struktur data internal aplikasi.\n\n#### `App.java`\n\nMerupakan **entry point** utama aplikasi. Menjalankan JavaFX Application dan memuat halaman login:\n\n```java\npublic class App extends Application {\n    @Override\n    public void start(Stage primaryStage) throws IOException {\n        Parent root = FXMLLoader.load(getClass().getResource(\"/com/perpustakaan/view/LoginView.fxml\"));\n        ...\n    }\n}\n```\n\n---\n\n### `src/main/resources/com/perpustakaan/view/`\n\n#### `*.fxml`\n\nBerisi **desain antarmuka UI** menggunakan FXML (XML untuk JavaFX). Setiap halaman memiliki file FXML masing-masing:\n\n- `LoginView.fxml`\n- `BerandaMemberView.fxml`\n- `BukuSayaView.fxml`\n- `ProfilView.fxml`\n- `PengembalianView.fxml`\n\nFXML ini dikaitkan langsung dengan controller yang sesuai.\n\n#### CSS\n\n- `base.css`: gaya umum aplikasi\n- `theme-login.css`: gaya khusus halaman login\n- `theme-dashboard.css`: tema visual dashboard admin dan mahasiswa\n\nJavaFX mendukung pengaturan gaya layaknya CSS di web.\n\n---\n\n### `fonts/`\n\n- Berisi file `.ttf` seperti `PressStart2P-Regular.ttf`\n- Font ini digunakan secara eksplisit di UI untuk memberikan nuansa visual yang unik dan retro-modern.\n\n---\n\n### `images/`\n\n- Berisi ikon UI (format `.png`) yang digunakan di berbagai halaman aplikasi\n- Contoh: ikon buku, pengguna, pinjaman, kembali, dll\n\n---\n\n### `pom.xml`\n\nFile konfigurasi **Apache Maven**, yang mendeklarasikan:\n\n- Versi Java\n- Plugin JavaFX\n- Dependency seperti:\n\n  - `com.opencsv:opencsv`\n  - `de.jensd:fontawesomefx`\n\n- Plugin untuk menjalankan aplikasi (`javafx-maven-plugin`)\n\nContoh bagian penting:\n\n```xml\n\u003cproperties\u003e\n    \u003cproject.build.sourceEncoding\u003eUTF-8\u003c/project.build.sourceEncoding\u003e\n    \u003cmaven.compiler.source\u003e24\u003c/maven.compiler.source\u003e\n    \u003cmaven.compiler.target\u003e24\u003c/maven.compiler.target\u003e\n    \u003cjavafx.version\u003e21\u003c/javafx.version\u003e\n    \u003cjavafx.maven.plugin.version\u003e0.0.8\u003c/javafx.maven.plugin.version\u003e\n    \u003cexec.mainClass\u003ecom.perpustakaan.App\u003c/exec.mainClass\u003e\n\u003c/properties\u003e\n```\n\n---\n\n## Instalasi \u0026 Penyiapan\n\nTentu! Berikut adalah penjabaran ulang bagian **Instalasi \u0026 Penyiapan** yang lebih teknis dan lengkap, termasuk petunjuk menginstal Apache Maven:\n\n---\n\n## Instalasi \u0026 Penyiapan\n\n### 1. **Pastikan Prasyarat Sudah Terinstal**\n\n#### Java JDK 17 atau lebih baru\n\n- **Cek versi Java:**\n\n  ```bash\n  java -version\n  ```\n\n  Output yang diharapkan:\n\n  ```\n  java version \"17.0.x\"\n  ```\n\n- Jika belum ada, unduh dan instal dari [https://jdk.java.net/17/](https://jdk.java.net/17/) atau gunakan SDK Manager seperti [SDKMAN](https://sdkman.io/).\n\n#### Apache Maven\n\nApache Maven digunakan untuk membangun proyek dan menjalankan aplikasi JavaFX.\n\n##### Cara Instal Maven:\n\n- **Linux/macOS (dengan Homebrew atau SDKMAN):**\n\n  ```bash\n  brew install maven        # Jika menggunakan Homebrew\n  sdk install maven         # Jika menggunakan SDKMAN\n  ```\n\n- **Windows:**\n\n  1. Unduh dari: [https://maven.apache.org/download.cgi](https://maven.apache.org/download.cgi)\n  2. Ekstrak ke direktori, misalnya: `C:\\Program Files\\Apache\\Maven`\n  3. Tambahkan variabel lingkungan:\n\n     - `MAVEN_HOME`: arahkan ke folder Maven\n     - Tambahkan `%MAVEN_HOME%\\bin` ke `PATH`\n\n- **Verifikasi Instalasi:**\n\n  ```bash\n  mvn -v\n  ```\n\n  Output yang diharapkan:\n\n  ```\n  Apache Maven 3.x.x\n  Java version: 17\n  ```\n\n---\n\n### 2. **Buat Folder dan File Data**\n\nDi direktori root proyek (`perpus/`), buat folder dan file berikut:\n\n```bash\nmkdir data\ntouch data/books.csv data/members.csv data/transactions.csv\n```\n\nIsi setiap file minimal dengan **baris header** sesuai struktur:\n\n**Contoh `books.csv`:**\n\n```\nid,judul,penulis,tahun,kategori,status\n```\n\n**Contoh `members.csv`:**\n\n```\nnim,nama,jenisKelamin,email,alamat,noTelepon,pin\n```\n\n**Contoh `transactions.csv`:**\n\n```\nid,nim,isbn,tanggalPinjam,tanggalKembali,status,denda\n```\n\n---\n\n### 3. **Instalasi Dependensi**\n\nJalankan perintah berikut di terminal (pastikan di dalam folder proyek):\n\n```bash\nmvn clean install\n```\n\nPerintah ini akan:\n\n- Mengunduh semua _dependency_ (OpenCSV, FontAwesomeFX, JavaFX)\n- Melakukan kompilasi awal kode\n\n---\n\n## Cara Menjalankan Aplikasi\n\nJalankan perintah berikut di terminal:\n\n```bash\nmvn javafx:run\n```\n\nAplikasi akan terbuka di halaman login dan secara otomatis menyesuaikan antarmuka berdasarkan peran pengguna.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flearnwithsuryaa%2Fsiperpus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flearnwithsuryaa%2Fsiperpus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flearnwithsuryaa%2Fsiperpus/lists"}