Sistem Temu Balik Informasi Perpustakaan Digital Berbasis Aljabar Linier
VeloLib adalah aplikasi web perpustakaan digital yang menerapkan konsep Aljabar Linier dan Geometri (Singular Value Decomposition) untuk fitur pencarian gambar dan rekomendasi buku. Proyek ini dibuat untuk memenuhi Tugas Besar 2 IF2123 Aljabar Linier dan Geometri 2025/2026.
Mencari buku berdasarkan judul menggunakan algoritma Substring Matching yang cepat dan case-insensitive.
Mengunggah gambar sampul buku untuk mencari buku yang memiliki kemiripan visual.
- Metode: Principal Component Analysis (PCA).
- Algoritma: Reduksi dimensi warna menggunakan SVD manual dan pengukuran kemiripan menggunakan Euclidean Distance.
Fitur pada halaman detail buku yang merekomendasikan buku lain berdasarkan kemiripan konten/isi cerita.
- Metode: Latent Semantic Analysis (LSA).
- Algoritma: TF-IDF (dengan pruning & smart filtering) + SVD manual + Cosine Similarity.
- Bahasa: Python 3.9
- Framework: Flask
- Library Matematika: NumPy (Hanya untuk struktur array & operasi dasar).
- Library Citra: OpenCV (Hanya untuk membaca & grayscale).
- Keterangan: Seluruh perhitungan Eigenvalue, Eigenvector, dan SVD diimplementasikan dari nol (scratch) menggunakan metode Power Iteration dan Deflation.
- Framework: React (Vite)
- Bahasa: TypeScript
- Styling: CSS Modern (Glassmorphism & Responsive Design)
- Containerization: Docker & Docker Compose
Pastikan Anda telah mengunduh dataset dan menyimpannya dalam struktur berikut di root directory: /data /covers (Berisi file .jpg) /txt (Berisi file .txt) mapper.json
Ini adalah cara termudah dan tercepat. Pastikan Docker Desktop sudah berjalan.
- Clone repositori ini.
- Buka terminal di root folder.
- Jalankan perintah:
docker compose up --build
- Tunggu proses build dan warming up backend (sekitar 1-2 menit untuk perhitungan SVD awal).
- Buka browser dan akses: http://localhost:5173
1. Setup Backend:
cd src/backend
python -m venv venv
# Windows:
venv\Scripts\activate
# Mac/Linux:
source venv/bin/activate
pip install -r requirements.txt
python app.py2. Setup Frontend: Buka terminal baru.
cd src/frontend
npm install
npm run devalgeo2-velociraptor/ ├── data/ # Dataset (Dihiraukan oleh git) ├── src/ │ ├── backend/ │ │ ├── modules/ # Implementasi Matematika (SVD, TF-IDF) │ │ ├── utils/ # Pembaca File (Image/Text Reader) │ │ ├── app.py # Server Flask utama │ │ └── Dockerfile │ └── frontend/ │ ├── src/ │ │ ├── components/ # Komponen UI (Navbar, Card) │ │ ├── pages/ # Halaman (Home, Detail) │ │ └── services/ # Koneksi API │ └── Dockerfile ├── docker-compose.yml # Orkestrator Docker └── README.md
Dibuat untuk memenuhi Tugas Besar Aljabar Linier dan Geometri (IF2123).
Fabian Radenta Bangun 13522105 Ahmad Wafi Idzharulhaqq 13523131 Daffa Muttaqin Tetaputra 13524108