A framework for creating flexible, powerful admin dashboards in Rails. Try the demo.
Administrate is still pre-1.0, and there may be occasional breaking changes to the API. Check the release notes for important updates.
Administrate is a library for Rails apps that automatically generates admin dashboards. Administrate's admin dashboards give non-technical users clean interfaces that allow them to create, edit, search, and delete records for any model in the application.
Administrate solves the same problem as Rails Admin and ActiveAdmin, but aims to provide a better user experience for site admins, and to be easier for developers to customize.
To accomplish these goals, Administrate follows a few guiding principles:
- No DSLs (domain-specific languages)
- Support the simplest use cases, and let the user override defaults with standard tools such as plain Rails controllers and views.
- Break up the library into core components and plugins, so each component stays small and easy to maintain.
Administrate supports Rails from 4.2, up to 5.0 and beyond. We support Ruby 2.4 and up.
Add Administrate to your Gemfile and re-bundle:
gem "administrate"
The included installer will create dashboards for each model in your app, complete with routes:
$ rails generate administrate:install
Restart your server, and visit http://localhost:3000/admin to see your new dashboard in action.
For more detailed instructions or to make it work with Rails API-only applications, please go through the 'Getting Started` guide.
If your apps uses Sprockets 4, you'll need to add Administrate's assets to your manifest.js
file. To do this, add these two lines to the file:
//= link administrate/application.css
//= link administrate/application.js
Otherwise, your app will show you this error:
Asset `administrate/application.css` was not declared to be precompiled in production.
Declare links to your assets in `app/assets/config/manifest.js`.
For more information on why this is necessary, see https://www.schneems.com/2017/11/22/self-hosted-config-introducing-the-sprockets-manifestjs
In order to create additional dashboards, pass in the resource name to the dashboard generator. A dashboard and controller will be created.
$ rails generate administrate:dashboard Foo
To customize the appearance, behavior, and contents of the dashboard,
see the guides at
https://administrate-prototype.herokuapp.com.
These guides are available as markdown files in the docs
subdirectory of the
git repository, too.
This repository contains both the source code for Administrate, and a demo Rails app that uses Administrate. The demo app is hosted publicly on Heroku.
- The gem's source code lives in the
app
andlib
subdirectories. - The demo app is nested within
spec/example_app
. - The guides as seen at
https://administrate-prototype.herokuapp.com live as
markdown files in the
docs
subdirectory.
Rails configuration files have been changed to recognize the app in the new location, so running the server or deploying to Heroku works normally.
With this structure, developing a typical feature looks like:
- Add tests in
spec/
- Implement a feature in
administrate/
- Exercise the feature using the demo rails app (
spec/example_app/app/
)
This project uses:
- Sass
- BEM-style CSS selectors, with namespaces
- Autoprefixer
- SCSS-Lint, with Hound (configuration)
- A variety of CSS units:
em
for typographical-related elementsrem
for lengths related to componentspx
for borders, text shadows, etc.vw
/vh
for lengths that should be relational to the viewport
Please see CONTRIBUTING.md.
administrate was originally written by Grayson Wright and is now maintained by Nick Charlton. Many improvements and bugfixes were contributed by the open source community.
administrate is Copyright © 2015-2019 thoughtbot. It is free software, and may be redistributed under the terms specified in the LICENSE file.
administrate is maintained and funded by thoughtbot, inc. The names and logos for thoughtbot are trademarks of thoughtbot, inc.
We love open source software! See our other projects or hire us to design, develop, and grow your product.