From 034978f34a3fd461dc82678c4f73b937ce7182f9 Mon Sep 17 00:00:00 2001 From: Egor! Date: Fri, 7 Oct 2016 15:28:33 -0700 Subject: [PATCH] WIP - everything is FUBAR: splitting stylesheets, splitting directories for future mobile work --- .gitignore | 17 - app/pods/components/huegasm-app/template.hbs | 25 -- mobile/TODO | Bin 0 -> 4544 bytes .bowerrc => web/.bowerrc | 0 .editorconfig => web/.editorconfig | 0 .ember-cli => web/.ember-cli | 0 web/.gitignore | 18 + .jshintrc => web/.jshintrc | 0 .travis.yml => web/.travis.yml | 11 +- .watchmanconfig => web/.watchmanconfig | 0 web/README.md | 53 +++ {app => web/app}/app.js | 0 {app => web/app}/index.html | 0 .../components/add-group-modal/component.js | 0 .../components/add-group-modal/template.hbs | 0 .../add-soundcloud-sound-modal/component.js | 0 .../add-soundcloud-sound-modal/template.hbs | 0 .../components/bridge-finder/component.js | 0 .../components/bridge-finder/template.hbs | 0 .../pods/components/color-picker/component.js | 0 .../pods/components/color-picker/template.hbs | 0 .../delete-group-modal/component.js | 0 .../delete-group-modal/template.hbs | 0 .../pods/components/groups-list/component.js | 0 .../pods/components/groups-list/template.hbs | 0 .../pods/components/hue-controls/component.js | 0 .../pods/components/hue-controls/template.hbs | 0 .../pods/components/huegasm-app/component.js | 0 .../pods/components/huegasm-app/template.hbs | 39 +++ .../pods/components/light-group/component.js | 0 .../pods/components/light-group/template.hbs | 0 .../pods/components/lights-tab/component.js | 0 .../pods/components/lights-tab/template.hbs | 0 .../pods/components/music-tab/component.js | 5 +- .../components/music-tab/mixins/helpers.js | 0 .../components/music-tab/mixins/visualizer.js | 0 .../pods/components/music-tab/template.hbs | 0 {app => web/app}/resolver.js | 0 {app => web/app}/router.js | 0 {app => web/app}/styles/app.scss | 313 +----------------- .../app/styles/bridge-finder.scss | 0 web/app/styles/common.scss | 11 + web/app/styles/dimmer.scss | 93 ++++++ {app => web/app}/styles/fancy-speaker.scss | 0 web/app/styles/index.scss | 53 +++ web/app/styles/introjs.scss | 30 ++ web/app/styles/paper.scss | 109 ++++++ web/app/styles/variables.scss | 7 + {app => web/app}/templates/application.hbs | 0 bower.json => web/bower.json | 0 {config => web/config}/environment.js | 0 ember-cli-build.js => web/ember-cli-build.js | 0 package.json => web/package.json | 2 +- .../public}/android-chrome-144x144.png | Bin .../public}/android-chrome-192x192.png | Bin .../public}/android-chrome-36x36.png | Bin .../public}/android-chrome-48x48.png | Bin .../public}/android-chrome-72x72.png | Bin .../public}/android-chrome-96x96.png | Bin .../public}/apple-touch-icon-114x114.png | Bin .../public}/apple-touch-icon-120x120.png | Bin .../public}/apple-touch-icon-144x144.png | Bin .../public}/apple-touch-icon-152x152.png | Bin .../public}/apple-touch-icon-180x180.png | Bin .../public}/apple-touch-icon-57x57.png | Bin .../public}/apple-touch-icon-60x60.png | Bin .../public}/apple-touch-icon-72x72.png | Bin .../public}/apple-touch-icon-76x76.png | Bin .../public}/apple-touch-icon-precomposed.png | Bin {public => web/public}/apple-touch-icon.png | Bin .../public}/assets/images/colormap.png | Bin .../public}/assets/images/lights/a19.svg | 0 .../public}/assets/images/lights/a19w.svg | 0 .../public}/assets/images/lights/br30.svg | 0 .../public}/assets/images/lights/br30w.svg | 0 .../public}/assets/images/lights/gu10.svg | 0 .../public}/assets/images/lights/gu10w.svg | 0 .../public}/assets/images/lights/huego.svg | 0 .../public}/assets/images/lights/huegow.svg | 0 .../public}/assets/images/lights/lc_aura.svg | 0 .../public}/assets/images/lights/lc_auraw.svg | 0 .../public}/assets/images/lights/lc_bloom.svg | 0 .../assets/images/lights/lc_bloomw.svg | 0 .../public}/assets/images/lights/lc_iris.svg | 0 .../public}/assets/images/lights/lc_irisw.svg | 0 .../assets/images/lights/lightstrip.svg | 0 .../assets/images/lights/lightstripw.svg | 0 .../assets/images/lights/storylight.svg | 0 .../assets/images/lights/storylightw.svg | 0 {public => web/public}/assets/images/logo.png | Bin .../public}/assets/images/missingArtwork.png | Bin .../assets/images/pressButtonBridge.png | Bin .../public}/assets/images/sc-white-sm.png | Bin .../public}/assets/images/sc-white.png | Bin {public => web/public}/browserconfig.xml | 0 {public => web/public}/crossdomain.xml | 0 {public => web/public}/favicon-16x16.png | Bin {public => web/public}/favicon-194x194.png | Bin {public => web/public}/favicon-32x32.png | Bin {public => web/public}/favicon-96x96.png | Bin {public => web/public}/favicon.ico | Bin {public => web/public}/humans.txt | 0 {public => web/public}/manifest.json | 0 {public => web/public}/mstile-144x144.png | Bin {public => web/public}/mstile-150x150.png | Bin {public => web/public}/mstile-310x150.png | Bin {public => web/public}/mstile-310x310.png | Bin {public => web/public}/mstile-70x70.png | Bin {public => web/public}/robots.txt | 0 {public => web/public}/safari-pinned-tab.svg | 0 testem.js => web/testem.js | 0 {tests => web/tests}/.jshintrc | 0 {tests => web/tests}/helpers/destroy-app.js | 0 .../tests}/helpers/module-for-acceptance.js | 0 {tests => web/tests}/helpers/resolver.js | 0 {tests => web/tests}/helpers/start-app.js | 0 {tests => web/tests}/index.html | 0 .../add-group-modal/component-test.js | 0 .../component-test.js | 0 .../bridge-finder/component-test.js | 0 .../components/color-picker/component-test.js | 0 .../delete-group-modal/component-test.js | 0 .../components/groups-list/component-test.js | 0 .../components/hue-controls/component-test.js | 0 .../components/huegasm-app/component-test.js | 0 .../components/light-group/component-test.js | 0 .../components/lights-tab/component-test.js | 0 .../components/music-tab/component-test.js | 0 {tests => web/tests}/test-helper.js | 0 web/tests/unit/.gitkeep | 0 {vendor => web/vendor}/dancer.js | 0 131 files changed, 431 insertions(+), 355 deletions(-) delete mode 100644 app/pods/components/huegasm-app/template.hbs create mode 100644 mobile/TODO rename .bowerrc => web/.bowerrc (100%) rename .editorconfig => web/.editorconfig (100%) rename .ember-cli => web/.ember-cli (100%) create mode 100644 web/.gitignore rename .jshintrc => web/.jshintrc (100%) rename .travis.yml => web/.travis.yml (55%) rename .watchmanconfig => web/.watchmanconfig (100%) create mode 100644 web/README.md rename {app => web/app}/app.js (100%) rename {app => web/app}/index.html (100%) rename {app => web/app}/pods/components/add-group-modal/component.js (100%) rename {app => web/app}/pods/components/add-group-modal/template.hbs (100%) rename {app => web/app}/pods/components/add-soundcloud-sound-modal/component.js (100%) rename {app => web/app}/pods/components/add-soundcloud-sound-modal/template.hbs (100%) rename {app => web/app}/pods/components/bridge-finder/component.js (100%) rename {app => web/app}/pods/components/bridge-finder/template.hbs (100%) rename {app => web/app}/pods/components/color-picker/component.js (100%) rename {app => web/app}/pods/components/color-picker/template.hbs (100%) rename {app => web/app}/pods/components/delete-group-modal/component.js (100%) rename {app => web/app}/pods/components/delete-group-modal/template.hbs (100%) rename {app => web/app}/pods/components/groups-list/component.js (100%) rename {app => web/app}/pods/components/groups-list/template.hbs (100%) rename {app => web/app}/pods/components/hue-controls/component.js (100%) rename {app => web/app}/pods/components/hue-controls/template.hbs (100%) rename {app => web/app}/pods/components/huegasm-app/component.js (100%) create mode 100644 web/app/pods/components/huegasm-app/template.hbs rename {app => web/app}/pods/components/light-group/component.js (100%) rename {app => web/app}/pods/components/light-group/template.hbs (100%) rename {app => web/app}/pods/components/lights-tab/component.js (100%) rename {app => web/app}/pods/components/lights-tab/template.hbs (100%) rename {app => web/app}/pods/components/music-tab/component.js (99%) rename {app => web/app}/pods/components/music-tab/mixins/helpers.js (100%) rename {app => web/app}/pods/components/music-tab/mixins/visualizer.js (100%) rename {app => web/app}/pods/components/music-tab/template.hbs (100%) rename {app => web/app}/resolver.js (100%) rename {app => web/app}/router.js (100%) rename {app => web/app}/styles/app.scss (72%) rename tests/unit/.gitkeep => web/app/styles/bridge-finder.scss (100%) create mode 100644 web/app/styles/common.scss create mode 100644 web/app/styles/dimmer.scss rename {app => web/app}/styles/fancy-speaker.scss (100%) create mode 100644 web/app/styles/index.scss create mode 100644 web/app/styles/introjs.scss create mode 100644 web/app/styles/paper.scss create mode 100644 web/app/styles/variables.scss rename {app => web/app}/templates/application.hbs (100%) rename bower.json => web/bower.json (100%) rename {config => web/config}/environment.js (100%) rename ember-cli-build.js => web/ember-cli-build.js (100%) rename package.json => web/package.json (97%) rename {public => web/public}/android-chrome-144x144.png (100%) rename {public => web/public}/android-chrome-192x192.png (100%) rename {public => web/public}/android-chrome-36x36.png (100%) rename {public => web/public}/android-chrome-48x48.png (100%) rename {public => web/public}/android-chrome-72x72.png (100%) rename {public => web/public}/android-chrome-96x96.png (100%) rename {public => web/public}/apple-touch-icon-114x114.png (100%) rename {public => web/public}/apple-touch-icon-120x120.png (100%) rename {public => web/public}/apple-touch-icon-144x144.png (100%) rename {public => web/public}/apple-touch-icon-152x152.png (100%) rename {public => web/public}/apple-touch-icon-180x180.png (100%) rename {public => web/public}/apple-touch-icon-57x57.png (100%) rename {public => web/public}/apple-touch-icon-60x60.png (100%) rename {public => web/public}/apple-touch-icon-72x72.png (100%) rename {public => web/public}/apple-touch-icon-76x76.png (100%) rename {public => web/public}/apple-touch-icon-precomposed.png (100%) rename {public => web/public}/apple-touch-icon.png (100%) rename {public => web/public}/assets/images/colormap.png (100%) rename {public => web/public}/assets/images/lights/a19.svg (100%) rename {public => web/public}/assets/images/lights/a19w.svg (100%) rename {public => web/public}/assets/images/lights/br30.svg (100%) rename {public => web/public}/assets/images/lights/br30w.svg (100%) rename {public => web/public}/assets/images/lights/gu10.svg (100%) rename {public => web/public}/assets/images/lights/gu10w.svg (100%) rename {public => web/public}/assets/images/lights/huego.svg (100%) rename {public => web/public}/assets/images/lights/huegow.svg (100%) rename {public => web/public}/assets/images/lights/lc_aura.svg (100%) rename {public => web/public}/assets/images/lights/lc_auraw.svg (100%) rename {public => web/public}/assets/images/lights/lc_bloom.svg (100%) rename {public => web/public}/assets/images/lights/lc_bloomw.svg (100%) rename {public => web/public}/assets/images/lights/lc_iris.svg (100%) rename {public => web/public}/assets/images/lights/lc_irisw.svg (100%) rename {public => web/public}/assets/images/lights/lightstrip.svg (100%) rename {public => web/public}/assets/images/lights/lightstripw.svg (100%) rename {public => web/public}/assets/images/lights/storylight.svg (100%) rename {public => web/public}/assets/images/lights/storylightw.svg (100%) rename {public => web/public}/assets/images/logo.png (100%) rename {public => web/public}/assets/images/missingArtwork.png (100%) rename {public => web/public}/assets/images/pressButtonBridge.png (100%) rename {public => web/public}/assets/images/sc-white-sm.png (100%) rename {public => web/public}/assets/images/sc-white.png (100%) rename {public => web/public}/browserconfig.xml (100%) rename {public => web/public}/crossdomain.xml (100%) rename {public => web/public}/favicon-16x16.png (100%) rename {public => web/public}/favicon-194x194.png (100%) rename {public => web/public}/favicon-32x32.png (100%) rename {public => web/public}/favicon-96x96.png (100%) rename {public => web/public}/favicon.ico (100%) rename {public => web/public}/humans.txt (100%) rename {public => web/public}/manifest.json (100%) rename {public => web/public}/mstile-144x144.png (100%) rename {public => web/public}/mstile-150x150.png (100%) rename {public => web/public}/mstile-310x150.png (100%) rename {public => web/public}/mstile-310x310.png (100%) rename {public => web/public}/mstile-70x70.png (100%) rename {public => web/public}/robots.txt (100%) rename {public => web/public}/safari-pinned-tab.svg (100%) rename testem.js => web/testem.js (100%) rename {tests => web/tests}/.jshintrc (100%) rename {tests => web/tests}/helpers/destroy-app.js (100%) rename {tests => web/tests}/helpers/module-for-acceptance.js (100%) rename {tests => web/tests}/helpers/resolver.js (100%) rename {tests => web/tests}/helpers/start-app.js (100%) rename {tests => web/tests}/index.html (100%) rename {tests => web/tests}/integration/pods/components/add-group-modal/component-test.js (100%) rename {tests => web/tests}/integration/pods/components/add-soundcloud-sound-modal/component-test.js (100%) rename {tests => web/tests}/integration/pods/components/bridge-finder/component-test.js (100%) rename {tests => web/tests}/integration/pods/components/color-picker/component-test.js (100%) rename {tests => web/tests}/integration/pods/components/delete-group-modal/component-test.js (100%) rename {tests => web/tests}/integration/pods/components/groups-list/component-test.js (100%) rename {tests => web/tests}/integration/pods/components/hue-controls/component-test.js (100%) rename {tests => web/tests}/integration/pods/components/huegasm-app/component-test.js (100%) rename {tests => web/tests}/integration/pods/components/light-group/component-test.js (100%) rename {tests => web/tests}/integration/pods/components/lights-tab/component-test.js (100%) rename {tests => web/tests}/integration/pods/components/music-tab/component-test.js (100%) rename {tests => web/tests}/test-helper.js (100%) create mode 100644 web/tests/unit/.gitkeep rename {vendor => web/vendor}/dancer.js (100%) diff --git a/.gitignore b/.gitignore index 8756776..85e7c1d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,18 +1 @@ -# See http://help.github.com/ignore-files/ for more about ignoring files. - -# compiled output -/dist -/tmp - -# dependencies -/node_modules -/bower_components - -# misc -/.sass-cache -/connect.lock -/coverage/* -/libpeerconnection.log -npm-debug.log -testem.log /.idea/ diff --git a/app/pods/components/huegasm-app/template.hbs b/app/pods/components/huegasm-app/template.hbs deleted file mode 100644 index 426721c..0000000 --- a/app/pods/components/huegasm-app/template.hbs +++ /dev/null @@ -1,25 +0,0 @@ -{{#if bridgeUsername}} - {{hue-controls bridgeIp=bridgeIp bridgeUsername=bridgeUsername trial=trial dimmerOn=dimmerOn storage=storage}} -{{else}} - - {{#if ready}} - {{bridge-finder bridgeIp=bridgeIp bridgeUsername=bridgeUsername trial=trial storage=storage}} - {{else}} -
-
Huegasm
-

Your lights, meet your music. Huegasm.

-

Huegasm is a free web application for managing and synchronizing your Philips Hue lights with the beat of your music.

-
-
- -
-
- {{#paper-button raised=true primary=true action="isReady" class="goButton center-block"}}Go!{{/paper-button}} -
- {{/if}} -{{/if}} - - \ No newline at end of file diff --git a/mobile/TODO b/mobile/TODO new file mode 100644 index 0000000000000000000000000000000000000000..e63c25323a2203faf5bc11b08eaca2f75fb6013b GIT binary patch literal 4544 zcmeHJZ)j6j6hE(Nw3WIg?QD};ZNiiW>xbAsq9Pg-1x09TEkjsU>e{Z3cFk(j>GtJS z9dkNC*^mxI*@v;QQRom6r_;1$U_nsyg9vkUMf|oYaSS$RvfuCZ-udWi7P^5<`U^Mb z+;i`{=bm%#`<+)8ULwDXNWCGh97vfXVnCz;cJ~?=VmlrT4IgcI(RyPyrSIV4`KyE7M&YZ(*JqyEi25;=jHW|L2u5W!m!u@u8ZCrL42Pw2wqetAY`R0~xtKFc=?>^_ zV`7~==<{szilNDfF?VtB}Drmo2+UGF*$E4mcQ*Q zlYjG-eMSAzo9+{LBoS>tl%}70H2eAKb70P=1MrW<=iIN(-9N2E|I9Vvly%_vUNHV% z@L)44K@B)Q2##+>C8|Mf2xF`RwpxreV`e>S!xNDI@pWtEle{$*H1BI^pYtE^|6lbd z+xS^0V`>wOKaQyOApSQHUk~C7!qQ?@!M9}@#+j8`5kJq%RGV<3=EhOiI}s(nJvQMhq|N#gprr?uzYCV9BY=}<>;&u7RM2s2X`k~f z;^%p7vv1;G>J!mV{7+*ki@)dN!4O&*+D0^u$vi|Jr;U=x#6M&2olgE1ZFhZjJWnbs h&fF&dkn{LF`A>0x=~Fg)oyeAdXXa&BC!dz5KLOxACUgJ* literal 0 HcmV?d00001 diff --git a/.bowerrc b/web/.bowerrc similarity index 100% rename from .bowerrc rename to web/.bowerrc diff --git a/.editorconfig b/web/.editorconfig similarity index 100% rename from .editorconfig rename to web/.editorconfig diff --git a/.ember-cli b/web/.ember-cli similarity index 100% rename from .ember-cli rename to web/.ember-cli diff --git a/web/.gitignore b/web/.gitignore new file mode 100644 index 0000000..8756776 --- /dev/null +++ b/web/.gitignore @@ -0,0 +1,18 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp + +# dependencies +/node_modules +/bower_components + +# misc +/.sass-cache +/connect.lock +/coverage/* +/libpeerconnection.log +npm-debug.log +testem.log +/.idea/ diff --git a/.jshintrc b/web/.jshintrc similarity index 100% rename from .jshintrc rename to web/.jshintrc diff --git a/.travis.yml b/web/.travis.yml similarity index 55% rename from .travis.yml rename to web/.travis.yml index 66dd107..ac9eaa1 100644 --- a/.travis.yml +++ b/web/.travis.yml @@ -1,7 +1,7 @@ --- language: node_js node_js: - - "0.12" + - "4" sudo: false @@ -10,12 +10,13 @@ cache: - node_modules before_install: - - export PATH=/usr/local/phantomjs-2.0.0/bin:$PATH - - "npm config set spin false" - - "npm install -g npm@^2" + - npm config set spin false + - npm install -g bower + - bower --version + - npm install phantomjs-prebuilt + - node_modules/phantomjs-prebuilt/bin/phantomjs --version install: - - npm install -g bower - npm install - bower install diff --git a/.watchmanconfig b/web/.watchmanconfig similarity index 100% rename from .watchmanconfig rename to web/.watchmanconfig diff --git a/web/README.md b/web/README.md new file mode 100644 index 0000000..6be258e --- /dev/null +++ b/web/README.md @@ -0,0 +1,53 @@ +# Huegasm + +This README outlines the details of collaborating on this Ember application. +A short introduction of this app could easily go here. + +## Prerequisites + +You will need the following things properly installed on your computer. + +* [Git](http://git-scm.com/) +* [Node.js](http://nodejs.org/) (with NPM) +* [Bower](http://bower.io/) +* [Ember CLI](http://ember-cli.com/) +* [PhantomJS](http://phantomjs.org/) + +## Installation + +* `git clone ` this repository +* `cd huegasm` +* `npm install` +* `bower install` + +## Running / Development + +* `ember serve` +* Visit your app at [http://localhost:4200](http://localhost:4200). + +### Code Generators + +Make use of the many generators for code, try `ember help generate` for more details + +### Running Tests + +* `ember test` +* `ember test --server` + +### Building + +* `ember build` (development) +* `ember build --environment production` (production) + +### Deploying + +Specify what it takes to deploy your app. + +## Further Reading / Useful Links + +* [ember.js](http://emberjs.com/) +* [ember-cli](http://ember-cli.com/) +* Development Browser Extensions + * [ember inspector for chrome](https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi) + * [ember inspector for firefox](https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/) + diff --git a/app/app.js b/web/app/app.js similarity index 100% rename from app/app.js rename to web/app/app.js diff --git a/app/index.html b/web/app/index.html similarity index 100% rename from app/index.html rename to web/app/index.html diff --git a/app/pods/components/add-group-modal/component.js b/web/app/pods/components/add-group-modal/component.js similarity index 100% rename from app/pods/components/add-group-modal/component.js rename to web/app/pods/components/add-group-modal/component.js diff --git a/app/pods/components/add-group-modal/template.hbs b/web/app/pods/components/add-group-modal/template.hbs similarity index 100% rename from app/pods/components/add-group-modal/template.hbs rename to web/app/pods/components/add-group-modal/template.hbs diff --git a/app/pods/components/add-soundcloud-sound-modal/component.js b/web/app/pods/components/add-soundcloud-sound-modal/component.js similarity index 100% rename from app/pods/components/add-soundcloud-sound-modal/component.js rename to web/app/pods/components/add-soundcloud-sound-modal/component.js diff --git a/app/pods/components/add-soundcloud-sound-modal/template.hbs b/web/app/pods/components/add-soundcloud-sound-modal/template.hbs similarity index 100% rename from app/pods/components/add-soundcloud-sound-modal/template.hbs rename to web/app/pods/components/add-soundcloud-sound-modal/template.hbs diff --git a/app/pods/components/bridge-finder/component.js b/web/app/pods/components/bridge-finder/component.js similarity index 100% rename from app/pods/components/bridge-finder/component.js rename to web/app/pods/components/bridge-finder/component.js diff --git a/app/pods/components/bridge-finder/template.hbs b/web/app/pods/components/bridge-finder/template.hbs similarity index 100% rename from app/pods/components/bridge-finder/template.hbs rename to web/app/pods/components/bridge-finder/template.hbs diff --git a/app/pods/components/color-picker/component.js b/web/app/pods/components/color-picker/component.js similarity index 100% rename from app/pods/components/color-picker/component.js rename to web/app/pods/components/color-picker/component.js diff --git a/app/pods/components/color-picker/template.hbs b/web/app/pods/components/color-picker/template.hbs similarity index 100% rename from app/pods/components/color-picker/template.hbs rename to web/app/pods/components/color-picker/template.hbs diff --git a/app/pods/components/delete-group-modal/component.js b/web/app/pods/components/delete-group-modal/component.js similarity index 100% rename from app/pods/components/delete-group-modal/component.js rename to web/app/pods/components/delete-group-modal/component.js diff --git a/app/pods/components/delete-group-modal/template.hbs b/web/app/pods/components/delete-group-modal/template.hbs similarity index 100% rename from app/pods/components/delete-group-modal/template.hbs rename to web/app/pods/components/delete-group-modal/template.hbs diff --git a/app/pods/components/groups-list/component.js b/web/app/pods/components/groups-list/component.js similarity index 100% rename from app/pods/components/groups-list/component.js rename to web/app/pods/components/groups-list/component.js diff --git a/app/pods/components/groups-list/template.hbs b/web/app/pods/components/groups-list/template.hbs similarity index 100% rename from app/pods/components/groups-list/template.hbs rename to web/app/pods/components/groups-list/template.hbs diff --git a/app/pods/components/hue-controls/component.js b/web/app/pods/components/hue-controls/component.js similarity index 100% rename from app/pods/components/hue-controls/component.js rename to web/app/pods/components/hue-controls/component.js diff --git a/app/pods/components/hue-controls/template.hbs b/web/app/pods/components/hue-controls/template.hbs similarity index 100% rename from app/pods/components/hue-controls/template.hbs rename to web/app/pods/components/hue-controls/template.hbs diff --git a/app/pods/components/huegasm-app/component.js b/web/app/pods/components/huegasm-app/component.js similarity index 100% rename from app/pods/components/huegasm-app/component.js rename to web/app/pods/components/huegasm-app/component.js diff --git a/web/app/pods/components/huegasm-app/template.hbs b/web/app/pods/components/huegasm-app/template.hbs new file mode 100644 index 0000000..c4b6684 --- /dev/null +++ b/web/app/pods/components/huegasm-app/template.hbs @@ -0,0 +1,39 @@ +{{#if bridgeUsername}} + {{hue-controls bridgeIp=bridgeIp bridgeUsername=bridgeUsername trial=trial dimmerOn=dimmerOn storage=storage}} +{{else}} + {{#if ready}} + {{bridge-finder bridgeIp=bridgeIp bridgeUsername=bridgeUsername trial=trial storage=storage}} + {{else}} +
+
+ Huegasm +
+ +

+ Your lights, meet your music. Huegasm. +

+

+ Huegasm is a free web application for managing and synchronizing your Philips Hue lights with the beat of your music. +

+ +
+
+ +
+
+ {{#paper-button raised=true primary=true action="isReady" class="goButton center-block"}}Go!{{/paper-button}} +
+ {{/if}} +{{/if}} + + \ No newline at end of file diff --git a/app/pods/components/light-group/component.js b/web/app/pods/components/light-group/component.js similarity index 100% rename from app/pods/components/light-group/component.js rename to web/app/pods/components/light-group/component.js diff --git a/app/pods/components/light-group/template.hbs b/web/app/pods/components/light-group/template.hbs similarity index 100% rename from app/pods/components/light-group/template.hbs rename to web/app/pods/components/light-group/template.hbs diff --git a/app/pods/components/lights-tab/component.js b/web/app/pods/components/lights-tab/component.js similarity index 100% rename from app/pods/components/lights-tab/component.js rename to web/app/pods/components/lights-tab/component.js diff --git a/app/pods/components/lights-tab/template.hbs b/web/app/pods/components/lights-tab/template.hbs similarity index 100% rename from app/pods/components/lights-tab/template.hbs rename to web/app/pods/components/lights-tab/template.hbs diff --git a/app/pods/components/music-tab/component.js b/web/app/pods/components/music-tab/component.js similarity index 99% rename from app/pods/components/music-tab/component.js rename to web/app/pods/components/music-tab/component.js index 521a677..5d8eedf 100644 --- a/app/pods/components/music-tab/component.js +++ b/web/app/pods/components/music-tab/component.js @@ -7,7 +7,8 @@ const { observer, isEmpty, isNone, - $ + $, + run } = Ember; export default Component.extend(helperMixin, visualizerMixin, { @@ -242,7 +243,7 @@ export default Component.extend(helperMixin, visualizerMixin, { dragLeave(){ // need to delay the dragLeave notification to avoid flickering ( hovering over some page elements causes this event to be sent ) - this.set('dragLeaveTimeoutHandle', setTimeout(()=>{ self.set('dragging', false); }, 500)); + this.set('dragLeaveTimeoutHandle', setTimeout(()=>{ this.set('dragging', false); }, 500)); }, simulateKick(/*mag, ratioKickMag*/) { diff --git a/app/pods/components/music-tab/mixins/helpers.js b/web/app/pods/components/music-tab/mixins/helpers.js similarity index 100% rename from app/pods/components/music-tab/mixins/helpers.js rename to web/app/pods/components/music-tab/mixins/helpers.js diff --git a/app/pods/components/music-tab/mixins/visualizer.js b/web/app/pods/components/music-tab/mixins/visualizer.js similarity index 100% rename from app/pods/components/music-tab/mixins/visualizer.js rename to web/app/pods/components/music-tab/mixins/visualizer.js diff --git a/app/pods/components/music-tab/template.hbs b/web/app/pods/components/music-tab/template.hbs similarity index 100% rename from app/pods/components/music-tab/template.hbs rename to web/app/pods/components/music-tab/template.hbs diff --git a/app/resolver.js b/web/app/resolver.js similarity index 100% rename from app/resolver.js rename to web/app/resolver.js diff --git a/app/router.js b/web/app/router.js similarity index 100% rename from app/router.js rename to web/app/router.js diff --git a/app/styles/app.scss b/web/app/styles/app.scss similarity index 72% rename from app/styles/app.scss rename to web/app/styles/app.scss index 25df08e..7b46b51 100644 --- a/app/styles/app.scss +++ b/web/app/styles/app.scss @@ -1,18 +1,16 @@ -@import 'ember-paper'; @import 'bower_components/bootstrap-sass/assets/stylesheets/_bootstrap'; @import 'ember-modal-dialog/ember-modal-structure'; @import 'ember-modal-dialog/ember-modal-appearance'; + +@import 'bridge-finder'; +@import 'common'; +@import 'dimmer'; @import 'fancy-speaker'; +@import 'index'; +@import 'introjs'; +@import 'paper'; +@import 'variables'; -$playerHeight: 400px; -$playerDefaultIconColor: #BBBBBB; -$footerHeight: 40px; -$playerBottomHeight: 250px; -$secondaryThemeColor: #F12B24; -$glowingText: 0 0 2px #fff, 0 0 8px #fff, 0 0 20px #228DFF; -$dimmerOnButtonColor: #404040; - -// BRIDGE FINDER html { min-height: 100%; height: auto; @@ -24,80 +22,6 @@ body { position: static; } -#intro { - font-size: 18px; -} - -#introParagraph { - margin-bottom: 50px; -} - -.embedContainer { - position:relative; - padding-bottom:56.25%; - padding-top:30px; - height:0; - overflow:hidden; -} - -.embedContainerWrapper { - max-width: 600px; - margin: auto; -} - -.embedContainer iframe, .embedContainer object, .embedContainer embed { - position:absolute; - top:0; - left:0; - width:100%; - height:100%; -} - -.goButton { - margin-top: 20px; - border-radius: 100% !important; - width: 100px; - height: 100px; - span { - font-size: 28px; - width: 100%; - } -} - -.introjs-overlay { - background: black; -} - -md-checkbox.md-default-theme .md-icon { - border-color: inherit !important; -} - -md-checkbox.md-default-theme.md-checked .md-icon { - background: $secondaryThemeColor; -} - -md-checkbox .md-label { - width: 125px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.text-left { - text-align: left !important; -} - -.goButton:hover { - background: darken(#3f51b5, 10%) !important; -} - -.md-button { - flex-direction: unset; - span { - width: 100%; - } -} - .ember-notify-default.ember-notify-cn { top: 20px; } @@ -107,10 +31,6 @@ md-checkbox .md-label { border: none; } -.relative { - position: relative; -} - #settings { padding-right: 5px; text-align: right; @@ -118,41 +38,15 @@ md-checkbox .md-label { font-size: 16px; } -.settingsItem { - position: relative; - display: inline-block; - transition: 0.1s all ease-in-out; - cursor: pointer; - span md-icon { - position: relative; - bottom: 5px; - right: 5px; - } -} - .settingsItem:nth-of-type(2){ margin-left: 10px; } -md-switch[disabled=disabled], md-switch[disabled=disabled] .md-container, md-slider[disabled=disabled] { - cursor: not-allowed; -} - .settingsItem .settings::before, .settingsItem .group::before { font-size: 28px; transition: 0.1s all ease-in-out; } -.settingsItem span:hover { - text-decoration: underline; - md-icon.group { - color: black !important; - } - md-icon.settings { - color: black !important; - } -} - .ember-app { padding-bottom: 50px; } @@ -176,17 +70,6 @@ md-switch[disabled=disabled], md-switch[disabled=disabled] .md-container, md-sli cursor: pointer; } -.bridgeFinder, .readyBlock { - text-align: center; - padding-top: 10px; -} - -// preloading image -.readyBlock:after { - display: none; - content: url(images/pressButtonBridge.png); -} - .title { margin-bottom: 30px; img { @@ -194,31 +77,12 @@ md-switch[disabled=disabled], md-switch[disabled=disabled] .md-container, md-sli } } -#bridgeInput { - md-input-container { - max-width: 200px; - margin: 0 auto; - } -} - -md-progress-circular { - margin: 0 auto 20px auto !important; -} - -md-progress-linear { - margin-bottom: 50px; -} - #pressButtonBridgeImg { width: 200px; margin: 0 auto 30px auto; display: inherit; } -.noTextDecoration { - text-decoration: none; -} - #bridgeButtonGroup { width: 150px; margin: 30px auto; @@ -237,19 +101,6 @@ md-progress-linear { color: black; } -.bootstrapTooltip md-icon { - font-size: 22px; - cursor: pointer; - -webkit-transform: translate3d(0, 0, 0); // hack for chrome to force hardware acceleration and stop flickering -} - -md-list { - padding: 0; -} - -md-list-item .md-no-style { - padding: 0; -} #lightsTab { min-height: 400px; @@ -330,19 +181,6 @@ md-list-item .md-no-style { } // LIGHT GROUP -md-slider { - cursor: pointer; -} - -md-slider.md-default-theme .md-thumb:after { - border-color: $secondaryThemeColor; - background-color: $secondaryThemeColor; -} - -.paper-sidenav { - overflow: visible; -} - #groupList { box-shadow: 5px 10px 15px 5px rgba(0, 0, 0, 0.3); border-radius: 0 0 5px 5px; @@ -414,10 +252,6 @@ md-slider.md-default-theme .md-thumb:after { background-color: rgba(0, 0, 0, 0.50); } -md-icon { - color: rgba(0, 0, 0, 0.54) !important; -} - .addButton { width: 100%; cursor: pointer; @@ -434,16 +268,11 @@ md-icon { text-align: left; } -md-toolbar { - background-color: inherit !important; -} - // GROUP CONTROL .groupRow { transition: 0.1s all ease-in-out; } - .groupRow.selectedRow { background-color: #7F7F7F !important; color: white; @@ -552,14 +381,6 @@ md-toolbar { color: lighten($playerDefaultIconColor, 30%) !important;; } -md-switch.md-default-theme.md-checked .md-bar { - background-color: rgba(241, 43, 36, 0.5); -} - -md-switch.md-default-theme.md-checked .md-thumb { - background-color: $secondaryThemeColor; -} - #playerControls { transition: all 0.2s ease-in-out; position: absolute; @@ -905,98 +726,6 @@ md-switch.md-default-theme.md-checked .md-thumb { margin-top: 10px; } -div.dimmerOn { - color: white !important; - background: #171717 !important; -} - -html.dimmerOn { - color: white; - background: #242424; -} - -body.dimmerOn { - color: white; - background: #242424; - .md-track { - background: white; - } - .color { - border: 1px solid white; - } - .playlistItem { - color: #cdcdcd; - background: $dimmerOnButtonColor; - } - .playlistItem.active { - background: darken($dimmerOnButtonColor, 15%) !important; - } - .playlistItem:hover { - background: darken($dimmerOnButtonColor, 10%); - } - .playlistItem .close { - color: #cdcdcd !important; - } - .playlistItem .close:hover { - color: white !important; - } - svg { - -webkit-filter: drop-shadow(0 0 5px #228DFF); - } - md-input-container { - label { - color: white; - } - input { - border-bottom-color: white !important; - } - input { - color: white !important; - } - } - .addNewMusic { - background: $dimmerOnButtonColor - } - .addNewMusic:hover { - background: darken($dimmerOnButtonColor, 5%); - } - #extraOptionsMenu { - opacity: 0.8; - } - #extraOptionsMenu:hover { - background: rgba(0, 0, 0, 0.9); - } - .popover-content { - color: black !important; - } -} - -.power-settings-new.dimmerOn, -.brightness-4.dimmerOn, -.color-lens.dimmerOn, -.flare.dimmerOn, -.loop.dimmerOn, -.group.dimmerOn, -.settings.dimmerOn, -.mic.dimmerOn, -.star.dimmerOn, -.library-music.dimmerOn { - color: inherit !important; - text-shadow: $glowingText; - opacity: 0.9 !important; -} - -#dimmer { - position: absolute; - left: -50px; - bottom: -10px; - cursor: pointer; - width: 40px; - height: 40px; - background: url(/favicon-96x96.png) center center no-repeat; - background-size: 40px 40px; -} - .noUi-value-vertical { margin-top: -10px; } @@ -1119,29 +848,3 @@ div.ember-modal-dialog { opacity: 1; background: rgba(0, 0, 0, 0.8); } - -.introjs-helperNumberLayer { - line-height: 17px; - padding: 0; - width: 23px; - height: 23px; -} - -#settings.introjs-fixParent{ - position: inherit !important; -} - -.introjs-tooltip { - color: black; -} - -.introjs-skipbutton{ - color: $secondaryThemeColor; -} - -.introjs-bullets ul li a.active { - position: relative; - height: 10px; - width: 10px; - top: -2px; -} diff --git a/tests/unit/.gitkeep b/web/app/styles/bridge-finder.scss similarity index 100% rename from tests/unit/.gitkeep rename to web/app/styles/bridge-finder.scss diff --git a/web/app/styles/common.scss b/web/app/styles/common.scss new file mode 100644 index 0000000..8315af1 --- /dev/null +++ b/web/app/styles/common.scss @@ -0,0 +1,11 @@ +.text-left { + text-align: left !important; +} + +.relative { + position: relative !important; +} + +.noTextDecoration { + text-decoration: none !important; +} \ No newline at end of file diff --git a/web/app/styles/dimmer.scss b/web/app/styles/dimmer.scss new file mode 100644 index 0000000..3e5f0a7 --- /dev/null +++ b/web/app/styles/dimmer.scss @@ -0,0 +1,93 @@ +@import 'variables'; + +div.dimmerOn { + color: white !important; + background: #171717 !important; +} + +html.dimmerOn { + color: white; + background: #242424; +} + +body.dimmerOn { + color: white; + background: #242424; + .md-track { + background: white; + } + .color { + border: 1px solid white; + } + .playlistItem { + color: #cdcdcd; + background: $dimmerOnButtonColor; + } + .playlistItem.active { + background: darken($dimmerOnButtonColor, 15%) !important; + } + .playlistItem:hover { + background: darken($dimmerOnButtonColor, 10%); + } + .playlistItem .close { + color: #cdcdcd !important; + } + .playlistItem .close:hover { + color: white !important; + } + svg { + -webkit-filter: drop-shadow(0 0 5px #228DFF); + } + md-input-container { + label { + color: white; + } + input { + border-bottom-color: white !important; + } + input { + color: white !important; + } + } + .addNewMusic { + background: $dimmerOnButtonColor + } + .addNewMusic:hover { + background: darken($dimmerOnButtonColor, 5%); + } + #extraOptionsMenu { + opacity: 0.8; + } + #extraOptionsMenu:hover { + background: rgba(0, 0, 0, 0.9); + } + .popover-content { + color: black !important; + } +} + +.power-settings-new.dimmerOn, +.brightness-4.dimmerOn, +.color-lens.dimmerOn, +.flare.dimmerOn, +.loop.dimmerOn, +.group.dimmerOn, +.settings.dimmerOn, +.mic.dimmerOn, +.star.dimmerOn, +.library-music.dimmerOn { + color: inherit !important; + text-shadow: $glowingText; + opacity: 0.9 !important; +} + +#dimmer { + position: absolute; + left: -50px; + bottom: -10px; + cursor: pointer; + width: 40px; + height: 40px; + background: url(/favicon-96x96.png) center center no-repeat; + background-size: 40px 40px; +} \ No newline at end of file diff --git a/app/styles/fancy-speaker.scss b/web/app/styles/fancy-speaker.scss similarity index 100% rename from app/styles/fancy-speaker.scss rename to web/app/styles/fancy-speaker.scss diff --git a/web/app/styles/index.scss b/web/app/styles/index.scss new file mode 100644 index 0000000..eba6164 --- /dev/null +++ b/web/app/styles/index.scss @@ -0,0 +1,53 @@ +#intro { + font-size: 18px; +} + +#introParagraph { + margin-bottom: 50px; +} + +.bridgeFinder, .readyBlock { + text-align: center; + padding-top: 10px; +} + +// preloading image +.readyBlock:after { + display: none; + content: url(images/pressButtonBridge.png); +} + +.embedContainer { + position:relative; + padding-bottom:56.25%; + padding-top:30px; + height:0; + overflow:hidden; +} + +.embedContainerWrapper { + max-width: 600px; + margin: auto; +} + +.embedContainer iframe, .embedContainer object, .embedContainer embed { + position:absolute; + top:0; + left:0; + width:100%; + height:100%; +} + +.goButton { + margin-top: 20px; + border-radius: 100% !important; + width: 100px; + height: 100px; + span { + font-size: 28px; + width: 100%; + } + &:hover { + background: darken(#3f51b5, 10%) !important; + } +} \ No newline at end of file diff --git a/web/app/styles/introjs.scss b/web/app/styles/introjs.scss new file mode 100644 index 0000000..02367b7 --- /dev/null +++ b/web/app/styles/introjs.scss @@ -0,0 +1,30 @@ +@import 'variables'; + +.introjs-overlay { + background: black; +} + +.introjs-helperNumberLayer { + padding: 0; + width: 23px; + height: 23px; +} + +#settings.introjs-fixParent{ + position: inherit !important; +} + +.introjs-tooltip { + color: black; +} + +.introjs-skipbutton{ + color: $secondaryThemeColor; +} + +.introjs-bullets ul li a.active { + position: relative; + height: 10px; + width: 10px; + top: -2px; +} \ No newline at end of file diff --git a/web/app/styles/paper.scss b/web/app/styles/paper.scss new file mode 100644 index 0000000..af1d677 --- /dev/null +++ b/web/app/styles/paper.scss @@ -0,0 +1,109 @@ +@import 'ember-paper'; +@import 'variables'; + +md-checkbox.md-default-theme .md-icon { + border-color: inherit !important; +} + +md-checkbox.md-default-theme.md-checked .md-icon { + background: $secondaryThemeColor; +} + +md-checkbox .md-label { + width: 125px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.md-button { + flex-direction: unset; + span { + width: 100%; + } +} + +md-switch[disabled=disabled], md-switch[disabled=disabled] .md-container, md-slider[disabled=disabled] { + cursor: not-allowed; +} + +#bridgeInput { + md-input-container { + max-width: 200px; + margin: 0 auto; + } +} + +md-progress-circular { + margin: 0 auto 20px auto !important; +} + +md-progress-linear { + margin-bottom: 50px; +} + +.settingsItem span:hover { + text-decoration: underline; + md-icon.group { + color: black !important; + } + md-icon.settings { + color: black !important; + } +} + + +.settingsItem { + position: relative; + display: inline-block; + transition: 0.1s all ease-in-out; + cursor: pointer; + span md-icon { + position: relative; + bottom: 5px; + right: 5px; + } +} + +.bootstrapTooltip md-icon { + font-size: 22px; + cursor: pointer; + -webkit-transform: translate3d(0, 0, 0); // hack for chrome to force hardware acceleration and stop flickering +} + +md-list { + padding: 0; +} + +md-list-item .md-no-style { + padding: 0; +} + +md-slider { + cursor: pointer; +} + +md-slider.md-default-theme .md-thumb:after { + border-color: $secondaryThemeColor; + background-color: $secondaryThemeColor; +} + +.paper-sidenav { + overflow: visible; +} + +md-icon { + color: rgba(0, 0, 0, 0.54) !important; +} + +md-toolbar { + background-color: inherit !important; +} + +md-switch.md-default-theme.md-checked .md-bar { + background-color: rgba(241, 43, 36, 0.5); +} + +md-switch.md-default-theme.md-checked .md-thumb { + background-color: $secondaryThemeColor; +} \ No newline at end of file diff --git a/web/app/styles/variables.scss b/web/app/styles/variables.scss new file mode 100644 index 0000000..3e7099c --- /dev/null +++ b/web/app/styles/variables.scss @@ -0,0 +1,7 @@ +$playerHeight: 400px; +$playerDefaultIconColor: #BBBBBB; +$footerHeight: 40px; +$playerBottomHeight: 250px; +$secondaryThemeColor: #F12B24; +$glowingText: 0 0 2px #fff, 0 0 8px #fff, 0 0 20px #228DFF; +$dimmerOnButtonColor: #404040; \ No newline at end of file diff --git a/app/templates/application.hbs b/web/app/templates/application.hbs similarity index 100% rename from app/templates/application.hbs rename to web/app/templates/application.hbs diff --git a/bower.json b/web/bower.json similarity index 100% rename from bower.json rename to web/bower.json diff --git a/config/environment.js b/web/config/environment.js similarity index 100% rename from config/environment.js rename to web/config/environment.js diff --git a/ember-cli-build.js b/web/ember-cli-build.js similarity index 100% rename from ember-cli-build.js rename to web/ember-cli-build.js diff --git a/package.json b/web/package.json similarity index 97% rename from package.json rename to web/package.json index 4650195..b4d6333 100644 --- a/package.json +++ b/web/package.json @@ -36,7 +36,7 @@ "ember-cli-uglify": "^1.2.0", "ember-export-application-global": "^1.0.4", "ember-load-initializers": "^0.5.0", - "ember-modal-dialog": "^0.8.3", + "ember-modal-dialog": "^0.9.0", "ember-notify": "^5.0.4", "ember-paper": "^0.2.14", "ember-resolver": "^2.0.3", diff --git a/public/android-chrome-144x144.png b/web/public/android-chrome-144x144.png similarity index 100% rename from public/android-chrome-144x144.png rename to web/public/android-chrome-144x144.png diff --git a/public/android-chrome-192x192.png b/web/public/android-chrome-192x192.png similarity index 100% rename from public/android-chrome-192x192.png rename to web/public/android-chrome-192x192.png diff --git a/public/android-chrome-36x36.png b/web/public/android-chrome-36x36.png similarity index 100% rename from public/android-chrome-36x36.png rename to web/public/android-chrome-36x36.png diff --git a/public/android-chrome-48x48.png b/web/public/android-chrome-48x48.png similarity index 100% rename from public/android-chrome-48x48.png rename to web/public/android-chrome-48x48.png diff --git a/public/android-chrome-72x72.png b/web/public/android-chrome-72x72.png similarity index 100% rename from public/android-chrome-72x72.png rename to web/public/android-chrome-72x72.png diff --git a/public/android-chrome-96x96.png b/web/public/android-chrome-96x96.png similarity index 100% rename from public/android-chrome-96x96.png rename to web/public/android-chrome-96x96.png diff --git a/public/apple-touch-icon-114x114.png b/web/public/apple-touch-icon-114x114.png similarity index 100% rename from public/apple-touch-icon-114x114.png rename to web/public/apple-touch-icon-114x114.png diff --git a/public/apple-touch-icon-120x120.png b/web/public/apple-touch-icon-120x120.png similarity index 100% rename from public/apple-touch-icon-120x120.png rename to web/public/apple-touch-icon-120x120.png diff --git a/public/apple-touch-icon-144x144.png b/web/public/apple-touch-icon-144x144.png similarity index 100% rename from public/apple-touch-icon-144x144.png rename to web/public/apple-touch-icon-144x144.png diff --git a/public/apple-touch-icon-152x152.png b/web/public/apple-touch-icon-152x152.png similarity index 100% rename from public/apple-touch-icon-152x152.png rename to web/public/apple-touch-icon-152x152.png diff --git a/public/apple-touch-icon-180x180.png b/web/public/apple-touch-icon-180x180.png similarity index 100% rename from public/apple-touch-icon-180x180.png rename to web/public/apple-touch-icon-180x180.png diff --git a/public/apple-touch-icon-57x57.png b/web/public/apple-touch-icon-57x57.png similarity index 100% rename from public/apple-touch-icon-57x57.png rename to web/public/apple-touch-icon-57x57.png diff --git a/public/apple-touch-icon-60x60.png b/web/public/apple-touch-icon-60x60.png similarity index 100% rename from public/apple-touch-icon-60x60.png rename to web/public/apple-touch-icon-60x60.png diff --git a/public/apple-touch-icon-72x72.png b/web/public/apple-touch-icon-72x72.png similarity index 100% rename from public/apple-touch-icon-72x72.png rename to web/public/apple-touch-icon-72x72.png diff --git a/public/apple-touch-icon-76x76.png b/web/public/apple-touch-icon-76x76.png similarity index 100% rename from public/apple-touch-icon-76x76.png rename to web/public/apple-touch-icon-76x76.png diff --git a/public/apple-touch-icon-precomposed.png b/web/public/apple-touch-icon-precomposed.png similarity index 100% rename from public/apple-touch-icon-precomposed.png rename to web/public/apple-touch-icon-precomposed.png diff --git a/public/apple-touch-icon.png b/web/public/apple-touch-icon.png similarity index 100% rename from public/apple-touch-icon.png rename to web/public/apple-touch-icon.png diff --git a/public/assets/images/colormap.png b/web/public/assets/images/colormap.png similarity index 100% rename from public/assets/images/colormap.png rename to web/public/assets/images/colormap.png diff --git a/public/assets/images/lights/a19.svg b/web/public/assets/images/lights/a19.svg similarity index 100% rename from public/assets/images/lights/a19.svg rename to web/public/assets/images/lights/a19.svg diff --git a/public/assets/images/lights/a19w.svg b/web/public/assets/images/lights/a19w.svg similarity index 100% rename from public/assets/images/lights/a19w.svg rename to web/public/assets/images/lights/a19w.svg diff --git a/public/assets/images/lights/br30.svg b/web/public/assets/images/lights/br30.svg similarity index 100% rename from public/assets/images/lights/br30.svg rename to web/public/assets/images/lights/br30.svg diff --git a/public/assets/images/lights/br30w.svg b/web/public/assets/images/lights/br30w.svg similarity index 100% rename from public/assets/images/lights/br30w.svg rename to web/public/assets/images/lights/br30w.svg diff --git a/public/assets/images/lights/gu10.svg b/web/public/assets/images/lights/gu10.svg similarity index 100% rename from public/assets/images/lights/gu10.svg rename to web/public/assets/images/lights/gu10.svg diff --git a/public/assets/images/lights/gu10w.svg b/web/public/assets/images/lights/gu10w.svg similarity index 100% rename from public/assets/images/lights/gu10w.svg rename to web/public/assets/images/lights/gu10w.svg diff --git a/public/assets/images/lights/huego.svg b/web/public/assets/images/lights/huego.svg similarity index 100% rename from public/assets/images/lights/huego.svg rename to web/public/assets/images/lights/huego.svg diff --git a/public/assets/images/lights/huegow.svg b/web/public/assets/images/lights/huegow.svg similarity index 100% rename from public/assets/images/lights/huegow.svg rename to web/public/assets/images/lights/huegow.svg diff --git a/public/assets/images/lights/lc_aura.svg b/web/public/assets/images/lights/lc_aura.svg similarity index 100% rename from public/assets/images/lights/lc_aura.svg rename to web/public/assets/images/lights/lc_aura.svg diff --git a/public/assets/images/lights/lc_auraw.svg b/web/public/assets/images/lights/lc_auraw.svg similarity index 100% rename from public/assets/images/lights/lc_auraw.svg rename to web/public/assets/images/lights/lc_auraw.svg diff --git a/public/assets/images/lights/lc_bloom.svg b/web/public/assets/images/lights/lc_bloom.svg similarity index 100% rename from public/assets/images/lights/lc_bloom.svg rename to web/public/assets/images/lights/lc_bloom.svg diff --git a/public/assets/images/lights/lc_bloomw.svg b/web/public/assets/images/lights/lc_bloomw.svg similarity index 100% rename from public/assets/images/lights/lc_bloomw.svg rename to web/public/assets/images/lights/lc_bloomw.svg diff --git a/public/assets/images/lights/lc_iris.svg b/web/public/assets/images/lights/lc_iris.svg similarity index 100% rename from public/assets/images/lights/lc_iris.svg rename to web/public/assets/images/lights/lc_iris.svg diff --git a/public/assets/images/lights/lc_irisw.svg b/web/public/assets/images/lights/lc_irisw.svg similarity index 100% rename from public/assets/images/lights/lc_irisw.svg rename to web/public/assets/images/lights/lc_irisw.svg diff --git a/public/assets/images/lights/lightstrip.svg b/web/public/assets/images/lights/lightstrip.svg similarity index 100% rename from public/assets/images/lights/lightstrip.svg rename to web/public/assets/images/lights/lightstrip.svg diff --git a/public/assets/images/lights/lightstripw.svg b/web/public/assets/images/lights/lightstripw.svg similarity index 100% rename from public/assets/images/lights/lightstripw.svg rename to web/public/assets/images/lights/lightstripw.svg diff --git a/public/assets/images/lights/storylight.svg b/web/public/assets/images/lights/storylight.svg similarity index 100% rename from public/assets/images/lights/storylight.svg rename to web/public/assets/images/lights/storylight.svg diff --git a/public/assets/images/lights/storylightw.svg b/web/public/assets/images/lights/storylightw.svg similarity index 100% rename from public/assets/images/lights/storylightw.svg rename to web/public/assets/images/lights/storylightw.svg diff --git a/public/assets/images/logo.png b/web/public/assets/images/logo.png similarity index 100% rename from public/assets/images/logo.png rename to web/public/assets/images/logo.png diff --git a/public/assets/images/missingArtwork.png b/web/public/assets/images/missingArtwork.png similarity index 100% rename from public/assets/images/missingArtwork.png rename to web/public/assets/images/missingArtwork.png diff --git a/public/assets/images/pressButtonBridge.png b/web/public/assets/images/pressButtonBridge.png similarity index 100% rename from public/assets/images/pressButtonBridge.png rename to web/public/assets/images/pressButtonBridge.png diff --git a/public/assets/images/sc-white-sm.png b/web/public/assets/images/sc-white-sm.png similarity index 100% rename from public/assets/images/sc-white-sm.png rename to web/public/assets/images/sc-white-sm.png diff --git a/public/assets/images/sc-white.png b/web/public/assets/images/sc-white.png similarity index 100% rename from public/assets/images/sc-white.png rename to web/public/assets/images/sc-white.png diff --git a/public/browserconfig.xml b/web/public/browserconfig.xml similarity index 100% rename from public/browserconfig.xml rename to web/public/browserconfig.xml diff --git a/public/crossdomain.xml b/web/public/crossdomain.xml similarity index 100% rename from public/crossdomain.xml rename to web/public/crossdomain.xml diff --git a/public/favicon-16x16.png b/web/public/favicon-16x16.png similarity index 100% rename from public/favicon-16x16.png rename to web/public/favicon-16x16.png diff --git a/public/favicon-194x194.png b/web/public/favicon-194x194.png similarity index 100% rename from public/favicon-194x194.png rename to web/public/favicon-194x194.png diff --git a/public/favicon-32x32.png b/web/public/favicon-32x32.png similarity index 100% rename from public/favicon-32x32.png rename to web/public/favicon-32x32.png diff --git a/public/favicon-96x96.png b/web/public/favicon-96x96.png similarity index 100% rename from public/favicon-96x96.png rename to web/public/favicon-96x96.png diff --git a/public/favicon.ico b/web/public/favicon.ico similarity index 100% rename from public/favicon.ico rename to web/public/favicon.ico diff --git a/public/humans.txt b/web/public/humans.txt similarity index 100% rename from public/humans.txt rename to web/public/humans.txt diff --git a/public/manifest.json b/web/public/manifest.json similarity index 100% rename from public/manifest.json rename to web/public/manifest.json diff --git a/public/mstile-144x144.png b/web/public/mstile-144x144.png similarity index 100% rename from public/mstile-144x144.png rename to web/public/mstile-144x144.png diff --git a/public/mstile-150x150.png b/web/public/mstile-150x150.png similarity index 100% rename from public/mstile-150x150.png rename to web/public/mstile-150x150.png diff --git a/public/mstile-310x150.png b/web/public/mstile-310x150.png similarity index 100% rename from public/mstile-310x150.png rename to web/public/mstile-310x150.png diff --git a/public/mstile-310x310.png b/web/public/mstile-310x310.png similarity index 100% rename from public/mstile-310x310.png rename to web/public/mstile-310x310.png diff --git a/public/mstile-70x70.png b/web/public/mstile-70x70.png similarity index 100% rename from public/mstile-70x70.png rename to web/public/mstile-70x70.png diff --git a/public/robots.txt b/web/public/robots.txt similarity index 100% rename from public/robots.txt rename to web/public/robots.txt diff --git a/public/safari-pinned-tab.svg b/web/public/safari-pinned-tab.svg similarity index 100% rename from public/safari-pinned-tab.svg rename to web/public/safari-pinned-tab.svg diff --git a/testem.js b/web/testem.js similarity index 100% rename from testem.js rename to web/testem.js diff --git a/tests/.jshintrc b/web/tests/.jshintrc similarity index 100% rename from tests/.jshintrc rename to web/tests/.jshintrc diff --git a/tests/helpers/destroy-app.js b/web/tests/helpers/destroy-app.js similarity index 100% rename from tests/helpers/destroy-app.js rename to web/tests/helpers/destroy-app.js diff --git a/tests/helpers/module-for-acceptance.js b/web/tests/helpers/module-for-acceptance.js similarity index 100% rename from tests/helpers/module-for-acceptance.js rename to web/tests/helpers/module-for-acceptance.js diff --git a/tests/helpers/resolver.js b/web/tests/helpers/resolver.js similarity index 100% rename from tests/helpers/resolver.js rename to web/tests/helpers/resolver.js diff --git a/tests/helpers/start-app.js b/web/tests/helpers/start-app.js similarity index 100% rename from tests/helpers/start-app.js rename to web/tests/helpers/start-app.js diff --git a/tests/index.html b/web/tests/index.html similarity index 100% rename from tests/index.html rename to web/tests/index.html diff --git a/tests/integration/pods/components/add-group-modal/component-test.js b/web/tests/integration/pods/components/add-group-modal/component-test.js similarity index 100% rename from tests/integration/pods/components/add-group-modal/component-test.js rename to web/tests/integration/pods/components/add-group-modal/component-test.js diff --git a/tests/integration/pods/components/add-soundcloud-sound-modal/component-test.js b/web/tests/integration/pods/components/add-soundcloud-sound-modal/component-test.js similarity index 100% rename from tests/integration/pods/components/add-soundcloud-sound-modal/component-test.js rename to web/tests/integration/pods/components/add-soundcloud-sound-modal/component-test.js diff --git a/tests/integration/pods/components/bridge-finder/component-test.js b/web/tests/integration/pods/components/bridge-finder/component-test.js similarity index 100% rename from tests/integration/pods/components/bridge-finder/component-test.js rename to web/tests/integration/pods/components/bridge-finder/component-test.js diff --git a/tests/integration/pods/components/color-picker/component-test.js b/web/tests/integration/pods/components/color-picker/component-test.js similarity index 100% rename from tests/integration/pods/components/color-picker/component-test.js rename to web/tests/integration/pods/components/color-picker/component-test.js diff --git a/tests/integration/pods/components/delete-group-modal/component-test.js b/web/tests/integration/pods/components/delete-group-modal/component-test.js similarity index 100% rename from tests/integration/pods/components/delete-group-modal/component-test.js rename to web/tests/integration/pods/components/delete-group-modal/component-test.js diff --git a/tests/integration/pods/components/groups-list/component-test.js b/web/tests/integration/pods/components/groups-list/component-test.js similarity index 100% rename from tests/integration/pods/components/groups-list/component-test.js rename to web/tests/integration/pods/components/groups-list/component-test.js diff --git a/tests/integration/pods/components/hue-controls/component-test.js b/web/tests/integration/pods/components/hue-controls/component-test.js similarity index 100% rename from tests/integration/pods/components/hue-controls/component-test.js rename to web/tests/integration/pods/components/hue-controls/component-test.js diff --git a/tests/integration/pods/components/huegasm-app/component-test.js b/web/tests/integration/pods/components/huegasm-app/component-test.js similarity index 100% rename from tests/integration/pods/components/huegasm-app/component-test.js rename to web/tests/integration/pods/components/huegasm-app/component-test.js diff --git a/tests/integration/pods/components/light-group/component-test.js b/web/tests/integration/pods/components/light-group/component-test.js similarity index 100% rename from tests/integration/pods/components/light-group/component-test.js rename to web/tests/integration/pods/components/light-group/component-test.js diff --git a/tests/integration/pods/components/lights-tab/component-test.js b/web/tests/integration/pods/components/lights-tab/component-test.js similarity index 100% rename from tests/integration/pods/components/lights-tab/component-test.js rename to web/tests/integration/pods/components/lights-tab/component-test.js diff --git a/tests/integration/pods/components/music-tab/component-test.js b/web/tests/integration/pods/components/music-tab/component-test.js similarity index 100% rename from tests/integration/pods/components/music-tab/component-test.js rename to web/tests/integration/pods/components/music-tab/component-test.js diff --git a/tests/test-helper.js b/web/tests/test-helper.js similarity index 100% rename from tests/test-helper.js rename to web/tests/test-helper.js diff --git a/web/tests/unit/.gitkeep b/web/tests/unit/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/vendor/dancer.js b/web/vendor/dancer.js similarity index 100% rename from vendor/dancer.js rename to web/vendor/dancer.js