Simple library cataloging system. No external dependencies: runs on Node.js only.
- Node.js 14+ (no npm packages required)
node server.jsThe application will be available at: http://localhost:3000
On first launch, visit:
http://localhost:3000/manage/setup
and set an administrator password (minimum 10 characters).
The admin panel URL is intentionally non-obvious:
http://localhost:3000/manage/enter
(not /admin, /login, or anything similar)
- Search by title, author, ISBN, publisher, subject, or call number
- View detailed book records
- Manual book entry
- Edit and delete records
- Import MARCXML - automatically processes standard MARC 21 XML files
- Change administrator password
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 |
- 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)
Data is stored in data/db.json. To create a backup, simply copy this file.