{"id":18895902,"url":"https://github.com/echobind/cat","last_synced_at":"2026-02-28T01:30:18.805Z","repository":{"id":98471903,"uuid":"250592915","full_name":"echobind/cat","owner":"echobind","description":"Clubhouse Automation Tool","archived":false,"fork":false,"pushed_at":"2020-06-30T17:37:53.000Z","size":1160,"stargazers_count":1,"open_issues_count":7,"forks_count":0,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-02-16T12:13:56.115Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/echobind.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":"2020-03-27T17:00:07.000Z","updated_at":"2024-12-21T19:16:12.000Z","dependencies_parsed_at":"2023-06-01T21:45:45.474Z","dependency_job_id":null,"html_url":"https://github.com/echobind/cat","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echobind%2Fcat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echobind%2Fcat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echobind%2Fcat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/echobind%2Fcat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/echobind","download_url":"https://codeload.github.com/echobind/cat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239870516,"owners_count":19710736,"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":[],"created_at":"2024-11-08T08:31:06.304Z","updated_at":"2026-02-28T01:30:18.758Z","avatar_url":"https://github.com/echobind.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rails Template\n\n[![Maintainability](https://api.codeclimate.com/v1/badges/0060966b181b26405c22/maintainability)](https://codeclimate.com/github/TristanToye/rails-template/maintainability) [![Test Coverage](https://api.codeclimate.com/v1/badges/89fc762ec583cc1b84cd/test_coverage)](https://codeclimate.com/github/TristanToye/rails-template/test_coverage) [![CircleCI](https://circleci.com/gh/TristanToye/rails-template.svg?style=svg)](https://circleci.com/gh/TristanToye/rails-template) ![License](https://img.shields.io/github/license/tristantoye/rails-template.svg?style=flat) [![Price](https://img.shields.io/badge/price-FREE-0098f7.svg)](https://github.com/TristanToye/rails-template/blob/master/LICENSE) ![Issues](https://img.shields.io/github/issues-raw/tristantoye/rails-template.svg?style=flat) ![Monitoring](https://img.shields.io/uptimerobot/status/m781943983-80d12cbd488c39a365d85a41.svg?style=flat) ![Uptime](https://img.shields.io/uptimerobot/ratio/m781943983-80d12cbd488c39a365d85a41.svg?style=flat)\n[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/TristanToye/rails-template) [![Deploy to Azure](http://azuredeploy.net/deploybutton.png)](https://azuredeploy.net/?repository=https://github.com/TristanToye/rails-template)\n\nA MVP ready template for Rails apps.\n\nEverything used in this repo is open source, free, or optional.\n\nThis repo focuses on getting your project setup ASAP with all the tooling to start deploying from your first commit.\n\n## ⬆️ Versions\n- [Live Demo (master branch)](https://demo.railstemplate.com)\n- [Rails 6.x](https://github.com/TristanToye/rails-template/)\n- [Rails 5.x](https://github.com/TristanToye/rails-template/tree/v1.1)\n- [Rails 4.x](https://github.com/TristanToye/rails-4-boilerplate)\n\n## ✨ Features\n- User Accounts \u0026 Authentication: [Devise](https://github.com/plataformatec/devise)\n- Feature Switching with a UI: [flipper](https://github.com/jnunemaker/flipper)\n- Admin Dashboard UI: [ActiveAdmin](https://github.com/activeadmin/activeadmin)\n- Secrets Management: [dotenv](https://github.com/bkeepers/dotenv)\n- Livereload for Development: [Guard](https://github.com/guard/guard)\n- Upgraded Testing Suite: [RSpec](https://github.com/rspec/rspec), [faker](https://github.com/stympy/faker), [factory_bot](https://github.com/thoughtbot/factory_bot)\n- Static Analyses: [Brakeman](https://github.com/presidentbeef/brakeman), [Rubopcop](https://github.com/rubocop-hq/rubocop)\n- Continuous Integration: [CircleCI](https://circleci.com), [CodeClimate](https://codeclimate.com)\n- Code Coverage Reporting with a UI: [simplecov](https://github.com/colszowka/simplecov)\n\n## 📝 Guides\n- [Getting started](https://github.com/TristanToye/rails-template#-getting-started)\n- [Local setup](https://github.com/TristanToye/rails-template#-local-setup)\n- [Feature Switches](https://github.com/TristanToye/rails-template#-feature-switches)\n- [Admin Dashboard](https://github.com/TristanToye/rails-template#-admin-dashboard)\n- [Testing](https://github.com/TristanToye/rails-template#-testing)\n- [Code Coverage](https://github.com/TristanToye/rails-template#-code-coverage)\n- [Static Analysis](https://github.com/TristanToye/rails-template#-static-analysis)\n- [Deployment](https://github.com/TristanToye/rails-template#-static-analysis)\n- [Continuous Integration](https://github.com/TristanToye/rails-template#-continuous-integration)\n- [Mailer Setup](https://github.com/TristanToye/rails-template#-mailer-setup)\n- Custom Domain, DNS, \u0026 SSL - coming soon\n\n## 📦 Getting Started\nTo setup the repo locally start by cloning it locally:\n```\ngit clone https://github.com/TristanToye/rails-template.git\ncd rails-template\n```\n\n## 🔧 Local Setup\nNext you need to install all the dependiencies:\n- ruby 2.7.0\n- rails 6\n- node 8.16.0\n- postgres 10\n\nTo accomplish this I recommend the following:\n- install homebrew\n- install RVM\n- install ruby 2.7.0 with RVM\n- install rails 6\n- install NVM\n- install node 8.16.0 with NVM\n- install postgres 10\n\nThis guide walks you through it in details: http://railsapps.github.io/installrubyonrails-mac.html\n\nThe only issue you might run into is setting up Postgres. If you use the recommend Postgres app (do this). When installing the `pg` gem you will need to run the following:\n```\ngem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/10/bin/pg_config\n```\n\nOr you can add the app's config to your `~./bash_profile`:\n```\nexport PATH=\"/Applications/Postgres.app/Contents/MacOS/bin:$PATH\"\n```\n\nOnce you have everything installed, run bundler to get our gems setup:\n```\n$ bundle install\n```\n\n### 🔒 Setup Secrets\nFor most credentials we want to use the Rails 5.2 credential management. This article explains it well with examples: https://medium.com/cedarcode/rails-5-2-credentials-9b3324851336\n\nTo get started here go delete my credentials located at `/config/credentials.yml.enc`.\n\nWe will start by adding a `secret_key_base` to this file:\n```\n$ rake secrect\n840f20e6084666b7aabe9d94...\n$ EDITOR=\"code --wait\" rails credentials:edit\n\n# In the credentials file add the following\nsecret_key_base=840f20e6084666b7aabe9d94...\n```\n\nWe also likely want to handle some environment variables locally. We use a git-ignored file to load them when the app starts.\n\nCreate a new file `.env` in the root of the repo. This will load any environment variables you might need to set in the future.\n\n### 🗃 Generate Local Database\nMakes sure postgres is running and setup your database:\n```\n$ rails db:setup db:schema:load\n```\n\nNow you should be able to start your rails app and load it in your browser at http://localhost:3000:\n```\n# to start with spring and all the goodies\n$ guard\n\n# OR to start just the rails server\n$ rails s\n```\n\n## 🐬 Feature Switches\nThis app uses the lovely [Flipper gem](https://github.com/jnunemaker/flipper) to manage features.\n\nIt is protected with a basic auth. Add the following to your credentials:\n```\n$ EDITOR=\"code --wait\" rails credentials:edit\n\n# In the file\nflipper:\n  user_name: YOUR_USERNAME\n  password: YOUR_PASSWORD\n```\n\nThen navigate to http://localhost:3000/flipper/features \u0026 enter your credentials.\n\nAdd the feature `show_auth` and enable it for everyone. This should show the login/signup links on the index of the app.\n\n## 🔑 Admin Dashboard\nThis app uses the [ActiveAdmin](https://github.com/activeadmin/activeadmin) gem to generate an admin UI.\n\nThis is already up and running as part of your app! You just need to create an admin user to access it.\n\nSignup on your app and try navigate to http://localhost:3000/admin - you should be unable to access it yet.\n\nYou need to set the boolean column `admin` on your user account to `true`.\n\nThis is pretty fast to do from the rails console:\n```\n$ rails c\n\u003e User.find_by(email: 'YOUR_ACCOUNTS_EMAIL').update(admin: true)\n```\n\nNow navigate to http://localhost:3000/admin and you should see the blank admin UI.\n\nYou will need to [read the docs](https://activeadmin.info/documentation.html) to find out how to extend this for your own purposes.\n\n## ✅ Testing\nYou can start your app, and run your livereloading test suite with one command: `$ guard`\n\nOnce guard is running, simply push `return` to run all tests \u0026 static checks.\nFor more info check the Guard related gems in the `Gemfile`.\n\nTo run the test suite on its own: `$ rspec`\n\nFor more info check the RSpec related gems in the `Gemfile`.\n\n## 🔧 Code Coverage\nCode coverage is setup with simplecov.\n\nRun your test suite: `$ rspec`\n\nIn your apps directory open `./coverage/index.html` in a browser to view a UI for the code coverage of your app.\n\nIf you start the app with the `$ guard` command the code coverage will update coverage on each saved change.\n\n## 🚨 Static Analysis\nThere are multiple gems integrated in this app for static analysis.\n\nThese all run as part of the `$ guard` command during development.\n\nRubocop: ruby style guide, [read more here](https://github.com/rubocop-hq/rubocop). To use run: `$ rubocop`.\n\nBrakeman: security analysis, [read more here](https://github.com/presidentbeef/brakeman). To use run: `$ brakeman`.\n\n## 🚀 Deployment\n\n[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/TristanToye/rails-template)\n\nWe are going to deloy this [Heroku](https://www.heroku.com/)\n\nCreate an account and create your first app. Add to your app the free tier of [Heroku Postgres](https://www.heroku.com/postgres) \u0026 [Papertrail](https://elements.heroku.com/addons/papertrail).\n\nNext install the CLI locally \u0026 login: https://devcenter.heroku.com/articles/heroku-cli\n\nAdd your `.env` variables to the [settings tab on your Heroku app](https://devcenter.heroku.com/articles/config-vars#using-the-heroku-dashboard).\n\nYou will also need to add the contents of your `config/master.key` file to Heroku as `RAILS_MASTER_KEY` in the same setting location to allow Heroku to use your credentials.\n\nDeploy your repo from the `deploy` tab by connecting your github account and selecting the repo OR follow the linked guide below to deloy directly from your machine.\n\nFinally, run the following to setup you database on the Heroku Postgres instance:\n```\nheroku run rails db:schema:load -a APP_NAME\n```\n\nHeroku has a great set of documentation on how to get setup: https://devcenter.heroku.com/articles/getting-started-with-rails5\n\n## 👷 Continuous Integration\nThis section could be expanded, but out of ther box there are some basic tools in place.\n\n### CircleCi\nUse this for CI with Heroku to ensure all your tests pass before deploying a new version, before merging your latest PRs etc.\n\nYou get one free linux box to run tests on: https://circleci.com\n\nConnect your github account and select the repo to start running tests.\n\nBy default this is configured to push code coverage to CodeClimate (see below).\n\nIf you don't want to use CodeClimate comment out lines 94-96 from [.circleci/config.yml](https://github.com/TristanToye/rails-template/blob/master/.circleci/config.yml#L94):\n```\n      - send-code-coverage:\n          requires:\n            - build-rails\n```\n\nOnce setup and you have your tests passing you can enable the option on Heroku to `Wait for CI to pass before deploy` from the `Deploy` tab of you app.\n\n### CodeClimate\nUse this for tracking issues, code coverage etc.\n\nFree for open source: https://codeclimate.com/\n\nSign in with github \u0026 connect your repo.\n\nAdd this environment variable to CirclCi: `CC_TEST_REPORTER_ID`\n\nI highly recommend installing the browser extension: https://chrome.google.com/webstore/detail/code-climate/phgahogocbnfilkegjdpohgkkjgahjgk\n\n## ✉️ Mailer Setup\n\n### GMail SMTP Free Sending\nIf you have a gmail account this is a simple solution. You might want to create a new Gmail just for this app.\n\nAdd to your credentials the following:\n```\n$ EDITOR=\"code --wait\" rails credentials:edit\n\n# In the file opened add\nemail:\n  host: smtp.gmail.com\n  user_name: YOUR_GMAIL_EMAIL\n  password: YOUR_GMAIL_PASSWORD\n```\n\n### Mail Service\nYou will require a real domain that you own to send email from.\n\nSign up with a provider like https://sparkpost.com for a free plan.\n\nVerify your domain with them.\n\nSelect SMTP sending and get their config.\n\nAdd to your credentials the following:\n```\n$ EDITOR=\"code --wait\" rails credentials:edit\n\n# In the file opened add\nemail:\n  host: HOST_DOMAIN\n  user_name: PROVIDED_USER_NAME\n  password: PROVIDED_PASSWORD\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fechobind%2Fcat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fechobind%2Fcat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fechobind%2Fcat/lists"}