UNPKG

booking-management

Version:

A lightweight Node.js SDK for handling time-slot bookings.

97 lines (68 loc) 2.74 kB
# Booking Management 📅 A lightweight Node.js SDK for handling time-slot bookings with: - ✅ Day off configuration - ✅ Prevention of double bookings - ✅ Configurable time slots (15 min, 30 min, 1 hour) - ✅ Admin pagination to fetch all bookings and fetch bookings by date - ✅ Simple and pluggable with MongoDB --- ## 📦 Installation ```bash npm install booking-management mongoose ``` --- ## 🛠️ Prerequisites Before using the `booking-management` SDK, ensure you have an active **MongoDB connection** established using Mongoose in your application. The SDK relies on Mongoose's global connection instance. Example of establishing a Mongoose connection: ```javascript // In your application's entry file (e.g., app.js or server.js) import mongoose from "mongoose"; const connectToMongoDB = async () => { try { // Replace with your actual MongoDB connection string and database name await mongoose.connect("mongodb://localhost:27017/your_booking_db"); console.log("MongoDB Connected Successfully!"); } catch (error) { console.error("MongoDB connection FAILED:", error); process.exit(1); // Exit process with failure } }; connectToMongoDB(); // Call this function to establish the connection ``` --- ## 🔧 Usage Once your Mongoose connection is established, you can simply import and initialize the `BookingSDK`. It will automatically use the active Mongoose connection. ```js import BookingSDK from "booking-management"; const booking = new BookingSDK(); // Initialize the SDK // Set available time (shared across all non-day-off days) // default available time => start: "09:00", end: "17:00" await booking.setAvailableTime("09:00", "18:00"); // Set day offs (e.g., ['Sunday', 'Saturday']) await booking.setDayOffs(["Sunday"]); // Book a time slot (duration in minutes) // startTime should be an ISO 8601 string (e.g., "2025-06-06T10:00:00.000Z") await booking.bookSlot({ userId: "user123", startTime: "2025-06-06T10:00:00.000Z", duration: 30, }); // Get available slots for a day // date should be a string in "YYYY-MM-DD" format (e.g., "2025-06-06") const slots = await booking.getAvailableSlots("2025-06-06"); // Get all bookings with pagination (page number, limit per page) const allBookings = await booking.getAllBookings(1, 10); // Get bookings by date // date should be a string in "YYYY-MM-DD" format (e.g., "2025-06-06") const bookings = await booking.getBookingByDate('2025-06-06') ``` --- ## 🧩 Features Roadmap - [x] Day off management - [x] Time-range configuration - [x] Conflict-free booking logic - [x] Pagination support for fetching all bookings - [x] Support for fetching booking by date --- ## 👥 License MIT © 2025 Nishant-Kumar-devz