{"repo":"tranguyeenn/shelftxt","free":true,"listed":false,"github":"https://github.com/tranguyeenn/shelftxt","clone":"git clone https://github.com/tranguyeenn/shelftxt.git","description":"Open-source FastAPI recommendation engine for books • backend architecture • data handling • scalable systems","language":"Python","stars":15,"topics":["backend","book-recommendation","data-engineering","fastapi","open-source","python","reading-tracker","recommendation-system"],"license":"MIT","category":"data-pipelines","readme_excerpt":"shelftxt Shelftxt is an open-source multi-user recommendation system for organizing and ranking personal TBR libraries. It combines Supabase authentication, PostgreSQL-backed user-owned book storage, and transparent recommendation logic. Live: shelftxt.vercel.app · API docs: shelftxt.onrender.com/docs --- Overview Shelftxt exposes a FastAPI service over a PostgreSQL-backed, authenticated book CRUD API. Supabase handles registration, login, session persistence, and token verification; each book row belongs to one authenticated user through books.user id . A Vite + React UI manages login-protected routes and attaches the current Supabase access token to backend requests. CSV import/export remains available for backups and spreadsheet workflows, but PostgreSQL is the source of truth. The project is maintained in the open: architecture notes, ADRs, and devlogs document how the backend evolves. --- Features - Multi-user shelf management — want-to-read, reading (progress %), read (ratings), DNF, scoped per authenticated user - Supabase authentication — email/password registration, login, persisted browser sessions, logout - TBR ranking — GET /recommend scores the signed-in user's to-read list from their read-history author preferences - Authenticated REST API — OpenAPI at /docs ; Pydantic schemas in backend/schemas/ ; protected routes require Authorization: Bearer - CSV import — bulk add via POST /books/import ; duplicates skipped within the current user's PostgreSQL library - Batc","default_branch":null,"files":null,"tree":[],"storefront":"/r/tranguyeenn","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/tranguyeenn/shelftxt/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}