AppCloud in Chrome Web Store!

We’ve added Engine Yard AppCloud to the Chrome Web Store. w00t!

Now you might be asking yourself why? “I can already access AppCloud by going to http://cloud.engineyard.com.” You’ve probably got a bookmark for it.

Well there are a few reasons for the creation of the Engine Yard AppCloud Chrome web application:

  • One large button in the “new tab” page in Chrome.
  • It was dead simple to create (I explain how below).
  • I wanted to be listed as a member in the Engine Yard organization account on GitHub like all the other cool kids.

Head on over to the EY AppCloud Chrome Web Store and click the install button.

How to Create a Hosted App on Chrome Web Store

It was really easy to add AppCloud to the Chrome Web Store. As an example for your own web application, here is our repository.

The two documents that were most helpful were the Hosted Apps documentation and the Getting Started Tutorial. All you need to have is a manifest.json file and a 128x icon file.

The template that you are presented with for the manifest.json is:

{
"name": "EY AppCloud",
"description": "Your Engine Yard AppCloud account at your fingertips.",
"version": "1.0.0",
"app": {
  "urls": [
    "http://engineyard.com/"
  ],
  "launch": {
    "web_url": "https://cloud.engineyard.com"
  }
},
"icons": {
  "128": "icon_128.png"
},
"permissions": [
  "unlimitedStorage",
  "notifications"
]
}

For version 1.0.0 of the AppCloud app we did not need to have the permissions section so that was just taken out of our application. Google is pretty strict about the size of the icon so make sure that you have one that is 128x128 at least for now. After you have your icon and manifest.json file you’ll need to zip up the file. On Windows, you can do this by right-clicking myapp and choosing the menu item Send to > Compressed (zipped) folder. On Mac OS X, control-click myapp and choose Compress “myapp”. If you like the command-line, which I do, you can do zip -r myapp.zip myapp.

However, when we created the repository Dr Nic thought we should utilize Rake. So, we packaged our application by utilizing Rake::PackageTask. We have a Rakefile in our repo that has:

Rake::PackageTask.new("chrome-app", "VERSION") do |p|
  p.need_zip = true
  p.package_files.include("icon*.png")
  p.package_files.include("manifest.json")
end

We then created a simple release rake command that commits our changes into our git repo and then packages the two files for us to upload into the web store.