Room Booking System

A booking system built with Rails and Avo in a fraction of the time it takes to build from scratch. Showcasing Avo's power and how it can help you go to market faster.
Visit project

Building systems like booking applications is where a framework like Rails shines the most.

One of the most famous of them all—Airbnb—was built from the ground up using Rails back in 2008 and, even though they've broken out of the monolith some time ago, they still use Rails for some parts of the app.

Rails can allow you to build CRUD interfaces and user flows pretty quickly, even more if you have a solid foundation to start with.

But, at some point, things get a bit repetitive, especially when building admin tooling with Rails and that's where a solution like Avo can help you out.

That's why we built avowork: a demo application to show, not tell, how Avo can empower even a single developer to swiftly build powerful applications by letting the developers focus on what's important: creating value for end users.

A walkthrough

The app, avowork, is a proof-of-concept where its end users can find places to work and book them for a limited amount of time.

It has four models:

  • User: it represents the person that can place a booking and the admin who has access to manage the resources in the back-office.
  • Room: represents the actual entity being booked. For our case, it's an office, but it can actually be anything that might be booked for a set amount of time.
  • Location: the place where the rooms are located. In our case, it can be an office building or a co-working space, but it can also be a house or department with extra capacity that can be used for short-term rentals.
  • Booking: a join table between the users and the bookings. It holds information about the booking itself.

The data model is simple, just enough to give an idea of how Avo can help us build a faster booking app:

The User has a full_name, an email and an admin boolean so we can authenticate admin users in our application.

The Location and Room models have a name a description and a photo to identify and display them in our application.

Finally, the Booking relates a user with a room and has booked_for and booked_at fields that allow us to know when and for how long the booking will take place.

As for the features, we're using Avo's bread and butter:

  • Fields like image field, text area, date time, etc.
  • Custom actions: in this case, we use a custom action to delay bookings by a set number of hours.
  • Global search: using the ransack gem and minimal configuration, we can get global and individual resource customizable search features.
  • Filters: we have a basic filter in the bookings view to retrieve only bookings that are in the future (yet to be fulfilled).
  • Dashboards and metric display: a basic dashboard where we can have a quick overview of how things are going using a chart and two metric cards.

Dashboard for avowork booking app

This example app can be extended to be a fully-featured booking app using Avo and achieving it in a fraction of the time when compared to doing it with Rails alone.

Trusted by

Avo is used by a growing number of brands and companies that trust us to build and improve their applications