{"id":13878890,"url":"https://github.com/motor-admin/motor-admin-rails","last_synced_at":"2025-10-24T01:57:11.778Z","repository":{"id":37567855,"uuid":"344641650","full_name":"motor-admin/motor-admin-rails","owner":"motor-admin","description":"Low-code Admin panel and Business intelligence Rails engine. No DSL - configurable from the UI. Rails Admin, Active Admin, Blazer modern alternative.","archived":false,"fork":false,"pushed_at":"2025-03-09T08:31:15.000Z","size":1586,"stargazers_count":794,"open_issues_count":23,"forks_count":79,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-04-06T17:01:01.616Z","etag":null,"topics":["admin","admin-dashboard","business-intelligence","charts","crud","low-code","rails","sql"],"latest_commit_sha":null,"homepage":"https://app.getmotoradmin.com/demo/","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/motor-admin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-03-04T23:54:53.000Z","updated_at":"2025-03-24T14:42:16.000Z","dependencies_parsed_at":"2024-06-01T08:53:49.349Z","dependency_job_id":"4c026e09-4493-4c6d-8ad9-59dd586d3343","html_url":"https://github.com/motor-admin/motor-admin-rails","commit_stats":{"total_commits":545,"total_committers":17,"mean_commits":32.05882352941177,"dds":0.04036697247706422,"last_synced_commit":"01d712f223bdd1cf0ec7f737098cb94fc431ba98"},"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/motor-admin%2Fmotor-admin-rails","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/motor-admin%2Fmotor-admin-rails/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/motor-admin%2Fmotor-admin-rails/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/motor-admin%2Fmotor-admin-rails/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/motor-admin","download_url":"https://codeload.github.com/motor-admin/motor-admin-rails/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248766736,"owners_count":21158302,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["admin","admin-dashboard","business-intelligence","charts","crud","low-code","rails","sql"],"created_at":"2024-08-06T08:02:03.449Z","updated_at":"2025-10-24T01:57:06.725Z","avatar_url":"https://github.com/motor-admin.png","language":"Ruby","funding_links":[],"categories":["Ruby","Admin Interface"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n[![Motor Admin Rails](https://user-images.githubusercontent.com/5418788/140520844-a947845d-b579-4b3f-9b49-c539ad3cf580.png)](https://www.getmotoradmin.com/ruby-on-rails)\n\n# Motor Admin Rails\n\nLow-code Admin panel and Business intelligence Rails engine **(no DSL - configurable from the UI)**.\n\n🤓 [Demo App](https://app.getmotoradmin.com/demo/) | 👀 [Features overview](https://www.youtube.com/watch?v=ngVoci8Hll4\u0026list=PLu7llEMh0KcOkR3Uy_RJT0cXPZQKAYVsq\u0026index=1) | ⭐ [Pro](https://www.getmotoradmin.com/ruby-on-rails)\n\u003c/div\u003e\n\n[![Admin Panel](https://user-images.githubusercontent.com/5418788/119318538-1f30e300-bc82-11eb-94a4-107c31c93b13.png)](https://app.getmotoradmin.com/demo/)\n\n## Installation\nAdd this line to your application's Gemfile:\n\n```ruby\ngem 'motor-admin'\n```\n\nAnd then execute:\n```bash\n$ bundle install\n```\n\nCreate and run migration:\n```bash\n$ rails motor:install \u0026\u0026 rake db:migrate\n```\n\n## Features\n\n* [Customizable CRUD](#customizable-crud)\n* [Custom actions](#custom-actions)\n* [Virtual attributes](#virtual-attributes)\n* [Forms builder](#forms-builder)\n* [SQL queries](#sql-queries)\n* [Data visualization](#data-visualization)\n* [Dashboards](#dashboards)\n* [Email alerts](#email-alerts)\n* [Authorization](#authorization)\n* [Active Storage](#active-storage)\n* [Intelligence search](#intelligence-search)\n* [I18n](#i18n)\n* [Optimized for mobile](#optimized-for-mobile)\n* [Configurations sync between environments](#configurations-sync)\n* [Authentication](#authentication)\n* Multiple databases support\n* Audit log\n* Live collaboration notes\n* Personalized report alerts via Slack\n\n## [Pro](https://www.getmotoradmin.com/ruby-on-rails)\n\n* Custom styling and logo (white label)\n* Multi-factor authentication\n* SSO/SAML\n* [learn more](https://www.getmotoradmin.com/ruby-on-rails)\n\n### Customizable CRUD\n\n![Resource settings](https://user-images.githubusercontent.com/5418788/119318569-2a840e80-bc82-11eb-9ba3-f3964eb6f997.png)\n\n![Settings UI](https://user-images.githubusercontent.com/5418788/119263883-90708780-bbe9-11eb-9f9f-f76fed0b7f27.png)\n\nEverything in the admin panel can be configured using the intuitive settings UI, which can be opened via the icon in the top right corner.\n\nData displayed on the resource page can be completely customized via [SQL queries](#sql-queries) and [dashboards](#dashboards) attached to the resource as a tab. Usually, queries used to display resource data should contain `{{resource_name_id}}` [variable](#sql-queries).\n\n[Learn more about resource customizations](https://github.com/motor-admin/motor-admin-rails/blob/master/guides/customizing_resource_table.md)\n\n### Custom Actions\n\n![Custom actions](https://user-images.githubusercontent.com/5418788/119266132-3c1dd580-bbf2-11eb-9666-09e1640eaf7b.png)\n\nCustom resource actions can be added via Active Record method call, API endpoint, or [custom forms](#forms-builder). Also, it's possible to override default create/update/delete actions.\n\n### Virtual attributes\n\nAny ActiveRecord model method or attribute can be exposed to the admin panel by adding a new column with the name that matches the method name from the resource model:\n\n```ruby\nclass Customer \u003c ApplicationRecord\n  has_many :orders\n\n  def lifetime_value\n    orders.sum(\u0026:total_price)\n  end\nend\n```\n\n![Virtual attribute](https://user-images.githubusercontent.com/5418788/123373683-76321c80-d58e-11eb-914d-675444b7eb2a.png)\n\n### Forms Builder\n\n![Custom form](https://user-images.githubusercontent.com/5418788/119264008-1391dd80-bbea-11eb-9f14-cb405e77fb60.png)\n\nValues from the form fields can be used in API path via `{field_name}` syntax: `/api/some-endpoint/{resource_id}/apply`.\n\n[Learn more about custom forms builder](https://github.com/motor-admin/motor-admin-rails/blob/master/guides/building_custom_forms.md)\n\n### SQL Queries\n\n![SQL query](https://user-images.githubusercontent.com/5418788/119264127-84d19080-bbea-11eb-9903-ef465d1d2c97.png)\n\nQueries can include embedded variables via `{{variable}}` syntax ([mustache](https://mustache.github.io)). `{{#variable}} ... {{/variable}}` syntax allows to decide if conditions inside the scope should be included in the query.\n\n### Data Visualization\n\n![motor-visualization](https://user-images.githubusercontent.com/5418788/119264625-a2075e80-bbec-11eb-986c-6106dd6e47ce.png)\n\nData from the SQL query can be represented as: table, number, line chart, bar chart, pie chart, funnel, markdown.\n\n### Dashboards\n\n![Dashboard](https://user-images.githubusercontent.com/5418788/119264726-f579ac80-bbec-11eb-852e-8055f8aba200.png)\n\nSQL queries can be organized into dashboards to create a convenient representation of the data.\n\n### Email Alerts\n\n![Email alert](https://user-images.githubusercontent.com/5418788/119265049-feb74900-bbed-11eb-8070-bcc8d6113b9b.png)\n\nQuery data can be sent via email periodically using the alerts feature. Interval of the alert email can be specified using natural language, e.g., `every day at midnight`, `every Monday at 8 PM`, `every weekday at 6AM and 6PM`, `every minute`.\n\nSender address can be specified using `MOTOR_ALERTS_FROM_ADDRESS` environment variable.\n\n### Intelligence Search\n\n![Intelligence search](https://user-images.githubusercontent.com/5418788/119266559-eea26800-bbf3-11eb-8cb3-d0538aa386a9.png)\n\nIntelligence search can be opened via the top right corner button or using \u003ckbd\u003eCmd\u003c/kbd\u003e + \u003ckbd\u003eK\u003c/kbd\u003e shortcut.\n\n### Authorization\n\nMotor Admin allows to set row-level and column-level permissions via [cancan](https://github.com/CanCanCommunity/cancancan) gem. Admin UI permissions should be defined in `app/models/motor/ability.rb` file in `Motor::Ability` class. See [Motor Admin guide](https://github.com/motor-admin/motor-admin-rails/blob/master/guides/defining_permissions.md) and [CanCan documentation](https://github.com/CanCanCommunity/cancancan/blob/develop/docs/Defining-Abilities.md) to learn how to define user permissions.\n\n### Active Storage\n\nMotor Admin is configured by default to perform uploads to the provider you configured in your `storage.yml` file for Active Storage. If you are using large uploads within Motor Admin you will need to enable direct uploads by setting the following ENV variable. \n\n```sh\nMOTOR_ACTIVE_STORAGE_DIRECT_UPLOADS_ENABLED=true\n```\n\n_Note: At the moment, this will enable direct uploads globally_\n\n### I18n\n\nMotor Admin can use Rails ActiveRecord i18n keys to render resource translations:\n\n```yml\nes:\n  activerecord:\n    models:\n      customer:\n        one: Cliente\n        other: Clientes\n    attributes:\n      customer:\n        name: Nombre\n    scopes:\n      customer:\n        enabled: Activado\n```\n\n### Optimized for Mobile\n\n![motor-mobile](https://user-images.githubusercontent.com/5418788/119269566-03392d00-bc01-11eb-9e9d-1f6a58fe0749.png)\n\n\n### Configurations Sync\n\nAll admin panel configurations are automatically stored in the `config/motor.yml` file. It's recommended to include this file in the application git repository to always have the admin panel configurations in sync across different local and remote environments.\n\nIt's possible to sync local development admin panel configurations with remote production application via `rake motor:sync` task:\n\n```bash\nMOTOR_SYNC_REMOTE_URL=https://remote-app-url/ MOTOR_SYNC_API_KEY=secure-random-string rake motor:sync\n```\n\n\n## Authentication\n\nAdmin panel can be secured with 'Basic authentication' by specifying `MOTOR_AUTH_USERNAME` and `MOTOR_AUTH_PASSWORD` environment variables.\n\nAlternatively, it can be secured with [devise](https://github.com/heartcombo/devise/wiki/How-To:-Define-resource-actions-that-require-authentication-using-routes.rb) or any other authentication library used by the application:\n\n```ruby\nauthenticate :admin_user do\n  mount Motor::Admin =\u003e '/admin'\nend\n```\n\n## Development\n\nStart webpack dev server:\n\n```bash\nyarn install \u0026\u0026 yarn serve\n```\n\nSetup development database:\n\n```bash\nrake app:db:create \u0026\u0026 rake app:db:setup\n```\n\nStart example application in development mode:\n\n```bash\nMOTOR_DEVELOPMENT=true rails s\n```\n\n## License\n\nMotor Admin is licensed under the MIT license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmotor-admin%2Fmotor-admin-rails","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmotor-admin%2Fmotor-admin-rails","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmotor-admin%2Fmotor-admin-rails/lists"}