# Dashboards

A Rails dashboard gem: metric cards and Chartkick charts, written in Ruby, refreshing on their own.

![Dashboards screenshot](https://avohq.io/assets/addons/dashboards/dashboards-e555626ea00f17d75344758a0ae2b62df1327e56553c8646fb23967e1babef74.png)

- Price: $30/month
- Gem: `gem "avo-dashboards"`
- Web page: https://avohq.io/addons/dashboards
- Pricing: https://avohq.io/pricing.md

Give every team the numbers that matter to them the moment they open Avo, with a Rails dashboard gem you configure in Ruby. Run `rails g avo:dashboard`, then compose a view from metric cards, Chartkick charts, and your own ERB partials in a plain Ruby `cards` method, no front-end code to wire up.

Cards refresh on their own with `refresh_every`, so the screen stays live without anyone hitting reload. A `visible` block and a dashboard-level `authorize` rule keep each viewer to the numbers they're allowed to see, and a 3-to-6 column grid lets you arrange it all. Your agent writes the `cards` method; the live refresh, authorization, and grid come with the foundation and keep improving with Avo.

## What you get

- Show a single number, a trend, or anything you can render, with the three card types that cover it: metric cards, Chartkick charts, and your own ERB partial cards
- Put trends in front of people instead of raw tables: add the `chartkick` gem and Chartkick draws area, line, column, bar, pie, and scatter charts
- Lay the numbers that matter where the eye lands first, on a 3-to-6 column grid with per-card `cols` and `rows` spans and labelled dividers
- Numbers nobody has to refresh: per-card `refresh_every` polls and repaints over Turbo frames, so no one is reading a stale figure
- Let people ask "how about last quarter?" without leaving the page: date-range cards with `ranges` and an `initial_range`, set per card or shared across the dashboard
- Show each viewer only the numbers they should see: a `visible` block and a dashboard-level `authorize` rule scope every card
- A running dashboard from one command: `rails g avo:dashboard` scaffolds the class and `cards` method, ready to fill in

## Why it pays off

- Your team sees the live numbers the moment they open Avo, so calls get made on current data instead of a stale export someone ran last week.
- Ship a reporting screen this afternoon by writing a `cards` method, instead of speccing charts, polling, and a grid layout over a sprint.
- Every Avo release makes it better: the live refresh, Turbo frames, metric cards, and grid layout keep working through upgrades, and fixes reach your app with bundle update.
- Tokens, time, and focus go to the numbers your team needs, not to a reporting layer generated from scratch in every app.

## Questions

### Which charts can a Rails dashboard show?

Charts come from Chartkick, which you add to your Gemfile yourself: area, line, column, bar, pie and scatter. Next to them sit metric cards for a single number or trend, and partial cards for anything you can render in ERB, such as a map or a progress bar.

### Do I need a separate dashboard app or BI tool?

No. A dashboard is a Ruby class in your app, written with `rails g avo:dashboard`. Each card runs a query against your own models, so the numbers come straight from your database and the dashboard ships with the rest of your code.

### Can I limit who sees a dashboard?

Yes. An `authorize` block decides who can open a dashboard, with `current_user` and `params` in reach, and a dashboard that fails it also blocks its cards' URLs. A `visible` boolean or block decides whether it shows up at all.

Included in bundles: Growth ($145/month)

## Recent releases

- 3.7.0
- 3.6.4
- 3.6.3
- 3.6.2
- 3.7.1
