{"id":18760454,"url":"https://github.com/stefanbohacek/deploy-button","last_synced_at":"2026-05-04T12:38:35.268Z","repository":{"id":73637822,"uuid":"186257718","full_name":"stefanbohacek/deploy-button","owner":"stefanbohacek","description":"Proof of concept: Physical AWS deployment button.","archived":false,"fork":false,"pushed_at":"2019-05-15T13:33:51.000Z","size":27,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-04T00:53:51.699Z","etag":null,"topics":["aws","glitch","iot","littlebits","nodejs"],"latest_commit_sha":null,"homepage":"https://glitch.com/edit/#!/deploy-button","language":"JavaScript","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/stefanbohacek.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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,"zenodo":null}},"created_at":"2019-05-12T13:21:17.000Z","updated_at":"2024-05-06T21:32:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"55222622-c833-4bde-bd45-d327bbb0a908","html_url":"https://github.com/stefanbohacek/deploy-button","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/stefanbohacek/deploy-button","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefanbohacek%2Fdeploy-button","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefanbohacek%2Fdeploy-button/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefanbohacek%2Fdeploy-button/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefanbohacek%2Fdeploy-button/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stefanbohacek","download_url":"https://codeload.github.com/stefanbohacek/deploy-button/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefanbohacek%2Fdeploy-button/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32608120,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"ssl_error","status_checked_at":"2026-05-04T10:08:02.005Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["aws","glitch","iot","littlebits","nodejs"],"created_at":"2024-11-07T18:12:25.403Z","updated_at":"2026-05-04T12:38:35.263Z","avatar_url":"https://github.com/stefanbohacek.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![View of the littleBits cloudBit with a notification showing server deployment in progress](https://cdn.glitch.com/d1e6e429-cc0c-432d-8c23-2092bce7a350%2Fdeploy-button-thumbnail-1-small.png?1557746045867)\n\n# Proof of concept: Physical AWS deployment button\n## Made with littleBits cloudBit, AWS, and Glitch\n\n## Getting Started\n\n### 1. Glitch\n\nFirst, [remix the deploy-button project](https://glitch.com/edit/#!/remix/deploy-button). As we go through the following steps, we will be mostly working with the `.env` and `aws.js` files.\n\n### 2. littleBits cloudBit\n\nYou are going to need three littleBits modules:\n\n- [button](https://littlebits.com/products/button)\n- [cloudBit](https://littlebits.com/products/cloudbit)\n- one of the [power bits](https://littlebits.com/pages/search-results-page?page=1\u0026rb_collections=Power+Bits), I personally recommend [power (USB)](https://littlebits.com/products/usb-power)\n- optionally you can also get a [mounting board](https://littlebits.com/collections/all-bits-accessories/products/mounting-board) to keep your bits nicely together\n\nConnect your power source, button, and the littleBits cloudBit:\n\n![littleBits CloudBits setup](https://cdn.glitch.com/9f67720d-ad82-43b1-a7a5-2edc81e35b48%2FCloudBitSetup.png)\n\nOnce you set up your cloudBit using [littleBits Cloud Control](http://control.littlebitscloud.cc), add your Device ID and Access Token to the `.env` file in your Glitch app. (You can find these on the \"Settings\" page under \"Advanced\".)\n\n\n### 3. AWS\n\nThis part depends on your particular AWS setup. For example, at my current job, we use [Stacks](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html) which we deploy through [AWS OpsWorks](https://aws.amazon.com/opsworks/).\n\nYou can see inside `aws.js` that I'm using following functions:\n\n- [describeDeployments](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/OpsWorks.html#describeDeployments-property) to check if there are any deployments running on a specific stack\n- [createDeployment](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/OpsWorks.html#createDeployment-property) to deploy a stack\n\nFinding the Stack and Application IDs was a bit tricky for me, I pretty much just went to the deployment page, and copied the IDs from the URL  ¯\\\\_(ツ)\\_/¯\n\nYou will need to add your Amazon AWS Access Key Id and Secret Access Key to `.env`. You can find them on the [Security Credentials](https://console.aws.amazon.com/iam/home?region=us-east-1#/security_credentials) page.\n\n\n### 4. Slack (optional)\n\nYou can add a Slack token (see the [Slack legacy token generator](https://api.slack.com/custom-integrations/legacy-tokens)) and a channel ID (you can use Slack's [channels.list API method tester tool](https://api.slack.com/methods/channels.list/test) to find it) to get notified about deployments in your Slack group.\n\n![Running deployment](https://cdn.glitch.com/d1e6e429-cc0c-432d-8c23-2092bce7a350%2Fdeploy-button-slack-1-start-deploy.png?1557670793059)\n\n## Suggestions and improvements\n\n**Note: If you're not able to subscribe to your device, or are getting server errors, be sure to check if the [littleBits Cloud Control](http://control.littlebitscloud.cc/) is working.**\n\n- When a button is pressed, start a five second timer. If the button is pressed during these five seconds, cancel timer. When the five seconds are up, then run the deployment.\n- Same as above, but use the [Slack Dialog API](https://api.slack.com/dialogs) so that you can cancel deployment inside Slack. (You can add [Botkit](https://glitch.com/botkit) to your project to make working with Slack API easier.)\n- Add [more littleBits modules](https://littlebits.com/pages/search-results-page).\n\n## Attributions\n\n- This project was remixed from [littlebits-api](https://glitch.com/edit/#!/littlebits-api) created by [Jenn Schiffer](https://glitch.com/@jennschiffer) and [Gareth Wilson](https://glitch.com/@_gw).\n- Project icon: [EmojiOne/JoyPixels](https://www.joypixels.com/)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstefanbohacek%2Fdeploy-button","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstefanbohacek%2Fdeploy-button","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstefanbohacek%2Fdeploy-button/lists"}