Grade 7–8 · Self-hosted · Open source · MIT

Matching students with books they will love.

A personalized book recommendation engine built for real classrooms. Students sign in with private unique codes, take an intuitive preferences quiz, and receive personalized recommendations drawn from classroom shelves and live Open Library titles.

  • Node.js
  • Vanilla JS
  • Open Library API
  • PWA Offline
Student code login
Code: READ-7X2K (no names or emails)
—— Recommended for You ——
🏫 From Class Shelves: Percy Jackson & The Olympians ⭐
🌎 Live from Open Library: A Wizard of Earthsea
Classroom Book Recs · Dual recommendations
Anonymous Code LoginStudents log in with unique codes like READ-7X2K
Two Recommendation ListsClassroom shelf inventory + live Open Library discoveries
Zero Setup OverheadPlain HTML/JS running on a lightweight dependency-free Node server

Engaging Young Readers

Designed for students, controlled by teachers.

Help every student find their next favorite book without privacy concerns or complicated account setups.

Reading Preferences Quiz

Quick student questionnaire covering favorite genres, preferred reading level, mood, themes, and ideal book length.

Curated Teacher Picks

Teachers can star favorite classroom titles (⭐) to give them a bonus recommendation weight in student matches.

Live Open Library Ideas

Fetches relevant titles live from Open Library matching the student's tastes, with a "New ideas" button for fresh discoveries.

Classroom Privacy

No student names or emails required. Admin passwords are scrypt-hashed, and student codes are AES-256-GCM encrypted at rest.

Installation & Setup

Run Classroom Book Recs.

Start the server on your computer, laptop, or Raspberry Pi in seconds.

Installation Steps

  1. 1. Clone the repository

    git clone https://github.com/mob5824m-wq/Classroom-book-recs.git && cd Classroom-book-recs
  2. 2. Start Node server

    node server.js
    Requires Node.js 16+. Zero dependencies or external database required.

How to Use

  1. 1. Open application

    http://localhost:8080
    For classroom devices, use the LAN IP printed in terminal (e.g. http://192.168.1.50:8080).
  2. 2. Teacher setup & student codes

    Sign in as teacher (admin / admin123) to add books, mark Teacher Picks, and generate student codes (like READ-7X2K).

  3. 3. Student questionnaire

    Students enter their code, complete the preference quiz, and immediately explore matched books from shelves and online.

Deployment Options

Host solo or dual-host with Classroom Library.

Easily run Book Recs side-by-side with Classroom Library on one single Raspberry Pi.

01 / LAN

LAN Auto-Discovery

The server auto-detects your network adapter and shares the exact classroom URL in terminal and bookrecs-url.txt.

02 / PI

Dual-Host on Pi

Run Book Recs (:8080) and Classroom Library (:8081) on one Pi with dual DuckDNS domains.

03 / PWA

Installable PWA

Service workers enable offline catalog browsing on student tablets and classroom Chromebooks.