For an unrelated project (really unrelated, it is about trash disposal ), 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
- 1.1. Full-featured applications for general-purpose resource scheduling and booking
- 1.2. Full-featured applications for room booking
- 1.3. Full-featured applications for other types of resource scheduling and booking
- 1.4. Small applications
- 1.5. Software components
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
-
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:
- search for “booking” on GitHub
- search for “fullcalendar” on GitHub
- search for “booking” on SourceForge
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).