booking-management
v2.4.3
Published
A lightweight Node.js SDK for handling time-slot bookings.
Downloads
40
Maintainers
Keywords
Readme
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
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:
// 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.
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
