Spaces:
Sleeping
Sleeping
| # Architecture | |
| This document describes the current system shape. Keep it factual and short enough that future contributors will actually read it. | |
| ## Purpose | |
| Bookscope turns messy shelf photos into a searchable used-book inventory. The hackathon MVP focuses on a fast end-to-end loop for used bookstores and home shelf scans: image in, candidate book rows out, public metadata enrichment after review. | |
| ## Current System | |
| The repository contains a Gradio application intended for deployment as a Hugging Face Space. The current runtime supports demo-mode scan rows, a Hugging Face vision-model provider hook, and Open Library metadata enrichment. | |
| ## Components | |
| | Component | Responsibility | Notes | | |
| | --- | --- | --- | | |
| | `app.py` | Gradio UI and event wiring | Hugging Face Space entrypoint | | |
| | `bookscope.py` | Scan normalization, model-provider call, JSON parsing, metadata enrichment | Keeps UI thin and provider-swappable | | |
| | Hugging Face vision provider | Extracts visible book spines from images | Defaults to `openbmb/MiniCPM-V-4.6-Demo`; set `BOOKSCOPE_DEMO_MODE=true` for offline sample rows | | |
| | Open Library | Enriches candidate rows with ISBN, author, year, publisher, subjects, and links | Public HTTP lookup | | |
| | Documentation baseline | Records setup, architecture, contribution, and security expectations | Present | | |
| | Tests | Automated verification | Not added yet | | |
| ## Data Flow | |
| ```text | |
| Shelf image | |
| -> Gradio image input | |
| -> Hugging Face vision provider or demo records | |
| -> normalized editable scan table | |
| -> Open Library search enrichment | |
| -> enriched inventory table | |
| ``` | |
| ## Boundaries | |
| - External services: optional Hugging Face inference provider and Open Library search API. | |
| - Databases: none defined yet. | |
| - File system: repository files only; uploaded images are not persisted by the app. Temporary JPEGs are created for external Space calls and deleted after each request. | |
| - Network calls: vision inference and metadata enrichment. | |
| - User input: shelf images and editable table rows in the Gradio session. | |
| ## Runtime And Deployment | |
| Runtime is Python with Gradio. Deployment target is a Hugging Face Space with `app.py` as the entrypoint. | |
| ## Important Decisions | |
| Record durable decisions in `docs/adr/`. Link the most relevant ADRs here. | |
| - `docs/adr/0001-record-project-baseline.md` | |
| - `docs/adr/0002-adopt-gradio-space-mvp.md` | |
| ## Known Risks | |
| - Exact hosted MiniCPM-V endpoint/provider configuration still needs verification. | |
| - Video support is not implemented yet; the near-term path is frame sampling that reuses the image pipeline. | |
| - Open Library enrichment depends on public search quality and network availability. | |
| ## Update Rule | |
| Update this file when the system shape, major boundaries, or deployment model changes. | |