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.
- 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
Make sure you have the following installed on your system:
- Git: Install Git
- Docker Desktop: Install Docker Desktop
If you want to run the project without Docker, you will also need:
- Python 3.11+: Install Python
- Node.js 20+: Install Node.js
git clone https://github.com/IRK-23/algeo2-frontendbackenddeadend.git
cd algeo2-frontendbackenddeadend
docker compose -f docker/docker-compose.yml up --buildVisit http://localhost:3000 for the frontend and http://localhost:8000/docs for the backend Swagger UI. Press Ctrl+C to stop both containers.
.
├── 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/
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 |
This project is licensed under MIT LICENSE.
