Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simple library cataloging system. No external dependencies: runs on Node.js only.

Requirements

  • Node.js 14+ (no npm packages required)

Running the Application

node server.js

The application will be available at: http://localhost:3000

Initial Setup

On first launch, visit:

http://localhost:3000/manage/setup

and set an administrator password (minimum 10 characters).

Accessing the Admin Panel

The admin panel URL is intentionally non-obvious:

http://localhost:3000/manage/enter

(not /admin, /login, or anything similar)

Features

Public Interface

  • Search by title, author, ISBN, publisher, subject, or call number
  • View detailed book records

Admin Panel

  • Manual book entry
  • Edit and delete records
  • Import MARCXML - automatically processes standard MARC 21 XML files
  • Change administrator password

MARCXML import

Supported MARC 21 fields:

MARC tag Field
100/700 $a Author
245 $a$b Title
260/264 $a$b$c Place, Publisher, Year
020 $a ISBN
082/050/080 $a Call Number (DDC/LCC/UDC)
650 $a Subject Headings
300 Physical Description (pages)
490 $a Series
041 $a Language
500/520 $a Notes

Security

  • Passwords are stored using PBKDF2 hashing (310,000 iterations, SHA-256)
  • Session cookies: HttpOnly, SameSite=Strict, 2-hour expiration
  • Rate limiting: 5 login attempts per 15 minutes per IP address
  • Non-standard admin panel URL
  • All user input is escaped (XSS protection)

Database

Data is stored in data/db.json. To create a backup, simply copy this file.