Skip to content

Project 2 for Linear Algebra (Semester 1 25/26), a digital library system with PCA-based image search and LSA-based recommendation system.

License

Notifications You must be signed in to change notification settings

m-akma1/if2123-project-2

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EiPerpus Logo

EiPerpus - Digital Library Web App

Made for IF2123 Linear and Geometric Algebra Project 2

Semester 1 Academic Year 2025/2026

Overview

Eiperpus is a web-based digital library system to read and search books based on cover images, title, and content texts with a recommendation system based on the similarity of the current opened book. This project applied the Linear Algebra Theory to an image-based and text-based information retrieval system.

The application use Python with Cython for core linear algebra operation for performance optimization and FastAPI as the backend. The frontend uses TypeScript React with Vite framework and UI with DaisyUI and Tailwind CSS. All linear algebra related functionality are custom built to improve the perfomance when preprocessing data.

Main Features

  • PCA-based image similarity search for cover-to-cover searching
  • LSA-based text similarity search for keyword/title and content-based search
  • Book recommendation system with latent semantic embeddings
  • Frontend built with React + TypeScript + Vite
  • Backend implemented using FastAPI with custom algebra engines with Cython acceleration

Installation and Requirements

Requirements

Make sure you have the following installed on your system:

If you want to run the project without Docker, you will also need:

Quick Start Development with Docker

git clone https://github.com/IRK-23/algeo2-frontendbackenddeadend.git

cd algeo2-frontendbackenddeadend

docker compose -f docker/docker-compose.yml up --build

Visit http://localhost:3000 for the frontend and http://localhost:8000/docs for the backend Swagger UI. Press Ctrl+C to stop both containers.

Project Structure

.
├── LICENSE
├── README.md
├── data/                      # dataset & preprocessing outputs (not tracked)
│   ├── processed/             # PCA/LSA computed artifacts
│   ├── raw/                   # original dataset from kaggle
│   └── temp/
│
├── docker/                    # containerization setup with Docker
│   ├── backend/Dockerfile
│   ├── frontend/Dockerfile
│   └── docker-compose.yml
│
├── docs/
│   ├── report.pdf             # PDF rendered report
│   └── report.tex             # Original report with LaTeX
│
├── src/
│   ├── backend/
│   │   ├── app/               # backend Python package
│   │   │   ├── api/           # HTTP endpoints
│   │   │   ├── core/          
│   │   │   │   ├── linalg     # Main linear algebra computation
│   │   │   │   │   └── cython # Performance critical code with Cython
│   │   │   │   ├── pca        
│   │   │   │   └── lsa
│   │   │   ├── services/      # dataset loader and caching layer
│   │   │   ├── utils/
│   │   │   ├── config.py
│   │   │   ├── dependencies.py
│   │   │   └── main.py        # FastAPI entrypoint
│   │   ├── pyproject.toml
│   │   └── requirements.txt
│   │
│   └── frontend/              # React + TSX frontend app
│       ├── src/pages/         # Home, Image Search, Detail, Book pages, etc.
│       ├── src/components/    # UI elements
│       ├── public/
│       ├── vite.config.ts
│       └── package.json
│
└── test/                      # testing 
    ├── backend/
    └── frontend/

Contributors

K02 – FrontEndBackEndDeadEnd

IF2123 Linear and Geometric Algebra
Semester 1 Academic Year 2025/2026

Bandung Institute of Technology

Name NIM GitHub
Mahmudia Kimdaro Amin 13524083 @testbored
Moreno Syawali Ganda Sugita 13524096 @DeSince29
Muhammad Akmal 13524099 @m-akma1

License

This project is licensed under MIT LICENSE.

About

Project 2 for Linear Algebra (Semester 1 25/26), a digital library system with PCA-based image search and LSA-based recommendation system.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 51.6%
  • TypeScript 32.5%
  • Cython 13.6%
  • Dockerfile 0.8%
  • JavaScript 0.8%
  • CSS 0.5%
  • HTML 0.2%