AutonomousVehicleControlBeginnersGuide
关于自动驾驶车辆控制算法的 Python 示例代码与文档。本项目可作为技术指南书,供初学者学习这些算法与软件架构。
AI 翻译
尚未检测到更新。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 ↗