npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@saltcorn/reservable

v0.3.2

Published

Reservable resources

Downloads

501

Readme

reservable - Reservation system for Saltcorn

To use this Plugin, you should create a table for reservations. This table should have the following fields:

  • A Date field for the time of the start of the reservation
  • An integer field for the duration of the reservation in minutes
  • Any other fields for the reservation, for instance the email of the person reserving the slot

This table also needs to have two views

  • A view to create, typically an Edit view obtain the information required for the booking. This Edit view does not need to have fields for the date or the duration.
  • A confirmation view, typically a Show view, which is displayed to the user on a successful reservation. This may or may not contain Date and duration

There may be another table indicating reservable resources. This is optional. If you are building a reservation system for a single resource, you can leave this out. On the other hand, if you are building a system where multiple resources need to be tracked for whether they are available, use this to denote the resources that can be taken/available. To do this, create a foreign key field on your reservations Table to the reservable resource table.

Example

Goldilocks and Rapunzel together run the successful GoldiRap Hair Salon. In fact they are so successful that they must now implement an online booking system. Their opening hours are Monday to Friday 9-12 and 13-17 (they close for lunch) and Saturday 10-13. They offer two services: A haircut taking 30 minutes and a full restyle taking 45 minutes. You can book either Goldilocks or Rapunzel for each of the services.

Here, the reservable resource is the hairdresser with two rows: Goldilocks and Rapunzel. They have two services, haircut and full restyle. The availability can be specified as: Mon-Fri 9-12, Mon-Fri 13-17 and Saturday 10-13.

Using Reserve view

The reserve view is a quick way to get started but offers limited control over the look and feel and workflow of the reservation process.

You should create a Reserve view on the reservations table. In the configuration, you specify the fields as explained above. You will also need to configure:

  • What services are available. Each service has a name and a duration.
  • What the availability is, your opening hours. You specify these in blocks of time and the day of the week.

Using the "Reservation availabilites" table provider

Using the table provider gives you full control over the workflow and the look and feel of your reservation process.

First, define a standard database table for reservations as described above. This table should also have an Edit view for adding new reservations.

Now define a new table with the reservation availabilities table provider. in the configuration, pick the table for the reservations and fill out the field choices. You also set up the different services offered and the times you are available.

You can now create lists or feed views on this provided table in order to display your availability to the user.

In order to let the user perform a reservation you should link to the edit view on the reservations table. Create a viewlink and pick this edit view on the reservations table with no relation. you need to use the extra state formula to identify the reservation time and duration. If you start tiem field name is startat and the duration field is duration, use this as the extra state formula: {startat: start_date, duration: service_duration} - start_date and service_duration are fields defined by the table provider as you can see in the field list. You can also use other Fields such as the service title to fill information in the edit view.

You may also want to use the validate_reservation action to ensure that reservation is still available at the time of the booking (that is, it was not reserved by another user while the user was looking at the edit view). In the reservations table add a trigger with when=Validate and action=validate_reservation. This is simply configured by selecting the provided table.

Multiday bookings

The Available Resources Feed view is used to make multi-day bookings for instance for hotel or car rental.