A Book-Discovery Interface for School Librarians to Support Inquiry Learning.
From our paper (see the "Citations" section below):
As a way of collaborating with teachers, school librarians select books that are useful for inquiry-based or exploratory learning classes.
(...)
To enable even less experienced school librarians to easily curate appropriate books, we developed a graphical user interface that directly shows the candidate books that are topically relevant to the inquiry-based class' subject, by making use of decimal classification classes assigned to books.
Open https://bookreach.github.io/bookreach-ui-ce/ in the browser.
- Select the prefecture where your school library is located
- Choose the school type, grade, subject, and describe the lesson topic in free text
- The app predicts relevant NDC (Nippon Decimal Classification) codes via the NDL Predictor API
- Click "Fetch books" to search your prefecture's libraries via the Calil Unitrad API
- Browse results by NDC tab, view book details and library holdings
- Select useful books and export the list as CSV, TSV, or print it
This is a single-page Elm application with no backend server. It uses only public APIs:
| API | Purpose |
|---|---|
| Calil Unitrad | Live library book search by NDC code |
| NDL Predictor | Predict NDC codes from free-text keywords |
| openBD | Book cover images |
The app has three stages:
- Prefecture Selection — Choose your prefecture (saved to localStorage)
- NDC Selection — Pick school/subject/grade, enter a topic, and select predicted NDC codes
- Explorer — Browse books, view details, filter, select, and export
Prerequisites:
npm install # Install dependencies (Elm, elm-watch, Sass, etc.)
npm run build-bulma # Compile Bulma SCSS to CSS| Command | Description |
|---|---|
npm start |
Start dev server with hot-reload (port 3000) |
npm run build-bulma |
Compile br-bulma.scss to public/br-bulma.css |
npm test |
Run Elm tests |
npm run format |
Format Elm source files with elm-format |
src/
Main.elm # App entry point (three-stage Explorer)
Api.elm # Types, decoders, HTTP functions
NdcSelect.elm # NDC selection component (free-text → NDL prediction)
BookFilter.elm # Query and library filter
School.elm # School type/subject/grade definitions
Utils.elm # LocalStore, helpers
public/
index.html # HTML shell
custom.js # Unitrad search/polling, mapping, ports
custom.css # Custom styles
data/
prefectures.json # 47 Japanese prefectures
ndc9-lv3.json # NDC level-3 labels
br-bulma.scss # Bulma CSS configuration
- Language: Elm 0.19.1
- CSS Framework: Bulma 1.0.1 (via SCSS)
- Dev Server: elm-watch with hot-reload
- Icons: Font Awesome 6 (CDN)
Please cite the following paper if you use this software.
@INPROCEEDINGS{Yada2021-eo,
title = "{BookReach-UI}: A {Book-Curation} Interface for School
Librarians to Support Inquiry Learning",
booktitle = "Towards Open and Trustworthy Digital Societies",
author = "Yada, Shuntaro and Asaishi, Takuma and Miyata, Rei",
publisher = "Springer International Publishing",
pages = "96--104",
year = 2021
}See also ./CITATION.cff and ./CITATIONS.bib.
MIT (see ./LICENCE)