{"id":23440889,"url":"https://github.com/tedconf/front_end_builds","last_synced_at":"2025-04-07T05:12:40.372Z","repository":{"id":21836305,"uuid":"25159363","full_name":"tedconf/front_end_builds","owner":"tedconf","description":"Rails engine to manage front end builds and deployments","archived":false,"fork":false,"pushed_at":"2023-04-15T23:12:21.000Z","size":2753,"stargazers_count":75,"open_issues_count":30,"forks_count":21,"subscribers_count":26,"default_branch":"master","last_synced_at":"2025-03-30T22:11:13.157Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/tedconf.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"MIT-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":"2014-10-13T13:18:29.000Z","updated_at":"2023-09-11T07:05:39.000Z","dependencies_parsed_at":"2024-06-21T15:22:24.544Z","dependency_job_id":"dff0c09a-d711-44e6-87f4-2c50f9ce9baa","html_url":"https://github.com/tedconf/front_end_builds","commit_stats":{"total_commits":333,"total_committers":15,"mean_commits":22.2,"dds":0.5315315315315315,"last_synced_commit":"4a9abcdafcc1b6469fe1e5c56e9d00daed4f2e5d"},"previous_names":[],"tags_count":38,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tedconf%2Ffront_end_builds","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tedconf%2Ffront_end_builds/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tedconf%2Ffront_end_builds/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tedconf%2Ffront_end_builds/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tedconf","download_url":"https://codeload.github.com/tedconf/front_end_builds/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247595335,"owners_count":20963943,"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-12-23T16:20:17.695Z","updated_at":"2025-04-07T05:12:40.342Z","avatar_url":"https://github.com/tedconf.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Deprecation Notice\n\nTED has shifted to React and will no longer maintain this application/library. If you wish to continue using this application/library, please create a pull request and repo ownership can be transferred. This repository will be archived at the end of 2022.\n\nYou can read documentation on how we curently use FrontEndBuilds in [Confluence](https://tedconferences.atlassian.net/l/cp/9LYpxC2z).\n\n# SSH Key Warning\nOnly **RSA keys** are supported for authentication. This means you cannot and should not use your regular TED SSH public key for front end builds deployments. Make sure you're checking your `FEB_DEPLOY_KEY` value in the environment and that it is pointing to an RSA key. You can't generate the keys using ssh-add you'll need the use [something like this](https://www.scottbrady91.com/openssl/creating-rsa-keys-using-openssl).\n\n# FrontEndBuilds\n\nFront-End Builds (FEB) lets you easily serve remotely-hosted static (JS) applications from your Rails apps. For example, you can host a Rails backend on Heroku, an Ember.js frontend on S3, and use FEB to connect the two.\n\n![](https://camo.githubusercontent.com/175c23176da269c03c5d3f51a8feef3bdb50fc8a/687474703a2f2f63762d73637265656e73686f74732e73332e616d617a6f6e6177732e636f6d2f41646d696e5f323031352d30332d31305f30302d35312d32352e706e67)\n\n![](https://camo.githubusercontent.com/979b56c0651251f4cf428ff354990ee167aeaf63/687474703a2f2f63762d73637265656e73686f74732e73332e616d617a6f6e6177732e636f6d2f41646d696e5f323031352d30332d31305f30302d35302d35382e706e67)\n\nBenefits:\n  - JS app can be deployed without redeploying your Rails app\n  - Easily smoke test SHAs, branches and releases in your production environment with query params:\n    http://your-app.com/my-ember-app?branch=new-feature\n\nFeatures:\n  - Admin interface lets you easily view, rollback and activate different app versions\n\nThe motivation for this gem came from [Luke Melia's RailsConf2014 talk](http://www.confreaks.com/videos/3324-railsconf-lightning-fast-deployment-of-your-rails-backed-javascript-app).\n\n\n## Installation\n\nAdd this line to your application's Gemfile:\n\n```\ngem 'front_end_builds'\n```\n\nAnd then execute:\n\n```\n$ bundle\n```\n\nFront-End Builds brings some migrations along with it. To run, execute\n\n```\nrake front_end_builds:install:migrations\nrake db:migrate\n```\n\n## Usage\n\nFirst, mount the admin interface in `routes.rb`:\n\n```rb\nRails.application.routes.draw do\n\n  mount FrontEndBuilds::Engine, at: '/frontends'\n\nend\n```\n\nYou should mount this under an authenticated route using your application's\nauth strategy, as anyone with access to the admin will be able to affect the\nproduction builds of your front end apps.a\n\nIf you don't want to set up an HTML auth strategy, you can do something like this:\n\n```rb\n# routes.rb\nprotected_app = Rack::Auth::Basic.new(FrontEndBuilds::Engine) do |username, password|\n  username == 'admin' \u0026\u0026 password == (Rails.env.production? ? ENV['FEB_ADMIN_PASSWORD'] : '')\nend\nmount protected_app, at: '/frontends'\n```\n\nThis will use basic HTTP auth to secure access to your admin ui. Just set the ENV variable in production, and use it to gain access. If you're deploying to Heroku, use [Config Vars](https://devcenter.heroku.com/articles/config-vars).\n\nNow, to create a new app, first add a `front_end` route pointing to your app in `routes.rb`:\n\n```rb\nRails.application.routes.draw do\n\n  front_end 'app-name', '/app-route'\n\nend\n```\n\nVisit the admin (at whatever URL you mounted the engine above), create a\nnew app named `app-name`, and you'll receive  instructions on how to\nstart pushing builds.\n\nNote:\nIf you're using this engine to serve an ember app at the Root, be sure to put all other Rails routes above the `front_end` route - as this takes priority over all routes below it!\n\n```rb\nRails.application.routes.draw do\n  # All other Rails routes here\n\n  front_end 'app-name', '/'\nend\n```\n\nAt this point you should be able to test the setup in dev by running\n\n```\nbin/rails server\n```\n\nVisit `/frontends` to access the Admin interface, and visit the `front_end` route, which will initially return 404 Not found since you haven't configured and deployed any front-end builds yet.\n\n### Example Next Steps with Heroku and Ember.js\n\nA common configuration is to deploy your FEB-enabled Rails app to Heroku, and deploy your Ember.js frontend to S3:\n\n1. Deploy your Rails app to Heroku\n2. Configure your frontend app with [ember-cli-deploy-front-end-builds-pack](https://github.com/tedconf/ember-cli-deploy-front-end-builds-pack)\n3. Access your Rails app's FEB Admin interface, add an app, and configure a public SSH key that corresponds to the private key you plan on using to sign your Ember.js builds\n4. Deploy your frontend app. If all goes well, it should build the Ember app, push the static assets to S3, then POST to your Rails app. You'll see the build in the Admin interface, and should be able to access your frontend at the `front_end` route you specified.\n\n\n## Development\n\n**Admin**\n\nThe Admin interface is an Ember CLI app within feb. A distribution is kept\nwithin the gem, and must be updated whenever admin code is updated.\n\nAfter changing the admin app, run\n\n```\nrake admin:build\n```\n\nto store a fresh distribution.\n\n**Running tests**\n\n```\n# Rails tests\nrspec\n\n# Admin tests, from /admin dir\nember test\n```\n* Auto live setting\n* make posts idempotent (i think they are), but dont insert a new row if\n  it already exists.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftedconf%2Ffront_end_builds","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftedconf%2Ffront_end_builds","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftedconf%2Ffront_end_builds/lists"}