Grade 7–8 · Self-hosted · MIT

A classroom library students can run.

A welcoming library website for a real classroom: students browse, check out, return, renew, and hold books themselves. Teachers get the tools to manage the shelves, accounts, and reading life behind it.

  • Node.js
  • HTML · CSS · JavaScript
  • Self-hosted
  • Offline-friendly
Classroom Library home screen with a welcoming message, catalog navigation, and live library statistics
Classroom Library · Home screen
One shared libraryBooks and loans stay in the server’s data file
Student self-serviceRoutine checkout without a librarian
Built for the roomReadable, responsive, and accessible

A real library, scaled to a classroom

A little more time for reading.

The site keeps common library tasks clear for students, while giving the teacher sensible controls for books, loans, holds, accounts, and groups.

Browse a real catalog

Search and filter books by title, author, genre, type, and availability. Book details can show covers, descriptions, reviews, and ratings.

Check out with a scan

Read EAN-13 barcodes with a camera, type the number, or use a USB scanner. A walk-up kiosk supports quick check-in and checkout without a student login.

Fair holds and loan rules

When copies are out, students join a queue and the first person gets first claim on a return. Loan lengths can vary by book type and popularity.

Keep a reading record

Students can log pages and minutes, build reading streaks, write reviews, and take part in book clubs or teacher-assigned reading groups.

Teacher controls

Manage books, students, loans, hold queues, requests, reading groups, replacement values, and reminders from the admin console.

Works across devices

A small Node server provides one shared library for classroom devices. The app is responsive and installable, with a browser-local fallback for offline use.

Installation & Setup

Get Classroom Library running.

Start it locally on your laptop, or run it on a classroom server with zero build steps or external dependencies.

Installation Steps

  1. 1. Clone the repository

    git clone https://github.com/mob5824m-wq/classroomlib.git && cd classroomlib
  2. 2. Start the Node server

    node server.js
    Requires Node.js 16+. No external npm packages or database install needed.

How to Use

  1. 1. Open the library in your browser

    http://localhost:8080
    For classroom tablets or Chromebooks, use http://<lan-ip>:8080.
  2. 2. Configure teacher settings

    Sign in as admin (admin / admin123) to configure your room number, add books, set loan lengths, and manage student accounts.

  3. 3. Student Kiosk & Barcode Checkout

    Navigate to /kiosk for a walk-up station where students scan EAN-13 barcodes using webcam, USB scanner, or manual code entry.

From a laptop to the classroom

Your shelves. Your server.

Run the app on a computer you control. Devices on your network use the same library data, and a secure HTTPS setup can make it reachable from school.

01 / START

Run the Node server

Install Node.js and start the included server. No build step or separate database server is required.

02 / SET UP

Configure the library

Use the teacher console to set up books, students, loan rules, groups, and the classroom’s own home-page details.

03 / SHARE

Let students get reading

Open the library on classroom devices, and use HTTPS when enabling camera barcode scanning from another network.

Self-hosted classroom data

The server stores the shared catalog, loans, student accounts, and reading activity in its local data file. The instance operator is responsible for access, backups, and retention; book cover and description lookups can use Open Library.

Read the setup guide