AutonomousVehicleControlBeginnersGuide
자율주행 차량 제어 알고리즘 샘플 코드와 문서로, 초보자가 알고리즘과 소프트웨어 구조를 공부할 수 있는 기술 가이드
MongoDB Atlas·Node.js·Express 기반 도서 관리 시스템으로 대출·예약·연체료·알림·QR 스캔·백업·분석 대시보드 제공
Library management system on MongoDB Atlas, Node.js and Express: loans, reservations, fines, reminders, QR scanning, backups and an analytics dashboard
교육JavaScript · CSSGitHub @likithtech2006-pixel온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
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:
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗