List: Open source software for resource scheduling and booking

For an unrelated project (really unrelated, it is about trash disposal :stuck_out_tongue_closed_eyes:), I had to find a free and open source resource scheduling software. As a side effect, I know quite a few now, so I’ll leave that knowledge here. This is a wiki, and you’re welcome to edit.

Content

1. Lists of software applications

2. Finding more software

3. Choosing the right software for a commune


1. Lists of software applications

As for the software applications that I found, and what they can do, here is the list. It is roughly sorted by quality and adequateness for the purpose outlined above. Nearly all of it is open source, but there are a few exceptions where it seemed appropriate.

1.1. Full-featured applications for general-purpose resource scheduling and booking

The idea with this list is that you can just install one of these and configure it to your needs for managing any not-too-specialized case of resource scheduling or booking, including event and room booking. No need to change the code, just configure it.

  • Booked Scheduler. Clearly the most advanced resource scheduling software that is available as free and open source software – see the live demo.

    Unfortunately the development of the original Booked Scheduler open source project has ceased at 2020-11-01: “Booked Scheduler has become a full SaaS offering on November 1, 2020. The open source project will be discontinued.” (source). The original repository and releases have since been removed. So the link above goes to a fork that intends to continue maintenance of Booked Scheduler in a limited way, while also calling for others in the user community to assist.

    The programming language is PHP, with a (good quality but still) self-developed framework and the Smarty template engine. So the base technology is somewhat legacy, which means this software only makes sense to use when it matches your use case without major modifications.

    Features include time slot based booking, resource status, resource time blocking (when used internally), reports and statistics, detailed access rights, optional booking for guests, e-mail notifications, check-in / check-out (allowing to re-list resources that are not used during their booked times), custom fields, custom calendar coloring rules, and many other features.

    Starting with Booked Scheduler 2.7 Beta, there is also direct payment integration with Stripe and PayPal – see the release announcement. It works via a system of “user credits” that users purchase and can then spend on bookings in the platform. It sounds in the release announcement that buying credits and spending them on a reservation is also possible in one process, but I did not test that yet. In addition, payment integration is available as a third-party plugin (CashFlowProducts PayPal Payments for Reservations), though I am not yet sure how much this relies on the internal credit system as well. Finally, you could modify the software yourself to add this (some pointers).

    A large support forum with many tips, tricks and mods is available at php.brickhost.com/forums. A third-party developer offers various add-ons and plugins.

  • leihs. A mature, open source, Ruby on Rails based application for equipment booking and lending, in use by several universities. A demo is provided, but was broken 2019-01-13.

  • Reservations. An open source, Ruby on Rails based application for equipment booking and lending. Developed by the Student Developer and Mentorship Program at Yale University, which provides students with practical software development experience, with useful outsomes.

  • Odoo based booking software. Odoo, earlier known as OpenERP, is an open source modular business management app. Among the many user-contributed components are multiple small booking solutions. See also directly on Github: Odoo booking solutions / OpenERP booking solutions.

  • ERPNext based booking software. This is another ERP system written in Python, and like Odoo it can be extended with modules. Nothing really mature seems to exist for reservations and booking, but there are some solutions around: hospitality module, franknyarkoh/bookings, jigartarpara/bookingapp and possibly more.

  • Seantis Reservation. A quite full-featured reservation system written in Python. So for everyone looking for an open source solution that’s not PHP, this would be it. The software is a plugin for the Plone CMS (which is a turn-off), but geared towards being independent of it at some time (see).

    Seantis Reservation can serve multiple use cases: booking various resources like classes, meeting rooms, tables etc. online with optional confirmation and an optional waiting list. There is no direct integration of online payments, but a process with admin-only form fields that allow to manually mark a reservation as “paid” once the payment has been received.

  • APR. “APR is an appointment / event booking and reminder system made with Python and Django.” So meant to be generic, and could be mature enough. Also, it allows integration with many other software components since it’s based on Django. In active development as of 2018-12.

  • WP Booking Calendar. The most advanced resource scheduling / booking plugin for WordPress. Not open source software, but both free and commercial versions are available. Can be used for rooms and any other bookable resource. Payment integration and time-slot based booking is only available in the commercial “Small Business” version (149 USD) and higher. See also its WordPress plugin homepage.

  • EDD Bookings. A WordPress plugin for booking appointments. Similar to Easy!Appointments, but with payment integration. Still in active development. Though the software is sold on the website, it is licenced GPL3 and the code is available publicly: backend, JavaScript frontend, other stuff.

  • BookingKitti. A resource booking system written in JavaScript (Node.js) as the final project in software engineering by a group of students at a Chinese university. 582 commits. Not sure if any calendar library is used here.

  • PHP Booking Calendar. Free and open source software. No longer in development since 2014.

  • phpmyreservation. Free and open source software. But rather small and simple.

1.2. Full-featured applications for room / accommodation booking

  • Modernomad. A combined room booking, event management and member management software, developed for and used by the Embassy Network. Which is a network of “experimental” co-living locations. The software supports multiple locations / houses. Written in Python.

  • Trustroots. A mature software written in JavaScript, run by the trustroots.org hospitality community for travellers. Not for commercial / paid room booking, obviously.

  • OxAlto Room Booking System. Judging from the demo, it’s quite a nice, functional, simple software. It used the FullCalendar widget, and resources can be filtered in a two-level menu at the top of the calendar. Sadly, it’s written in ColdFusion, which should be considered obsolete.

  • Qloapps. Free and open source software. Specialized booking system for hotels etc., with payment integration etc… Built as an extension for the open source Prestashop e-commerce software.

  • Room Booking System. “A room booking system built with MongoDB, Express, Node.js and ReactJS.” 474 commits.

  • Meeting Room Booking System. Free and open source software, but no longer in active development (seemingly). Also, rather simple. Source code here.

  • LoungeSearch. Similar to CouchSurfing / BeWelcome, but much less complex.

  • BeWelcome. The open source software of the well-known hospitality platform. Mature, but unfortunately PHP. See here on Github.

  • HotelManagementSystem. Allows to select and book from one of multiple hotels, similar to booking.com. Written in Python, using the Flask micro-framework.

  • crypto-booking. JavaScript based application to book accommodation on the WindingTree blockchain DAPP, paying with Ethereum and the like. It seems well-developed (and a well-resourced project), so perhaps the JavaScript frontend can be reused.

1.3. Full-featured applications for other types of resource scheduling and booking

They are not directly adequate for managing a room booking system for one house. For example, they might be made for multiple houses (like booking.com) or are specialized systems for events or other types of bookings. But they are mature, full-featured applications.

  • FabManager. A software to manage all aspects of a Fablab / makerspace / hackerspace or other type of digital fabrication workshop. Includes room booking, tool booking, event booking, payment integration, tool documentation, and project publishing in a repository that is federated between all FabManager installations. See the source code and an online demo. Written in Ruby, and using FullCalendar for its calendar widget (which is the best choice).

  • NUCore. The “Northwestern University Core Facility Management Software”, a mature, open source lab management software. Among other things, it allows to manage instruments, access to instruments, charging money for that access, services that can be purchased, and user permissions using their user role system.

  • NEMO. A laboratory logistics management solution to book tool access, document tool usage, plan tool maintenance etc… Developed by the U.S. National Institute of Standards and Technology and very much in active development. It is created as a modular Django application that might serve nicely as a template for a modular commune management application.

  • Easy!Appointments. Free and open source software, written in PHP, and coming with a WordPress plugin. Bit limited, geared towards booking appointments at a doctor etc. and not for multi-day reservations of accommodation. Nice simple step-by-step reservation process. Source code here, which is well-developed (>1200 commits) and still maintained.

  • PyRIGS. A mature but specialized booking system made for events. Python-based, >1600 commits.

  • Student Personnel Booking Manager. “This is the code for the Student basement pubs society current web-based system for roughly managing our various bookings and rentals of our collective premises, student employees, invoicing our member societies, as well as wage reporting to facilitate payroll.” So, not generic, but could be useful.

  • Plan:Eat. Meal planning application with recipe integration, a FullCalendar based calendar and a generated shopping list. Written in Python, using Flask. Seems mature for its purpose and can serve as an example of using FullCalendar.

  • MAD Booking. Ruby-based booking system. Users book events together with equipment.

  • Nuclibook. Resource booking system for a nuclear medicine hospital. Written in Java and seemingly mature (1352 commits).

  • ABC Roster. A gratis (but not open source) desktop software application for employee shift scheduling.

1.4. Small applications

These are not full-featured applications but custom solutions for specific cases. They will have to be adapted / extended in order to use them for another use case, but can provide useful examples and scaffolding. Both applications for room booking, general resource booking and any other type of booking / scheduling are included.

  • Django based applications. All of the below are quite small and not yet mature, so there will be some work. But you can choose where to start from. Django was definitely the most popular Python framework for room / hotel booking software, and all of the solutions below are very compact. So Django might be quite a good choice for this.

    • Seguinus. A “hotel / restaurant booking and billing system. It is written in Python 3, using PyQt4, and Django.” So at least a part uses a non-web GUI (Qt based). Could be a mature application (to be tested). There is some documentation in French.

    • django-booking. “A reusable Django app that manages bookings for various purposes.” 41 commits.

    • R2E2. A simple room booking system for a university, written in Python, realized as a plugin for the Django CMS. Seemingly no longer in active development. Some documentation is available here.

    • django-resource-scheduler. “Django app for scheduling the use of shared physical resources.” 16 commits.

    • booking-example. “A restaurant table booking example in Python/Django”. 24 commits.

    • django-reservations. “Django module for handling reservations/booking”. Small but seems already useful, and at least can serve as a demo how to handle bookings in the Django framework.

    • Online Booking System. Django application for booking hotel rooms and tickets.

    • hotelBooking. Another Django based, small hotel booking software.

    • hotel-booking. A Django based booking system for one specific hotel (with pictures of it in the source code …).

    • marakesh. Booking system for one specific hotel (again with pictures of it in the source code …). Also allowing to book customized tours etc…

    • monthy-python. A Django based application to book contractors for work at customer locations. Includes a calendar. Not a generic and rather simple booking application.

    • room-booking. A Django based application “for churches to schedule and book rooms”. Not generic, and no longer in development. But may offer inspirations.

    • django-impro-site. “Django site that can handle userlogin, ticket reservations, course booking, and displaying of upcoming events”. Not really generic though, not matured, and no longer in development. But may offer inspirations.

  • Flask based applications.

    • scheduler. An example of using FullCalendar with Flask in Python. Seems the most developed of the examples found. Source code comments are in Chinese :slight_smile:

    • flask-fullcalendar. “Example of using FullCalendar with Flask in Python”. Just a minimal example though.

    • room-booking-app. “A simple room booking system build with Flask and SQLite”. Really small (12 commits), but at least a start.

    • Hotel-registry. A simple booking system for one hotel, written in Python and built with Flask. Screenshots are provided in the README.

  • Other

    • cosum. A (self-hostable) German platform for lending e.g. every-day goods (vacuum cleaner) or to give away stuff for free (e.g. tomato plant seeds). Allows cooperations like freecycle shops and / or more private subgroups (your house and neighbours), but also publicly available items.

1.5. Software components

In this list, you’ll find software widgets, libraries and other components: anything related to resource scheduling / booking that is not even meant to be a stand-alone software application. But it might be a great tool to build one.

  • FullCalendar with Scheduler. An open source, interactive JavaScript calendar component. It is used in quite a lot of calendaring / resource booking apps, including Booked Scheduler (from the list above). Source code is here and here, and note that the major rework “version 4” of both is just out (in an alpha release, as of 2018-12).

    What’s really great for the context here is the Scheduler add-on, which allows to list bookings in a grid, separated by resource (room etc.). The grid columns can be minutes, hours or days (!), as demonstrated in the custom scale demo.

  • dhtmlxScheduler. A JavaScript widget that displays an interactive calendar. Adding a multi-day event is nicely possible with click&hold (example). This refers to their GPL licenced version (source code here); sadly, the per-resource timeline view that would be most useful for a scheduler application is not part of the open source version.

    The feature set and quality is quite similar to FullCalendar (which see), just that FullCalendar also includes the equivalent of the timeline view in its open source version, there called FullCalendar Scheduler.

  • booking-js. An open source JavaScript component that serves as the frontend for creating bookings for the commercial Timekit.io API platform. However, it is of course technically possible to create an open source backend for this widget. Developer documentation is here. There is also a community-provided integration with Stripe payments.

  • react-booking-calendar. A JavaScript component to show an interactive calendar for booking resources, but a lot simpler than FullCalendar and dhtmlxScheduler above. Seems to also come with a backend for demo purposes.

  • Resource View. A JavaScript component providing a (simple) scheduler-type view for resources and events.

  • Cottage Booking. JavaScript based frontend of an accommodation platform similar to booking.com (?). The REST-ful backend is not included, but perhaps not difficult to add.

  • libres. An open source Python library for reservation systems. Used in Seantis Reservation (see above), and basically its outsourced core (see).

    So it could be a good way to build a Plone-independent reservation software in Python, although it seems to supply only the minimal backend classes so far. There is however an example of using libres with Flask, the well-known Python micro-framework.

2. Finding more software

Here are the most “lucrative” ways of searching that I came across:

3. Choosing the right software for a commune

I have a big interest in small self-supply communes – see also other Autarky Lab content for context. And for that and similar situations of co-living, flat sharing and intentional communities, resource scheduling and booking software can come in quite handy to reduce the friction and stress of day-to-day activities, and to be able to provide and use communal infrastructure efficiently. Example uses include:

  • Managing one or more guest rooms (like we have now in Brussels at Edgeryders’ headquarters “The Reef”). In contrast to now, potential guests do not have to inquire about availability by e-mail / chat / phone, but can see it online and send a booking request, or book right away. Automatic syncing with AirBnB and / or BeWelcome / Couchsurfing is technically possible, but could be a hazzle to implement.
      For rooms that are moderately (30-40%) utilized via AirBnB, allowing that same room to be booked in the resource scheduling software without money would not significantly diminish the rental income: AirBnB guests simply don’t know about this option, and booking collisions are quite rare.

  • Having a communal car and scheduling who requires it when. Also, seeing who is going with the car where and when allows to join the ride, saving fuel and costs.

  • Managing other limited community resources like car workshop space, rare tools (CNC mill, 3D printer, welder) etc…

On the technical side, I propose the following requirements:

  • A software to manage a commune / co-living house should be extensible with other components later. For example, a Django based app seems to provide good scaffolding and a rich selection of open source modules. Rails engines can provide a similar thing.

  • The programming language should be modern enough to be around in 10 years (so, not PHP), and of course match with the in-house developer skills. Python, Ruby and JavaScript / Node.JS are good candidates.

I’m not too sure which software from the list above I’d choose in the end. However, FabManager is my favourite right now because it integrates all major types of reservations (tools, spaces and events). Alternatively, leihs and Reservations seem great as well because at first sight, it seems they can be easily adapted to manage both room and equipment reservations. They might however not cover reservations for parts of a day, which can be important in a commune for resources like cars, certain tools etc…

Another option is to choose one of the Django-based booking applications from above (probably NEMO) and rework it to use FullCalendar and FullCalendar Scheduler. And then add whatever Django app the commune would need as well: shopping list, workshop inventory etc…

And then there are are multiple solutions built on Flask. Which is a nice Python framework as well, but integrating multiple Flask applications with each other is not as simple as with Django (but would be a regular task if this becomes an all-in-one commune management application).

8 Likes

Paying for short-term stays in communes with PayCoupons?

We have briefly thought about this idea in the PayCoupons team, but then discarded it. The idea was that the “Booked Scheduler” software (recommended above) would be used as it is to book a guestroom or other accommodation in a commune. PayCoupons would be used to “pay” for that with the commune’s coupons – the benefit of that is that Booked Scheduler does not need any payment system integration to make that work. Renting out the same room via AirBnB can be done in parallel.

However, the reason PayCoupons is not the right tool for short-term “moneyless” room renting or other spontaneous purchases is: you have to wait for PayCoupons network barter transactions to happen. This conflicts with wanting to book the room “right now”.

There are two possible workarounds for this:

  • Saving up in PayCoupons before needing the room. But, visiting cities is a rare and unplannable activity so it would only make sense if you can use the same coupons in a network of at least 30, better 100 cities across a region like Europe. The Reef network may provide that eventually, but certainly not right now.

  • Paying in own coupons rather than coupons of the space. This is always possible, as everyone can create own coupons as much as they like. It is however not the idea in PayCoupons, because it places too much of the risk on the seller: the space-operating organization will not know whether they are ever able to utilize these coupons (by redeeming or exchanging them). One might argue that unused rooms are excess capacity, so it does not hurt to sell it for unredeemable coupons. That is true when introducing a rule that those paying in money or coupons of the house have priority access (cancelling other bookings until 24 hours before the stay). Such a rule is allowed within the PayCoupons economic system, so why not.

That second proposal may work in our case, but it’s certainly not an economically attractive option for general use, and thus not an attractive option for introducing PayCoupons to mass adoption. Even for ourselves, it may not feel right to make hosting Edgeryders community members a transactional relation – only when we have so many guest rooms that all kinds of people stay there, it would feel appropriate. For the moment, I’ll put the idea at rest.

That said, Booked Scheduler is still a good reservation system for a commune’s spare capacity of rooms.

Pretty awesome list, thanks for that! :thumbsup:

When you mention odoo, you could also mention ERPNext (https://erpnext.com/, Python, GPLv3). I have to admit that I have no hands-on-production-experience with it, but it fits the niche (as the name suggests, its an ERP system, and I know people that are really happy with it). Also, I will likely evaluate other free (as in legally and morally self-hostable) tools if I find some, are you interested in me sharing them here as comment or do you prefer a private message?

Btw I live in an intentional community and we have the use cases you mentioned, also associated with business (education, seminars, workshops). Many intentional communities struggle with the issue that there is no Free Software matching their workflows.

1 Like

Hello Felix and thanks for the link (oh and welcome to Edgeryders). Didn’t know ERPNext before … and it looks like a good, friendly open source project. I couldn’t see a dedicated resource booking / scheduling feature in it so far, though. But if I ever make a list about open source ERP, I’ll add it :slight_smile:

You can share your analysis of open source tools in any category that seems suitable here on Edgeryders … for example Software (General) for forum and company related tools, or Autarky Lab (where we are right now) for tools relevant for intentional communities.

Very much agreed. There is so much untapped efficiency in living together if only we had the right tools … . Some time back I put a kind of “dream list” of such tools together, also mentioning existing relevant tools where I knew them. Maybe you have something to contribute to that list, or can find some inspiration for your community:

And about the search for good open source application, we have an interesting discussion going on right now:

1 Like

Just stumbled upon this thread @matthias, this is pretty neat. We might use this for Studio Tau actually…

Have you found anything that could help plan transportation to an event? For example, the Borderland has 3500 participants driving from all over Europe. While there are some solutions for carpooling, it would also be useful to be able to plan shared transport of art, structures, materials and other large objects. Does anything come to mind?

2 Likes

No, unfortunately. Sounds pretty much like logistics dispatching software, which is probably too different from resource scheduling software so that I didn’t find anything during my research.

If this kind of thing was around, it would be pretty cool even beyond the festival, though. Imagine a collaborative logistics solution … like carpooling, but for stuff. With automated multi-hop routing of items. I remember that University of Siegen, Germany, had a research project into this … they called it co-shipment or similar, but I can’t find it anymore. Also in 2014 a friend and I sent a proposal for a similar system (with automated logistics optimization) to the Horizon 2020 SME Instrument “Disruptive Innovation” scheme, but we didn’t win. (And it was at idea stage, anyway … I don’t know software for this, but please let me know if you find something.)

1 Like

I’ve been thinking about building setting aside some Participio money to build an MVP of this for the festival scenario, which could then potentially be pivoted into a more generalised solution. Either through the Participio formula of getting some people together in a physical location for a week long sprint, or through just finding someone who would want to make a run for it. Do you think we’d get anywhere with a budget of around 5-10k, and would you be interested in working on it if we did?

I’d like to join to some extent … can’t do too many side projects right now, but I’d certainly have time for research / software analysis / some programming as remote work.

About the budget, I think it depends on what is available as a potential base software. Or of course, if you find an existing platform to just join and use, it would provide a solution as well (just not open source, sadly).

Also I just found the Uni Siegen project again that I mentioned above, and I think that similar co-shipment / crowdshipping applications are a promising option to find a suitable base software. I didn’t find anything yet that is both open source and mature, but had a quick look at various solutions and prototypes by businesses and universities:

For ride sharing, somebody around the faircoop movement hacked around this one. Its noted that its “pre-alpha” though I am not sure that further development will be done.

https://routes.fair.coop/

Otherwise I always find it desirable from an ecological standpoint to hook into existing ride-sharing services, although its somewhat understandable if somebody does not want to share a ride with everybody. It is difficult to find some that are open about their ethics (like https://bessermitfahren.de), and the standard format excludes more “advanced” scenarios (like I come over, surf your couch and we leave the next day, private messages, non-car-ride-sharing etc.).

1 Like

Haha great ideas, haven’t seen it anywhere either :slight_smile: Also:

  • shared roadtrip in a campervan
  • ride sharing plus towing somebody’s camper trailer
  • sending a trailer with cargo hop-by-hop through ride-sharing (with drivers just leaving the trailer at highway parking spaces with a combination lock around the towing hitch, for the next driver to pick it up)

2.2. Full-featured applications for other types of resource scheduling and booking

  • leihs (demo, down 20190213). Open Source, Ruby on Rails application. Use case: Lending your inventory.
  • reservation (yale). Open Source, Ruby on Rails application. Use case: Lending your inventory.
1 Like

Huh, these are great finds. I added them to the list above. And I thought I have already seen everything relevant on GitHub :smile: Since they allow multi-day bookings, a commune could manage spare room bookings with these tools as well, not needing separate tools for room and inventory.

(@hugi might be interested in these two tools for The Hub, they could be more suitable than the lab management software.)

2 Likes

And another free “lab management” software written in rails and used by US universities (looks pretty mighty): GitHub - tablexi/nucore-open: Northwestern University Core Facility Management Software (NUCore) . Although not mentioned in the README it is possible to setup with sqlite, will write documentation and send a PR about that.

1 Like

Another great find, thank you! I added it to the wiki above.

Manage a whole FabLab, with machines, Rooms, events, … Ruby on Rails, code: GitHub - sleede/fab-manager: Fab-Manager is the FabLab management solution. It provides a comprehensive, web-based, open-source tool to simplify your administrative tasks and your marker's projects. , demo: https://demo.fab-manager.com/

1 Like

Aw, I think with FabManager you found my favourite commune management software so far! Added to the list above.

In addition, I also included Modernomad in the list. It’s for managing community-run guesthouses in multiple locations, so might be interesting for your use cases. It was pointed out to me by @jonathan_sundqvist – you guys might want to connect, as you seem to be aligned in your software requirements :slight_smile:

3 Likes

Amazing listing! Thank you for sharing, have saved to my links :cherry_blossom:

1 Like

I believe https://www.bookkit.org/ fits well in this list as well

I’m afraid it does not, because it’s not open source software. “Just” free for academic use, it seems. Or did I miss something?

Here’s another one with some repeats, but some new also GitHub - coderbyheart/open-source-meetup-alternatives: Open-Source Alternatives to Meetup

1 Like