add-on $15/mo gem "avo-calendar_view"

Calendar view

A Rails calendar for your records: bookings, shifts and deadlines by month or week.

Calendar view screenshot

What it does

avo-calendar_view

Bookings, appointments, deadlines, shifts: some records only make sense on a calendar, and a table makes your team reconstruct the week in their heads. With this Rails calendar gem, add a :calendar view type to any resource's index page, right next to table, grid, and map. Point it at the date field with one config hash and the records you already have render as a month grid or a week schedule, no new models, no separate calendar app.

It reads your data the way a calendar should: datetime columns become hour-based events with their start time on the chip, date columns become all-day bars, and a record with an end date spans every day it covers. Clicking an event opens a preview popover with the fields you chose, so checking a booking doesn't mean leaving the month. Filters and scopes keep working, and the calendar always shows the whole visible range, never just the current pagination page.

The week view: an all-day lane and hour rows

What you get

  • Turn any resource's index into a calendar with self.view_types = [:table, :calendar]. The date field is picked up automatically, or name it yourself
  • Month grid and week schedule with an all-day lane and hour rows, switchable from the header and linkable via the URL
  • Hour-based and all-day events inferred from the column type: datetime chips carry their start time, date columns render as all-day bars
  • Multi-day events span every day they cover; add an ends_at attribute and offsites, stays, and rentals read as one bar instead of scattered rows
  • Click any event for a preview popover with the fields you marked for preview, plus a link to the record, no page navigation to peek at a booking
  • Color events straight from your data with a one-line proc: color: -> { record.status == "urgent" ? :red : :blue }
  • Your index filters, scopes, and authorization keep applying. The calendar is a view type, not a parallel data path, and it always shows the whole visible month or week

Why it pays off

  • A calendar looks like a weekend build until you hit the real cases: events crossing weeks, all-day versus timed, timezone-safe range queries, and a layout that survives both themes. Here those cases are already handled, and they keep improving with Avo.
  • It queries the visible range directly instead of the paginated page, so the month is always complete. That is the case a calendar built for one app does not need to cover yet, and here it is already covered.
  • It rides your existing resources (fields, filters, scopes, authorization), so there is no second source of truth to keep in sync and no calendar-specific API to secure.
  • When Avo upgrades, the calendar upgrades with it. Your team plans their week in the admin they already use, and your agents and developers stay on your product.

Questions

How is this different from simple_calendar?

simple_calendar is a free gem that gives you month and week calendar helpers to style and fill in your own views. It is the right pick for a calendar in your customer-facing app. Calendar view is for your Avo app: it is a view type on your resource Index view, so the events come with preview popovers, multi-day bars, and the filters, scopes and authorization you already set up, with no views to write.

Which date fields does it use?

The one you name in starts_at, or the first date or datetime field it finds, then created_at. A date column becomes an all-day event, a datetime column a timed one, and an ends_at attribute turns a record into a bar across every day it covers.

Can I drag events to reschedule them?

Not yet. Today you open the record from its popover and change the date there. Drag to reschedule is not in the add-on, and the docs say so too.

ready to ship?

You ship it this afternoon. We keep it solid for years.