AutonomousVehicleControlBeginnersGuide
Python sample codes and documents about Autonomous vehicle control algorithm. This project can be used as a technical guide book to study the algorithms and the software architectures for beginners.
Library management system on MongoDB Atlas, Node.js and Express: loans, reservations, fines, reminders, QR scanning, backups and an analytics dashboard
Translation pending
EducationJavaScript · CSSGitHub @likithtech2006-pixelOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Live demo: https://mongodb-library-management-system.vercel.app
A library management web app built with MongoDB, Node.js/Express and a plain HTML/CSS/JavaScript frontend. It has a dashboard, dark/light themes, and an "Index lab" that shows MongoDB's query plans live.
$$NOW in a pipeline update)| Feature | Where to see it |
|---|---|
| CRUD | Books, borrowers and authors can all be created, read, updated and deleted |
| Indexing | Unique, compound, case-insensitive (collation), weighted text and partial unique indexes; the Books page shows explain() output comparing the text index with a full collection scan |
| Aggregation | Dashboard: $facet, $group, $bucket, $dateToString, $lookup, $sort/$limit; pagination uses $facet |
| Text Search | $text over title (weight 10), author (5) and description (1), ranked by textScore |
| Data Validation | $jsonSchema with types, ranges, pattern for ISBN/email, plus $expr rules (availableCopies ≤ totalCopies, dueDate > issuedAt) |
findOneAndUpdate with a filter): two people can't grab the last copy at the same timeauthorId (joined with $lookup) and a copy of the author's name (for text search)$setWindowFields + $documentNumber| Feature | How it works |
|---|---|
| Reservations | When every copy is out, borrowers join a queue. A returned copy is held for the first person (heldCopies) for 3 days and they're notified; uncollected holds pass to the next person automatically |
| Fine payment tracking | Fines are fixed on return; paying records a payments document and marks the loan paid in one transaction. Borrowers owing more than ₹100 can't borrow |
| Email / SMS reminders | A reminder 2 days before the due date, an overdue notice, and "your reservation is ready". Sent by SMTP / Twilio when configured; always recorded in the notifications outbox |
| Barcode / QR scanning | Scan desk on Circulation: scan a library card, then a book's ISBN barcode or QR label. It issues or returns automatically. Works with USB scanners, the camera (Chrome/Edge) or typing |
| Backups | Automatic backup every 24 h (newest 7 kept), "Back up now" and download on the System page, npm run backup / npm run restore |
| Audit log | Every change is logged with who did it, in the same transaction as the change (Activity page) |
| Automated tests | npm test: 15 end-to-end tests against a throwaway database, including a 6-way race for the last copy |
| Collection | Purpose |
|---|---|
books | title, author, authorId, isbn, description, totalCopies, availableCopies, heldCopies, borrowCount |
authors | name (unique, case-insensitive) |
borrowers | name, email (unique), phone, activeLoans |
loans | bookId, borrowerId, issuedAt, dueDate, returned, returnedAt, fine, finePaid, reminder timestamps |
reservations | bookId, borrowerId, status (waiting / ready / fulfilled / cancelled / expired), holdUntil |
payments | loanId (unique), borrowerId, amount, method, paidAt, receivedBy |
notifications | type, channel (email / sms), to, subject, body, status (sent / logged / failed) |
auditLogs | at, action, entity, entityId, summary, actor |
Database name: library_management
Requires Node.js 20.12+ and MongoDB 6+.
npm install
npm run seed # optional sample data (refuses to wipe existing data without --force)
npm start
npm run dev restarts the server automatically when you edit a file.
| Command | What it does |
|---|---|
npm test | Runs the automated tests (needs a local MongoDB; uses its own temporary database) |
npm run backup | Saves every collection to backups/backup-<time>.json |
npm run restore -- backups/<file> --force | Replaces all data with a backup |
Copy .env.example to .env to change the MongoDB URL, database name, port and library rules. It also explains how to turn on real email (any SMTP server, e.g. Gmail with an app password) and SMS (Twilio). Without them, reminders are still recorded in the outbox on the System page.
The app runs on Vercel as a serverless function (server.js exports the Express app; vercel.json sets the Mumbai region and a daily cron).
0.0.0.0/0) in MongoDB Atlas → Network Access, because Vercel's IP addresses change.MONGO_URI (your Atlas connection string) and CRON_SECRET (any random string).vercel deploy --prod, or push to GitHub if the repository is connected.On Vercel, reminders and reservation-hold expiry run once a day through Vercel Cron (/api/cron), and backups are written to temporary storage, so download them straight away from the System page.
Transactions need MongoDB to run as a replica set. A single-node replica set is enough:
This is the beginning of the README. Read the rest at the original. Read the full README ↗