├── Procfile
├── .gitignore-deploy
├── www
├── .bowerrc
├── bower_components
│ ├── jquery
│ │ ├── src
│ │ │ ├── outro.js
│ │ │ ├── selector.js
│ │ │ ├── var
│ │ │ │ ├── arr.js
│ │ │ │ ├── rnotwhite.js
│ │ │ │ ├── strundefined.js
│ │ │ │ ├── concat.js
│ │ │ │ ├── push.js
│ │ │ │ ├── slice.js
│ │ │ │ ├── class2type.js
│ │ │ │ ├── indexOf.js
│ │ │ │ ├── pnum.js
│ │ │ │ ├── toString.js
│ │ │ │ ├── hasOwn.js
│ │ │ │ └── support.js
│ │ │ ├── ajax
│ │ │ │ ├── var
│ │ │ │ │ ├── rquery.js
│ │ │ │ │ └── nonce.js
│ │ │ │ ├── parseJSON.js
│ │ │ │ └── parseXML.js
│ │ │ ├── css
│ │ │ │ ├── var
│ │ │ │ │ ├── rmargin.js
│ │ │ │ │ ├── cssExpand.js
│ │ │ │ │ ├── rnumnonpx.js
│ │ │ │ │ ├── isHidden.js
│ │ │ │ │ └── getStyles.js
│ │ │ │ ├── hiddenVisibleSelectors.js
│ │ │ │ ├── addGetHookIf.js
│ │ │ │ └── swap.js
│ │ │ ├── manipulation
│ │ │ │ ├── var
│ │ │ │ │ └── rcheckableType.js
│ │ │ │ ├── _evalUrl.js
│ │ │ │ └── support.js
│ │ │ ├── data
│ │ │ │ ├── var
│ │ │ │ │ ├── data_priv.js
│ │ │ │ │ └── data_user.js
│ │ │ │ └── accepts.js
│ │ │ ├── core
│ │ │ │ ├── var
│ │ │ │ │ └── rsingleTag.js
│ │ │ │ ├── parseHTML.js
│ │ │ │ └── access.js
│ │ │ ├── traversing
│ │ │ │ └── var
│ │ │ │ │ └── rneedsContext.js
│ │ │ ├── event
│ │ │ │ ├── support.js
│ │ │ │ ├── ajax.js
│ │ │ │ └── alias.js
│ │ │ ├── attributes.js
│ │ │ ├── deprecated.js
│ │ │ ├── effects
│ │ │ │ └── animatedSelector.js
│ │ │ ├── selector-sizzle.js
│ │ │ ├── queue
│ │ │ │ └── delay.js
│ │ │ ├── jquery.js
│ │ │ ├── exports
│ │ │ │ ├── global.js
│ │ │ │ └── amd.js
│ │ │ └── attributes
│ │ │ │ └── support.js
│ │ ├── bower.json
│ │ ├── .bower.json
│ │ └── MIT-LICENSE.txt
│ ├── swipebox
│ │ ├── .gitattributes
│ │ ├── demo
│ │ │ └── fork.png
│ │ ├── src
│ │ │ └── img
│ │ │ │ ├── icons.png
│ │ │ │ ├── loader.gif
│ │ │ │ └── icons.svg
│ │ ├── grunt
│ │ │ ├── README.md
│ │ │ ├── .jshintrc
│ │ │ └── package.json
│ │ ├── bower.json
│ │ ├── .gitignore
│ │ └── .bower.json
│ ├── bootstrap-material-design
│ │ ├── meteor
│ │ │ ├── example
│ │ │ │ ├── client
│ │ │ │ │ ├── bmd.css
│ │ │ │ │ ├── bmd.html
│ │ │ │ │ └── bmd.js
│ │ │ │ ├── run.bat
│ │ │ │ └── run.sh
│ │ │ ├── init.js
│ │ │ └── package-noicons.js
│ │ ├── less
│ │ │ ├── material-fullpalette.less
│ │ │ ├── _labels.less
│ │ │ ├── _icons.less
│ │ │ ├── _progress.less
│ │ │ ├── _popups.less
│ │ │ ├── _panels.less
│ │ │ ├── _alerts.less
│ │ │ ├── _plugin-dropdownjs.less
│ │ │ ├── _tabs.less
│ │ │ ├── _shadows.less
│ │ │ ├── _plugin-snackbarjs.less
│ │ │ ├── ripples.less
│ │ │ └── _dialogs.less
│ │ ├── fonts
│ │ │ ├── RobotoDraftBold.woff
│ │ │ ├── RobotoDraftBold.woff2
│ │ │ ├── RobotoDraftItalic.woff
│ │ │ ├── RobotoDraftItalic.woff2
│ │ │ ├── RobotoDraftMedium.woff
│ │ │ ├── RobotoDraftMedium.woff2
│ │ │ ├── RobotoDraftRegular.woff
│ │ │ ├── RobotoDraftRegular.woff2
│ │ │ ├── Material-Design-Icons.eot
│ │ │ ├── Material-Design-Icons.ttf
│ │ │ └── Material-Design-Icons.woff
│ │ ├── dist
│ │ │ ├── fonts
│ │ │ │ ├── RobotoDraftBold.woff
│ │ │ │ ├── RobotoDraftBold.woff2
│ │ │ │ ├── RobotoDraftItalic.woff
│ │ │ │ ├── RobotoDraftItalic.woff2
│ │ │ │ ├── RobotoDraftMedium.woff
│ │ │ │ ├── RobotoDraftMedium.woff2
│ │ │ │ ├── RobotoDraftRegular.woff
│ │ │ │ ├── RobotoDraftRegular.woff2
│ │ │ │ ├── Material-Design-Icons.eot
│ │ │ │ ├── Material-Design-Icons.ttf
│ │ │ │ └── Material-Design-Icons.woff
│ │ │ └── css
│ │ │ │ ├── ripples.min.css
│ │ │ │ ├── roboto.min.css
│ │ │ │ ├── ripples.css
│ │ │ │ ├── ripples.min.css.map
│ │ │ │ └── roboto.css
│ │ ├── sass
│ │ │ ├── _animations.scss
│ │ │ ├── material-wfont.scss
│ │ │ ├── _popups.scss
│ │ │ ├── _mixins.scss
│ │ │ ├── _tabs.scss
│ │ │ ├── _shadows.scss
│ │ │ ├── ripples.scss
│ │ │ └── _plugin-snackbarjs.scss
│ │ ├── LICENSE.md
│ │ └── bower.json
│ ├── font-awesome
│ │ ├── fonts
│ │ │ ├── FontAwesome.otf
│ │ │ ├── fontawesome-webfont.eot
│ │ │ ├── fontawesome-webfont.ttf
│ │ │ ├── fontawesome-webfont.woff
│ │ │ └── fontawesome-webfont.woff2
│ │ ├── less
│ │ │ ├── fixed-width.less
│ │ │ ├── larger.less
│ │ │ ├── list.less
│ │ │ ├── core.less
│ │ │ ├── font-awesome.less
│ │ │ ├── stacked.less
│ │ │ ├── bordered-pulled.less
│ │ │ ├── rotated-flipped.less
│ │ │ ├── path.less
│ │ │ ├── animated.less
│ │ │ └── mixins.less
│ │ ├── scss
│ │ │ ├── _fixed-width.scss
│ │ │ ├── _larger.scss
│ │ │ ├── _list.scss
│ │ │ ├── font-awesome.scss
│ │ │ ├── _core.scss
│ │ │ ├── _stacked.scss
│ │ │ ├── _bordered-pulled.scss
│ │ │ ├── _rotated-flipped.scss
│ │ │ ├── _path.scss
│ │ │ ├── _animated.scss
│ │ │ └── _mixins.scss
│ │ ├── HELP-US-OUT.txt
│ │ ├── .gitignore
│ │ ├── bower.json
│ │ ├── .npmignore
│ │ └── .bower.json
│ ├── slick-carousel
│ │ ├── slick
│ │ │ ├── ajax-loader.gif
│ │ │ ├── fonts
│ │ │ │ ├── slick.eot
│ │ │ │ ├── slick.ttf
│ │ │ │ └── slick.woff
│ │ │ └── config.rb
│ │ ├── Makefile
│ │ ├── component.json
│ │ ├── package.json
│ │ ├── bower.json
│ │ ├── .bower.json
│ │ ├── slick.jquery.json
│ │ └── LICENSE
│ ├── bootstrap
│ │ ├── grunt
│ │ │ ├── .jshintrc
│ │ │ └── bs-commonjs-generator.js
│ │ ├── fonts
│ │ │ ├── glyphicons-halflings-regular.eot
│ │ │ ├── glyphicons-halflings-regular.ttf
│ │ │ ├── glyphicons-halflings-regular.woff
│ │ │ └── glyphicons-halflings-regular.woff2
│ │ ├── dist
│ │ │ ├── fonts
│ │ │ │ ├── glyphicons-halflings-regular.eot
│ │ │ │ ├── glyphicons-halflings-regular.ttf
│ │ │ │ ├── glyphicons-halflings-regular.woff
│ │ │ │ └── glyphicons-halflings-regular.woff2
│ │ │ └── js
│ │ │ │ └── npm.js
│ │ ├── less
│ │ │ ├── mixins
│ │ │ │ ├── center-block.less
│ │ │ │ ├── size.less
│ │ │ │ ├── opacity.less
│ │ │ │ ├── text-emphasis.less
│ │ │ │ ├── text-overflow.less
│ │ │ │ ├── background-variant.less
│ │ │ │ ├── tab-focus.less
│ │ │ │ ├── labels.less
│ │ │ │ ├── resize.less
│ │ │ │ ├── progress-bar.less
│ │ │ │ ├── nav-divider.less
│ │ │ │ ├── reset-filter.less
│ │ │ │ ├── alerts.less
│ │ │ │ ├── nav-vertical-align.less
│ │ │ │ ├── responsive-visibility.less
│ │ │ │ ├── border-radius.less
│ │ │ │ ├── reset-text.less
│ │ │ │ ├── pagination.less
│ │ │ │ ├── panels.less
│ │ │ │ ├── hide-text.less
│ │ │ │ ├── list-group.less
│ │ │ │ ├── clearfix.less
│ │ │ │ ├── table-row.less
│ │ │ │ └── image.less
│ │ │ ├── .csslintrc
│ │ │ ├── wells.less
│ │ │ ├── breadcrumbs.less
│ │ │ ├── responsive-embed.less
│ │ │ ├── component-animations.less
│ │ │ ├── close.less
│ │ │ ├── thumbnails.less
│ │ │ ├── utilities.less
│ │ │ ├── pager.less
│ │ │ ├── media.less
│ │ │ ├── jumbotron.less
│ │ │ ├── mixins.less
│ │ │ ├── labels.less
│ │ │ └── badges.less
│ │ ├── js
│ │ │ └── .jshintrc
│ │ ├── bower.json
│ │ ├── package.js
│ │ ├── .bower.json
│ │ └── LICENSE
│ └── animate.css
│ │ ├── source
│ │ ├── fading_entrances
│ │ │ ├── fadeIn.css
│ │ │ ├── fadeInUp.css
│ │ │ ├── fadeInDown.css
│ │ │ ├── fadeInLeft.css
│ │ │ ├── fadeInRight.css
│ │ │ ├── fadeInUpBig.css
│ │ │ ├── fadeInDownBig.css
│ │ │ ├── fadeInLeftBig.css
│ │ │ └── fadeInRightBig.css
│ │ ├── fading_exits
│ │ │ ├── fadeOut.css
│ │ │ ├── fadeOutUp.css
│ │ │ ├── fadeOutDown.css
│ │ │ ├── fadeOutLeft.css
│ │ │ ├── fadeOutRight.css
│ │ │ ├── fadeOutUpBig.css
│ │ │ ├── fadeOutDownBig.css
│ │ │ ├── fadeOutLeftBig.css
│ │ │ └── fadeOutRightBig.css
│ │ ├── attention_seekers
│ │ │ ├── flash.css
│ │ │ ├── shake.css
│ │ │ ├── pulse.css
│ │ │ ├── swing.css
│ │ │ ├── tada.css
│ │ │ ├── rubberBand.css
│ │ │ ├── bounce.css
│ │ │ ├── jello.css
│ │ │ └── wobble.css
│ │ ├── zooming_entrances
│ │ │ ├── zoomIn.css
│ │ │ ├── zoomInUp.css
│ │ │ ├── zoomInDown.css
│ │ │ ├── zoomInLeft.css
│ │ │ └── zoomInRight.css
│ │ ├── sliding_entrances
│ │ │ ├── slideInUp.css
│ │ │ ├── slideInDown.css
│ │ │ ├── slideInLeft.css
│ │ │ └── slideInRight.css
│ │ ├── sliding_exits
│ │ │ ├── slideOutUp.css
│ │ │ ├── slideOutDown.css
│ │ │ ├── slideOutLeft.css
│ │ │ └── slideOutRight.css
│ │ ├── zooming_exits
│ │ │ ├── zoomOut.css
│ │ │ ├── zoomOutLeft.css
│ │ │ ├── zoomOutRight.css
│ │ │ ├── zoomOutUp.css
│ │ │ └── zoomOutDown.css
│ │ ├── bouncing_exits
│ │ │ ├── bounceOutLeft.css
│ │ │ ├── bounceOutRight.css
│ │ │ ├── bounceOut.css
│ │ │ ├── bounceOutUp.css
│ │ │ └── bounceOutDown.css
│ │ ├── lightspeed
│ │ │ ├── lightSpeedOut.css
│ │ │ └── lightSpeedIn.css
│ │ ├── rotating_exits
│ │ │ ├── rotateOut.css
│ │ │ ├── rotateOutUpLeft.css
│ │ │ ├── rotateOutDownLeft.css
│ │ │ ├── rotateOutUpRight.css
│ │ │ └── rotateOutDownRight.css
│ │ ├── rotating_entrances
│ │ │ ├── rotateIn.css
│ │ │ ├── rotateInUpLeft.css
│ │ │ ├── rotateInDownLeft.css
│ │ │ ├── rotateInUpRight.css
│ │ │ └── rotateInDownRight.css
│ │ ├── specials
│ │ │ ├── rollOut.css
│ │ │ ├── rollIn.css
│ │ │ └── hinge.css
│ │ ├── flippers
│ │ │ ├── flipOutX.css
│ │ │ ├── flipOutY.css
│ │ │ ├── flipInX.css
│ │ │ ├── flipInY.css
│ │ │ └── flip.css
│ │ ├── _base.css
│ │ └── bouncing_entrances
│ │ │ ├── bounceInDown.css
│ │ │ ├── bounceInLeft.css
│ │ │ ├── bounceInRight.css
│ │ │ ├── bounceInUp.css
│ │ │ └── bounceIn.css
│ │ ├── bower.json
│ │ ├── .bower.json
│ │ └── package.json
├── img
│ ├── 404.png
│ ├── logo.png
│ ├── app-logo.png
│ ├── logo-large.png
│ └── ubuntu-shape.png
├── less
│ ├── master.less
│ ├── lists.less
│ ├── fontAwesome.less
│ ├── apps.less
│ └── appView.less
├── app
│ └── components
│ │ ├── root.jsx
│ │ ├── login.jsx
│ │ ├── helpers
│ │ └── if.jsx
│ │ └── appinfo
│ │ ├── price.jsx
│ │ ├── hearts.jsx
│ │ └── stars.jsx
├── .jshintrc
├── bower.json
├── index.html
└── webpack.config.js
├── env
├── run.sh
├── attach.sh
├── spider.sh
├── proxy.conf
├── Dockerfile
├── vagrant-setup.sh
└── docker-compose.yml
├── images
├── logo.png
├── app-logo.png
├── logo+name.png
├── logo-large.png
├── screenshots
│ ├── 1.png
│ ├── 2.png
│ ├── 3.png
│ ├── 4.png
│ ├── 5.png
│ ├── 6.png
│ └── 7.png
├── app-logo-donate.png
└── logo+name-small-black.png
├── .gitignore
├── deploy
├── run.sh
├── uappexplorer-api.service
├── env.sh.example
├── setup.sh.ref
├── post-recieve
└── nginx.conf
├── src
├── db
│ ├── review.js
│ ├── department.js
│ ├── list.js
│ ├── user.js
│ └── index.js
├── server
│ └── json
│ │ ├── essential-apps.json
│ │ └── open-source-licenses.json
├── logger.js
├── spider
│ ├── clicks
│ │ └── api.js
│ └── index.js
└── index.js
├── .jshintrc
├── po
└── uappexplorer.pot.template
└── Vagrantfile
/Procfile:
--------------------------------------------------------------------------------
1 | web: node src/index.js
2 |
--------------------------------------------------------------------------------
/.gitignore-deploy:
--------------------------------------------------------------------------------
1 | *.log
2 | node_modules/
3 |
4 |
--------------------------------------------------------------------------------
/www/.bowerrc:
--------------------------------------------------------------------------------
1 | {
2 | "directory": "bower/"
3 | }
4 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/outro.js:
--------------------------------------------------------------------------------
1 | }));
2 |
--------------------------------------------------------------------------------
/env/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | cd /srv/uappexplorer && npm run server
4 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/selector.js:
--------------------------------------------------------------------------------
1 | define([ "./selector-sizzle" ]);
2 |
--------------------------------------------------------------------------------
/env/attach.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | docker attach --sig-proxy=false uappexplorer_server_1
4 |
--------------------------------------------------------------------------------
/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/images/logo.png
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/var/arr.js:
--------------------------------------------------------------------------------
1 | define(function() {
2 | return [];
3 | });
4 |
--------------------------------------------------------------------------------
/www/img/404.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/img/404.png
--------------------------------------------------------------------------------
/www/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/img/logo.png
--------------------------------------------------------------------------------
/images/app-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/images/app-logo.png
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.log
2 | node_modules/
3 | .vagrant*
4 | config.json*
5 | dist
6 | scripts
7 | env.sh
8 |
--------------------------------------------------------------------------------
/images/logo+name.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/images/logo+name.png
--------------------------------------------------------------------------------
/images/logo-large.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/images/logo-large.png
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/ajax/var/rquery.js:
--------------------------------------------------------------------------------
1 | define(function() {
2 | return (/\?/);
3 | });
4 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/var/rnotwhite.js:
--------------------------------------------------------------------------------
1 | define(function() {
2 | return (/\S+/g);
3 | });
4 |
--------------------------------------------------------------------------------
/www/img/app-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/img/app-logo.png
--------------------------------------------------------------------------------
/www/img/logo-large.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/img/logo-large.png
--------------------------------------------------------------------------------
/images/screenshots/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/images/screenshots/1.png
--------------------------------------------------------------------------------
/images/screenshots/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/images/screenshots/2.png
--------------------------------------------------------------------------------
/images/screenshots/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/images/screenshots/3.png
--------------------------------------------------------------------------------
/images/screenshots/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/images/screenshots/4.png
--------------------------------------------------------------------------------
/images/screenshots/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/images/screenshots/5.png
--------------------------------------------------------------------------------
/images/screenshots/6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/images/screenshots/6.png
--------------------------------------------------------------------------------
/images/screenshots/7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/images/screenshots/7.png
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/css/var/rmargin.js:
--------------------------------------------------------------------------------
1 | define(function() {
2 | return (/^margin/);
3 | });
4 |
--------------------------------------------------------------------------------
/www/img/ubuntu-shape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/img/ubuntu-shape.png
--------------------------------------------------------------------------------
/images/app-logo-donate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/images/app-logo-donate.png
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/var/strundefined.js:
--------------------------------------------------------------------------------
1 | define(function() {
2 | return typeof undefined;
3 | });
4 |
--------------------------------------------------------------------------------
/env/spider.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | docker exec uappexplorer_server_1 node /srv/uappexplorer/src/runSpider.js $@
4 |
--------------------------------------------------------------------------------
/www/bower_components/swipebox/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/deploy/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | source /srv/uappexplorer/deploy/env.sh
4 |
5 | cd /srv/uappexplorer/
6 | npm start
7 |
--------------------------------------------------------------------------------
/images/logo+name-small-black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/images/logo+name-small-black.png
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/meteor/example/client/bmd.css:
--------------------------------------------------------------------------------
1 | body {
2 | background: #8BC34A;
3 | }
4 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/meteor/init.js:
--------------------------------------------------------------------------------
1 | Meteor.startup(function () {
2 | $.material.init();
3 | });
4 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/var/concat.js:
--------------------------------------------------------------------------------
1 | define([
2 | "./arr"
3 | ], function( arr ) {
4 | return arr.concat;
5 | });
6 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/var/push.js:
--------------------------------------------------------------------------------
1 | define([
2 | "./arr"
3 | ], function( arr ) {
4 | return arr.push;
5 | });
6 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/var/slice.js:
--------------------------------------------------------------------------------
1 | define([
2 | "./arr"
3 | ], function( arr ) {
4 | return arr.slice;
5 | });
6 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/var/class2type.js:
--------------------------------------------------------------------------------
1 | define(function() {
2 | // [[Class]] -> type pairs
3 | return {};
4 | });
5 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/var/indexOf.js:
--------------------------------------------------------------------------------
1 | define([
2 | "./arr"
3 | ], function( arr ) {
4 | return arr.indexOf;
5 | });
6 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/css/var/cssExpand.js:
--------------------------------------------------------------------------------
1 | define(function() {
2 | return [ "Top", "Right", "Bottom", "Left" ];
3 | });
4 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/manipulation/var/rcheckableType.js:
--------------------------------------------------------------------------------
1 | define(function() {
2 | return (/^(?:checkbox|radio)$/i);
3 | });
4 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/var/pnum.js:
--------------------------------------------------------------------------------
1 | define(function() {
2 | return (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;
3 | });
4 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/ajax/var/nonce.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../../core"
3 | ], function( jQuery ) {
4 | return jQuery.now();
5 | });
6 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/data/var/data_priv.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../Data"
3 | ], function( Data ) {
4 | return new Data();
5 | });
6 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/data/var/data_user.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../Data"
3 | ], function( Data ) {
4 | return new Data();
5 | });
6 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/less/material-fullpalette.less:
--------------------------------------------------------------------------------
1 | @import "material.less";
2 | @import "_mixins-fullpalette.less";
3 |
--------------------------------------------------------------------------------
/www/bower_components/swipebox/demo/fork.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/swipebox/demo/fork.png
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/var/toString.js:
--------------------------------------------------------------------------------
1 | define([
2 | "./class2type"
3 | ], function( class2type ) {
4 | return class2type.toString;
5 | });
6 |
--------------------------------------------------------------------------------
/www/bower_components/swipebox/src/img/icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/swipebox/src/img/icons.png
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/var/hasOwn.js:
--------------------------------------------------------------------------------
1 | define([
2 | "./class2type"
3 | ], function( class2type ) {
4 | return class2type.hasOwnProperty;
5 | });
6 |
--------------------------------------------------------------------------------
/www/bower_components/swipebox/grunt/README.md:
--------------------------------------------------------------------------------
1 | swipebox
2 | ===
3 |
4 | A touchable jQuery lightbox
5 |
6 | ---
7 |
8 | This is where the build task lives.
--------------------------------------------------------------------------------
/www/bower_components/swipebox/src/img/loader.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/swipebox/src/img/loader.gif
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/less/_labels.less:
--------------------------------------------------------------------------------
1 | .label {
2 | border-radius: 1px;
3 | .variations(~"", background-color, @grey);
4 | }
5 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/core/var/rsingleTag.js:
--------------------------------------------------------------------------------
1 | define(function() {
2 | // Match a standalone tag
3 | return (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
4 | });
5 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/var/support.js:
--------------------------------------------------------------------------------
1 | define(function() {
2 | // All support tests are defined in their respective modules.
3 | return {};
4 | });
5 |
--------------------------------------------------------------------------------
/www/bower_components/swipebox/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "swipebox",
3 | "version": "1.4.1",
4 | "main": "src/js/jquery.swipebox.js",
5 | "ignore": []
6 | }
7 |
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/font-awesome/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/www/bower_components/slick-carousel/slick/ajax-loader.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/slick-carousel/slick/ajax-loader.gif
--------------------------------------------------------------------------------
/www/bower_components/slick-carousel/slick/fonts/slick.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/slick-carousel/slick/fonts/slick.eot
--------------------------------------------------------------------------------
/www/bower_components/slick-carousel/slick/fonts/slick.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/slick-carousel/slick/fonts/slick.ttf
--------------------------------------------------------------------------------
/www/bower_components/slick-carousel/slick/fonts/slick.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/slick-carousel/slick/fonts/slick.woff
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/font-awesome/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/font-awesome/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/font-awesome/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/css/var/rnumnonpx.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../../var/pnum"
3 | ], function( pnum ) {
4 | return new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
5 | });
6 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/grunt/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "extends" : "../js/.jshintrc",
3 | "asi" : false,
4 | "browser" : false,
5 | "es3" : false,
6 | "node" : true
7 | }
8 |
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/font-awesome/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/less/_icons.less:
--------------------------------------------------------------------------------
1 | .mdi, icon {
2 | .variations(~"", color, @lightbg-text);
3 | line-height: inherit;
4 | vertical-align: bottom;
5 | }
6 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/less/fixed-width.less:
--------------------------------------------------------------------------------
1 | // Fixed Width Icons
2 | // -------------------------
3 | .@{fa-css-prefix}-fw {
4 | width: (18em / 14);
5 | text-align: center;
6 | }
7 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/traversing/var/rneedsContext.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../../core",
3 | "../../selector"
4 | ], function( jQuery ) {
5 | return jQuery.expr.match.needsContext;
6 | });
7 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/fading_entrances/fadeIn.css:
--------------------------------------------------------------------------------
1 | @keyframes fadeIn {
2 | from {opacity: 0;}
3 | 100% {opacity: 1;}
4 | }
5 |
6 | .fadeIn {
7 | animation-name: fadeIn;
8 | }
9 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/fading_exits/fadeOut.css:
--------------------------------------------------------------------------------
1 | @keyframes fadeOut {
2 | from {opacity: 1;}
3 | 100% {opacity: 0;}
4 | }
5 |
6 | .fadeOut {
7 | animation-name: fadeOut;
8 | }
9 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/scss/_fixed-width.scss:
--------------------------------------------------------------------------------
1 | // Fixed Width Icons
2 | // -------------------------
3 | .#{$fa-css-prefix}-fw {
4 | width: (18em / 14);
5 | text-align: center;
6 | }
7 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/fonts/RobotoDraftBold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap-material-design/fonts/RobotoDraftBold.woff
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/fonts/RobotoDraftBold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap-material-design/fonts/RobotoDraftBold.woff2
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/mixins/center-block.less:
--------------------------------------------------------------------------------
1 | // Center-align a block level element
2 |
3 | .center-block() {
4 | display: block;
5 | margin-left: auto;
6 | margin-right: auto;
7 | }
8 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/fonts/RobotoDraftItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap-material-design/fonts/RobotoDraftItalic.woff
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/fonts/RobotoDraftItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap-material-design/fonts/RobotoDraftItalic.woff2
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/fonts/RobotoDraftMedium.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap-material-design/fonts/RobotoDraftMedium.woff
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/fonts/RobotoDraftMedium.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap-material-design/fonts/RobotoDraftMedium.woff2
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/fonts/RobotoDraftRegular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap-material-design/fonts/RobotoDraftRegular.woff
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/fonts/RobotoDraftRegular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap-material-design/fonts/RobotoDraftRegular.woff2
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/www/bower_components/slick-carousel/Makefile:
--------------------------------------------------------------------------------
1 |
2 | build: components slick.js slick.css
3 | @component build --dev
4 |
5 | components: component.json
6 | @component install --dev
7 |
8 | .PHONY: clean
9 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/dist/fonts/RobotoDraftBold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap-material-design/dist/fonts/RobotoDraftBold.woff
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/dist/fonts/RobotoDraftBold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap-material-design/dist/fonts/RobotoDraftBold.woff2
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/fonts/Material-Design-Icons.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap-material-design/fonts/Material-Design-Icons.eot
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/fonts/Material-Design-Icons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap-material-design/fonts/Material-Design-Icons.ttf
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/fonts/Material-Design-Icons.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap-material-design/fonts/Material-Design-Icons.woff
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/event/support.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../var/support"
3 | ], function( support ) {
4 |
5 | support.focusinBubbles = "onfocusin" in window;
6 |
7 | return support;
8 |
9 | });
10 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/dist/fonts/RobotoDraftItalic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap-material-design/dist/fonts/RobotoDraftItalic.woff
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/dist/fonts/RobotoDraftItalic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap-material-design/dist/fonts/RobotoDraftItalic.woff2
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/dist/fonts/RobotoDraftMedium.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap-material-design/dist/fonts/RobotoDraftMedium.woff
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/dist/fonts/RobotoDraftMedium.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap-material-design/dist/fonts/RobotoDraftMedium.woff2
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/dist/fonts/RobotoDraftRegular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap-material-design/dist/fonts/RobotoDraftRegular.woff
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/dist/fonts/RobotoDraftRegular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap-material-design/dist/fonts/RobotoDraftRegular.woff2
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/dist/fonts/Material-Design-Icons.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap-material-design/dist/fonts/Material-Design-Icons.eot
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/dist/fonts/Material-Design-Icons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap-material-design/dist/fonts/Material-Design-Icons.ttf
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/dist/fonts/Material-Design-Icons.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bhdouglass/uappexplorer/HEAD/www/bower_components/bootstrap-material-design/dist/fonts/Material-Design-Icons.woff
--------------------------------------------------------------------------------
/env/proxy.conf:
--------------------------------------------------------------------------------
1 | server {
2 | listen 80;
3 | server_name local.uappexplorer.com;
4 |
5 | location / {
6 | proxy_pass http://localhost:8080;
7 | proxy_set_header Host $host;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/mixins/size.less:
--------------------------------------------------------------------------------
1 | // Sizing shortcuts
2 |
3 | .size(@width; @height) {
4 | width: @width;
5 | height: @height;
6 | }
7 |
8 | .square(@size) {
9 | .size(@size; @size);
10 | }
11 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/mixins/opacity.less:
--------------------------------------------------------------------------------
1 | // Opacity
2 |
3 | .opacity(@opacity) {
4 | opacity: @opacity;
5 | // IE8 filter
6 | @opacity-ie: (@opacity * 100);
7 | filter: ~"alpha(opacity=@{opacity-ie})";
8 | }
9 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/mixins/text-emphasis.less:
--------------------------------------------------------------------------------
1 | // Typography
2 |
3 | .text-emphasis-variant(@color) {
4 | color: @color;
5 | a&:hover,
6 | a&:focus {
7 | color: darken(@color, 10%);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/www/less/master.less:
--------------------------------------------------------------------------------
1 | @import "theme.less";
2 | @import "material.less";
3 | @import "main.less";
4 | @import "apps.less";
5 | @import "app.less";
6 | @import "appView.less";
7 | @import "lists.less";
8 | @import "fontAwesome.less";
9 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/meteor/example/run.bat:
--------------------------------------------------------------------------------
1 | mklink ..\..\package.js "meteor/package-noglyph.js"
2 | mklink package.json "../../package.json"
3 | set MONGO_URL=mongodb://
4 | meteor run
5 | del ..\..\package.js package.json
6 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "animate.css",
3 | "main": "./animate.css",
4 | "ignore": [
5 | ".*",
6 | "src",
7 | "*.yml",
8 | "Gemfile",
9 | "Gemfile.lock",
10 | "*.md"
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/mixins/text-overflow.less:
--------------------------------------------------------------------------------
1 | // Text overflow
2 | // Requires inline-block or block for proper styling
3 |
4 | .text-overflow() {
5 | overflow: hidden;
6 | text-overflow: ellipsis;
7 | white-space: nowrap;
8 | }
9 |
--------------------------------------------------------------------------------
/www/bower_components/slick-carousel/slick/config.rb:
--------------------------------------------------------------------------------
1 | css_dir = "."
2 | sass_dir = "."
3 | images_dir = "."
4 | fonts_dir = "fonts"
5 | relative_assets = true
6 |
7 | output_style = :compact
8 | line_comments = false
9 |
10 | preferred_syntax = :scss
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/mixins/background-variant.less:
--------------------------------------------------------------------------------
1 | // Contextual backgrounds
2 |
3 | .bg-variant(@color) {
4 | background-color: @color;
5 | a&:hover,
6 | a&:focus {
7 | background-color: darken(@color, 10%);
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/mixins/tab-focus.less:
--------------------------------------------------------------------------------
1 | // WebKit-style focus
2 |
3 | .tab-focus() {
4 | // Default
5 | outline: thin dotted;
6 | // WebKit
7 | outline: 5px auto -webkit-focus-ring-color;
8 | outline-offset: -2px;
9 | }
10 |
--------------------------------------------------------------------------------
/env/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:6.11
2 | MAINTAINER Brian Douglass
3 |
4 | RUN apt-get install -y libstdc++6
5 | RUN npm install supervisor gulp -g
6 |
7 | ADD run.sh /usr/local/bin/run
8 | RUN chmod +x /usr/local/bin/run
9 |
10 | EXPOSE 8080
11 | CMD run
12 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/attention_seekers/flash.css:
--------------------------------------------------------------------------------
1 | @keyframes flash {
2 | from, 50%, 100% {
3 | opacity: 1;
4 | }
5 |
6 | 25%, 75% {
7 | opacity: 0;
8 | }
9 | }
10 |
11 | .flash {
12 | animation-name: flash;
13 | }
14 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/mixins/labels.less:
--------------------------------------------------------------------------------
1 | // Labels
2 |
3 | .label-variant(@color) {
4 | background-color: @color;
5 |
6 | &[href] {
7 | &:hover,
8 | &:focus {
9 | background-color: darken(@color, 10%);
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/mixins/resize.less:
--------------------------------------------------------------------------------
1 | // Resize anything
2 |
3 | .resizable(@direction) {
4 | resize: @direction; // Options: horizontal, vertical, both
5 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`
6 | }
7 |
--------------------------------------------------------------------------------
/src/db/review.js:
--------------------------------------------------------------------------------
1 | var mongoose = require('mongoose');
2 |
3 | var reviewSchema = mongoose.Schema({
4 | name: {type: String, index: true},
5 | reviews: [{}],
6 | stats: {},
7 | });
8 |
9 | var Review = mongoose.model('Review', reviewSchema);
10 |
11 | exports.Review = Review;
12 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/zooming_entrances/zoomIn.css:
--------------------------------------------------------------------------------
1 | @keyframes zoomIn {
2 | from {
3 | opacity: 0;
4 | transform: scale3d(.3, .3, .3);
5 | }
6 |
7 | 50% {
8 | opacity: 1;
9 | }
10 | }
11 |
12 | .zoomIn {
13 | animation-name: zoomIn;
14 | }
15 |
--------------------------------------------------------------------------------
/deploy/uappexplorer-api.service:
--------------------------------------------------------------------------------
1 | [Service]
2 | ExecStart=/srv/uappexplorer/deploy/run.sh
3 | Restart=always
4 | StandardOutput=syslog
5 | StandardError=syslog
6 | SyslogIdentifier=uappexplorer
7 | User=uappexplorer
8 | Group=uappexplorer
9 |
10 | [Install]
11 | WantedBy=multi-user.target
12 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/mixins/progress-bar.less:
--------------------------------------------------------------------------------
1 | // Progress bars
2 |
3 | .progress-bar-variant(@color) {
4 | background-color: @color;
5 |
6 | // Deprecated parent class requirement as of v3.2.0
7 | .progress-striped & {
8 | #gradient > .striped();
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/attributes.js:
--------------------------------------------------------------------------------
1 | define([
2 | "./core",
3 | "./attributes/attr",
4 | "./attributes/prop",
5 | "./attributes/classes",
6 | "./attributes/val"
7 | ], function( jQuery ) {
8 |
9 | // Return jQuery for attributes-only inclusion
10 | return jQuery;
11 | });
12 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/fading_exits/fadeOutUp.css:
--------------------------------------------------------------------------------
1 | @keyframes fadeOutUp {
2 | from {
3 | opacity: 1;
4 | }
5 |
6 | 100% {
7 | opacity: 0;
8 | transform: translate3d(0, -100%, 0);
9 | }
10 | }
11 |
12 | .fadeOutUp {
13 | animation-name: fadeOutUp;
14 | }
15 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/fading_exits/fadeOutDown.css:
--------------------------------------------------------------------------------
1 | @keyframes fadeOutDown {
2 | from {
3 | opacity: 1;
4 | }
5 |
6 | 100% {
7 | opacity: 0;
8 | transform: translate3d(0, 100%, 0);
9 | }
10 | }
11 |
12 | .fadeOutDown {
13 | animation-name: fadeOutDown;
14 | }
15 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/fading_exits/fadeOutLeft.css:
--------------------------------------------------------------------------------
1 | @keyframes fadeOutLeft {
2 | from {
3 | opacity: 1;
4 | }
5 |
6 | 100% {
7 | opacity: 0;
8 | transform: translate3d(-100%, 0, 0);
9 | }
10 | }
11 |
12 | .fadeOutLeft {
13 | animation-name: fadeOutLeft;
14 | }
15 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/fading_exits/fadeOutRight.css:
--------------------------------------------------------------------------------
1 | @keyframes fadeOutRight {
2 | from {
3 | opacity: 1;
4 | }
5 |
6 | 100% {
7 | opacity: 0;
8 | transform: translate3d(100%, 0, 0);
9 | }
10 | }
11 |
12 | .fadeOutRight {
13 | animation-name: fadeOutRight;
14 | }
15 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/fading_exits/fadeOutUpBig.css:
--------------------------------------------------------------------------------
1 | @keyframes fadeOutUpBig {
2 | from {
3 | opacity: 1;
4 | }
5 |
6 | 100% {
7 | opacity: 0;
8 | transform: translate3d(0, -2000px, 0);
9 | }
10 | }
11 |
12 | .fadeOutUpBig {
13 | animation-name: fadeOutUpBig;
14 | }
15 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/less/_progress.less:
--------------------------------------------------------------------------------
1 | .progress {
2 | height: 4px;
3 | border-radius: 0;
4 | box-shadow: none;
5 | background: #c8c8c8;
6 | .progress-bar {
7 | box-shadow: none;
8 | .variations(~"", background-color, @primary);
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/fading_exits/fadeOutDownBig.css:
--------------------------------------------------------------------------------
1 | @keyframes fadeOutDownBig {
2 | from {
3 | opacity: 1;
4 | }
5 |
6 | 100% {
7 | opacity: 0;
8 | transform: translate3d(0, 2000px, 0);
9 | }
10 | }
11 |
12 | .fadeOutDownBig {
13 | animation-name: fadeOutDownBig;
14 | }
15 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/fading_entrances/fadeInUp.css:
--------------------------------------------------------------------------------
1 | @keyframes fadeInUp {
2 | from {
3 | opacity: 0;
4 | transform: translate3d(0, 100%, 0);
5 | }
6 |
7 | 100% {
8 | opacity: 1;
9 | transform: none;
10 | }
11 | }
12 |
13 | .fadeInUp {
14 | animation-name: fadeInUp;
15 | }
16 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/fading_exits/fadeOutLeftBig.css:
--------------------------------------------------------------------------------
1 | @keyframes fadeOutLeftBig {
2 | from {
3 | opacity: 1;
4 | }
5 |
6 | 100% {
7 | opacity: 0;
8 | transform: translate3d(-2000px, 0, 0);
9 | }
10 | }
11 |
12 | .fadeOutLeftBig {
13 | animation-name: fadeOutLeftBig;
14 | }
15 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/fading_exits/fadeOutRightBig.css:
--------------------------------------------------------------------------------
1 | @keyframes fadeOutRightBig {
2 | from {
3 | opacity: 1;
4 | }
5 |
6 | 100% {
7 | opacity: 0;
8 | transform: translate3d(2000px, 0, 0);
9 | }
10 | }
11 |
12 | .fadeOutRightBig {
13 | animation-name: fadeOutRightBig;
14 | }
15 |
--------------------------------------------------------------------------------
/src/db/department.js:
--------------------------------------------------------------------------------
1 | var mongoose = require('mongoose');
2 |
3 | var departmentSchema = mongoose.Schema({
4 | internal_name: {type: String, index: true},
5 | name: String,
6 | url: String,
7 | });
8 |
9 | var Department = mongoose.model('Department', departmentSchema);
10 |
11 | exports.Department = Department;
12 |
--------------------------------------------------------------------------------
/src/db/list.js:
--------------------------------------------------------------------------------
1 | var mongoose = require('mongoose');
2 |
3 | var listSchema = mongoose.Schema({
4 | name: String,
5 | packages: [String],
6 | sort: String,
7 | user_name: String,
8 | user: {type: String, index: true},
9 | });
10 |
11 | var List = mongoose.model('List', listSchema);
12 |
13 | exports.List = List;
14 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/ajax/parseJSON.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core"
3 | ], function( jQuery ) {
4 |
5 | // Support: Android 2.3
6 | // Workaround failure to string-cast null input
7 | jQuery.parseJSON = function( data ) {
8 | return JSON.parse( data + "" );
9 | };
10 |
11 | return jQuery.parseJSON;
12 |
13 | });
14 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/deprecated.js:
--------------------------------------------------------------------------------
1 | define([
2 | "./core",
3 | "./traversing"
4 | ], function( jQuery ) {
5 |
6 | // The number of elements contained in the matched element set
7 | jQuery.fn.size = function() {
8 | return this.length;
9 | };
10 |
11 | jQuery.fn.andSelf = jQuery.fn.addBack;
12 |
13 | });
14 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/fading_entrances/fadeInDown.css:
--------------------------------------------------------------------------------
1 | @keyframes fadeInDown {
2 | from {
3 | opacity: 0;
4 | transform: translate3d(0, -100%, 0);
5 | }
6 |
7 | 100% {
8 | opacity: 1;
9 | transform: none;
10 | }
11 | }
12 |
13 | .fadeInDown {
14 | animation-name: fadeInDown;
15 | }
16 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/fading_entrances/fadeInLeft.css:
--------------------------------------------------------------------------------
1 | @keyframes fadeInLeft {
2 | from {
3 | opacity: 0;
4 | transform: translate3d(-100%, 0, 0);
5 | }
6 |
7 | 100% {
8 | opacity: 1;
9 | transform: none;
10 | }
11 | }
12 |
13 | .fadeInLeft {
14 | animation-name: fadeInLeft;
15 | }
16 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/sliding_entrances/slideInUp.css:
--------------------------------------------------------------------------------
1 | @keyframes slideInUp {
2 | from {
3 | transform: translate3d(0, 100%, 0);
4 | visibility: visible;
5 | }
6 |
7 | 100% {
8 | transform: translate3d(0, 0, 0);
9 | }
10 | }
11 |
12 | .slideInUp {
13 | animation-name: slideInUp;
14 | }
15 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/sliding_exits/slideOutUp.css:
--------------------------------------------------------------------------------
1 | @keyframes slideOutUp {
2 | from {
3 | transform: translate3d(0, 0, 0);
4 | }
5 |
6 | 100% {
7 | visibility: hidden;
8 | transform: translate3d(0, -100%, 0);
9 | }
10 | }
11 |
12 | .slideOutUp {
13 | animation-name: slideOutUp;
14 | }
15 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/mixins/nav-divider.less:
--------------------------------------------------------------------------------
1 | // Horizontal dividers
2 | //
3 | // Dividers (basically an hr) within dropdowns and nav lists
4 |
5 | .nav-divider(@color: #e5e5e5) {
6 | height: 1px;
7 | margin: ((@line-height-computed / 2) - 1) 0;
8 | overflow: hidden;
9 | background-color: @color;
10 | }
11 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/mixins/reset-filter.less:
--------------------------------------------------------------------------------
1 | // Reset filters for IE
2 | //
3 | // When you need to remove a gradient background, do not forget to use this to reset
4 | // the IE filter for IE9 and below.
5 |
6 | .reset-filter() {
7 | filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)"));
8 | }
9 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/fading_entrances/fadeInRight.css:
--------------------------------------------------------------------------------
1 | @keyframes fadeInRight {
2 | from {
3 | opacity: 0;
4 | transform: translate3d(100%, 0, 0);
5 | }
6 |
7 | 100% {
8 | opacity: 1;
9 | transform: none;
10 | }
11 | }
12 |
13 | .fadeInRight {
14 | animation-name: fadeInRight;
15 | }
16 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/fading_entrances/fadeInUpBig.css:
--------------------------------------------------------------------------------
1 | @keyframes fadeInUpBig {
2 | from {
3 | opacity: 0;
4 | transform: translate3d(0, 2000px, 0);
5 | }
6 |
7 | 100% {
8 | opacity: 1;
9 | transform: none;
10 | }
11 | }
12 |
13 | .fadeInUpBig {
14 | animation-name: fadeInUpBig;
15 | }
16 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/sliding_exits/slideOutDown.css:
--------------------------------------------------------------------------------
1 | @keyframes slideOutDown {
2 | from {
3 | transform: translate3d(0, 0, 0);
4 | }
5 |
6 | 100% {
7 | visibility: hidden;
8 | transform: translate3d(0, 100%, 0);
9 | }
10 | }
11 |
12 | .slideOutDown {
13 | animation-name: slideOutDown;
14 | }
15 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/zooming_exits/zoomOut.css:
--------------------------------------------------------------------------------
1 | @keyframes zoomOut {
2 | from {
3 | opacity: 1;
4 | }
5 |
6 | 50% {
7 | opacity: 0;
8 | transform: scale3d(.3, .3, .3);
9 | }
10 |
11 | 100% {
12 | opacity: 0;
13 | }
14 | }
15 |
16 | .zoomOut {
17 | animation-name: zoomOut;
18 | }
19 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/sliding_entrances/slideInDown.css:
--------------------------------------------------------------------------------
1 | @keyframes slideInDown {
2 | from {
3 | transform: translate3d(0, -100%, 0);
4 | visibility: visible;
5 | }
6 |
7 | 100% {
8 | transform: translate3d(0, 0, 0);
9 | }
10 | }
11 |
12 | .slideInDown {
13 | animation-name: slideInDown;
14 | }
15 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/sliding_entrances/slideInLeft.css:
--------------------------------------------------------------------------------
1 | @keyframes slideInLeft {
2 | from {
3 | transform: translate3d(-100%, 0, 0);
4 | visibility: visible;
5 | }
6 |
7 | 100% {
8 | transform: translate3d(0, 0, 0);
9 | }
10 | }
11 |
12 | .slideInLeft {
13 | animation-name: slideInLeft;
14 | }
15 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/sliding_entrances/slideInRight.css:
--------------------------------------------------------------------------------
1 | @keyframes slideInRight {
2 | from {
3 | transform: translate3d(100%, 0, 0);
4 | visibility: visible;
5 | }
6 |
7 | 100% {
8 | transform: translate3d(0, 0, 0);
9 | }
10 | }
11 |
12 | .slideInRight {
13 | animation-name: slideInRight;
14 | }
15 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/sliding_exits/slideOutLeft.css:
--------------------------------------------------------------------------------
1 | @keyframes slideOutLeft {
2 | from {
3 | transform: translate3d(0, 0, 0);
4 | }
5 |
6 | 100% {
7 | visibility: hidden;
8 | transform: translate3d(-100%, 0, 0);
9 | }
10 | }
11 |
12 | .slideOutLeft {
13 | animation-name: slideOutLeft;
14 | }
15 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/sliding_exits/slideOutRight.css:
--------------------------------------------------------------------------------
1 | @keyframes slideOutRight {
2 | from {
3 | transform: translate3d(0, 0, 0);
4 | }
5 |
6 | 100% {
7 | visibility: hidden;
8 | transform: translate3d(100%, 0, 0);
9 | }
10 | }
11 |
12 | .slideOutRight {
13 | animation-name: slideOutRight;
14 | }
15 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/effects/animatedSelector.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core",
3 | "../selector",
4 | "../effects"
5 | ], function( jQuery ) {
6 |
7 | jQuery.expr.filters.animated = function( elem ) {
8 | return jQuery.grep(jQuery.timers, function( fn ) {
9 | return elem === fn.elem;
10 | }).length;
11 | };
12 |
13 | });
14 |
--------------------------------------------------------------------------------
/www/bower_components/swipebox/.gitignore:
--------------------------------------------------------------------------------
1 | # Ignore dist
2 | dist/
3 | stage/
4 |
5 | # Ignore demo scss
6 | demo/scss/
7 |
8 | # Ignore grunt stuff
9 | **/.sass-cache
10 | **/.grunt
11 | **/node_modules
12 |
13 | # Windows image file caches
14 | Thumbs.db
15 |
16 | # Folder config file
17 | Desktop.ini
18 |
19 | # Mac crap
20 | .DS_Store
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/fading_entrances/fadeInDownBig.css:
--------------------------------------------------------------------------------
1 | @keyframes fadeInDownBig {
2 | from {
3 | opacity: 0;
4 | transform: translate3d(0, -2000px, 0);
5 | }
6 |
7 | 100% {
8 | opacity: 1;
9 | transform: none;
10 | }
11 | }
12 |
13 | .fadeInDownBig {
14 | animation-name: fadeInDownBig;
15 | }
16 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/fading_entrances/fadeInLeftBig.css:
--------------------------------------------------------------------------------
1 | @keyframes fadeInLeftBig {
2 | from {
3 | opacity: 0;
4 | transform: translate3d(-2000px, 0, 0);
5 | }
6 |
7 | 100% {
8 | opacity: 1;
9 | transform: none;
10 | }
11 | }
12 |
13 | .fadeInLeftBig {
14 | animation-name: fadeInLeftBig;
15 | }
16 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/fading_entrances/fadeInRightBig.css:
--------------------------------------------------------------------------------
1 | @keyframes fadeInRightBig {
2 | from {
3 | opacity: 0;
4 | transform: translate3d(2000px, 0, 0);
5 | }
6 |
7 | 100% {
8 | opacity: 1;
9 | transform: none;
10 | }
11 | }
12 |
13 | .fadeInRightBig {
14 | animation-name: fadeInRightBig;
15 | }
16 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/sass/_animations.scss:
--------------------------------------------------------------------------------
1 | // main: _material.scss
2 |
3 | @keyframes input-highlight {
4 | 0% {
5 | left: 20%;
6 | width: 20%;
7 | }
8 | 99% {
9 | width: 0;
10 | left: 0;
11 | opacity: 1;
12 | }
13 | 100% {
14 | opacity: 0;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/bouncing_exits/bounceOutLeft.css:
--------------------------------------------------------------------------------
1 | @keyframes bounceOutLeft {
2 | 20% {
3 | opacity: 1;
4 | transform: translate3d(20px, 0, 0);
5 | }
6 |
7 | 100% {
8 | opacity: 0;
9 | transform: translate3d(-2000px, 0, 0);
10 | }
11 | }
12 |
13 | .bounceOutLeft {
14 | animation-name: bounceOutLeft;
15 | }
16 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/bouncing_exits/bounceOutRight.css:
--------------------------------------------------------------------------------
1 | @keyframes bounceOutRight {
2 | 20% {
3 | opacity: 1;
4 | transform: translate3d(-20px, 0, 0);
5 | }
6 |
7 | 100% {
8 | opacity: 0;
9 | transform: translate3d(2000px, 0, 0);
10 | }
11 | }
12 |
13 | .bounceOutRight {
14 | animation-name: bounceOutRight;
15 | }
16 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/lightspeed/lightSpeedOut.css:
--------------------------------------------------------------------------------
1 | @keyframes lightSpeedOut {
2 | from {
3 | opacity: 1;
4 | }
5 |
6 | 100% {
7 | transform: translate3d(100%, 0, 0) skewX(30deg);
8 | opacity: 0;
9 | }
10 | }
11 |
12 | .lightSpeedOut {
13 | animation-name: lightSpeedOut;
14 | animation-timing-function: ease-in;
15 | }
16 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/rotating_exits/rotateOut.css:
--------------------------------------------------------------------------------
1 | @keyframes rotateOut {
2 | from {
3 | transform-origin: center;
4 | opacity: 1;
5 | }
6 |
7 | 100% {
8 | transform-origin: center;
9 | transform: rotate3d(0, 0, 1, 200deg);
10 | opacity: 0;
11 | }
12 | }
13 |
14 | .rotateOut {
15 | animation-name: rotateOut;
16 | }
17 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/mixins/alerts.less:
--------------------------------------------------------------------------------
1 | // Alerts
2 |
3 | .alert-variant(@background; @border; @text-color) {
4 | background-color: @background;
5 | border-color: @border;
6 | color: @text-color;
7 |
8 | hr {
9 | border-top-color: darken(@border, 5%);
10 | }
11 | .alert-link {
12 | color: darken(@text-color, 10%);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/manipulation/_evalUrl.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../ajax"
3 | ], function( jQuery ) {
4 |
5 | jQuery._evalUrl = function( url ) {
6 | return jQuery.ajax({
7 | url: url,
8 | type: "GET",
9 | dataType: "script",
10 | async: false,
11 | global: false,
12 | "throws": true
13 | });
14 | };
15 |
16 | return jQuery._evalUrl;
17 |
18 | });
19 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/js/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "asi" : true,
3 | "browser" : true,
4 | "eqeqeq" : false,
5 | "eqnull" : true,
6 | "es3" : true,
7 | "expr" : true,
8 | "jquery" : true,
9 | "latedef" : true,
10 | "laxbreak" : true,
11 | "nonbsp" : true,
12 | "strict" : true,
13 | "undef" : true,
14 | "unused" : true
15 | }
16 |
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/HELP-US-OUT.txt:
--------------------------------------------------------------------------------
1 | I hope you love Font Awesome. If you've found it useful, please do me a favor and check out my latest project,
2 | Fonticons (https://fonticons.com). It makes it easy to put the perfect icons on your website. Choose from our awesome,
3 | comprehensive icon sets or copy and paste your own.
4 |
5 | Please. Check it out.
6 |
7 | -Dave Gandy
8 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/rotating_entrances/rotateIn.css:
--------------------------------------------------------------------------------
1 | @keyframes rotateIn {
2 | from {
3 | transform-origin: center;
4 | transform: rotate3d(0, 0, 1, -200deg);
5 | opacity: 0;
6 | }
7 |
8 | 100% {
9 | transform-origin: center;
10 | transform: none;
11 | opacity: 1;
12 | }
13 | }
14 |
15 | .rotateIn {
16 | animation-name: rotateIn;
17 | }
18 |
--------------------------------------------------------------------------------
/deploy/env.sh.example:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | export NODE_ENV="production"
4 | export ELASTICSEARCH_URI=""
5 | export MAILHIDE_PRIVATEKEY=""
6 | export MAILHIDE_PUBLICKEY=""
7 | export MONGODB_DB=""
8 | export MONGODB_URI=""
9 | export NODEJS_HOST=""
10 | export NODEJS_STATIC=""
11 | export PAPERTRAIL_HOST=""
12 | export PAPERTRAIL_PORT=""
13 | export PROCESS_LIMIT=""
14 | export SESSION_SECRET=""
15 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/attention_seekers/shake.css:
--------------------------------------------------------------------------------
1 | @keyframes shake {
2 | from, 100% {
3 | transform: translate3d(0, 0, 0);
4 | }
5 |
6 | 10%, 30%, 50%, 70%, 90% {
7 | transform: translate3d(-10px, 0, 0);
8 | }
9 |
10 | 20%, 40%, 60%, 80% {
11 | transform: translate3d(10px, 0, 0);
12 | }
13 | }
14 |
15 | .shake {
16 | animation-name: shake;
17 | }
18 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/specials/rollOut.css:
--------------------------------------------------------------------------------
1 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
2 |
3 | @keyframes rollOut {
4 | from {
5 | opacity: 1;
6 | }
7 |
8 | 100% {
9 | opacity: 0;
10 | transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
11 | }
12 | }
13 |
14 | .rollOut {
15 | animation-name: rollOut;
16 | }
17 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/rotating_exits/rotateOutUpLeft.css:
--------------------------------------------------------------------------------
1 | @keyframes rotateOutUpLeft {
2 | from {
3 | transform-origin: left bottom;
4 | opacity: 1;
5 | }
6 |
7 | 100% {
8 | transform-origin: left bottom;
9 | transform: rotate3d(0, 0, 1, -45deg);
10 | opacity: 0;
11 | }
12 | }
13 |
14 | .rotateOutUpLeft {
15 | animation-name: rotateOutUpLeft;
16 | }
17 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/selector-sizzle.js:
--------------------------------------------------------------------------------
1 | define([
2 | "./core",
3 | "sizzle"
4 | ], function( jQuery, Sizzle ) {
5 |
6 | jQuery.find = Sizzle;
7 | jQuery.expr = Sizzle.selectors;
8 | jQuery.expr[":"] = jQuery.expr.pseudos;
9 | jQuery.unique = Sizzle.uniqueSort;
10 | jQuery.text = Sizzle.getText;
11 | jQuery.isXMLDoc = Sizzle.isXML;
12 | jQuery.contains = Sizzle.contains;
13 |
14 | });
15 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/bouncing_exits/bounceOut.css:
--------------------------------------------------------------------------------
1 | @keyframes bounceOut {
2 | 20% {
3 | transform: scale3d(.9, .9, .9);
4 | }
5 |
6 | 50%, 55% {
7 | opacity: 1;
8 | transform: scale3d(1.1, 1.1, 1.1);
9 | }
10 |
11 | 100% {
12 | opacity: 0;
13 | transform: scale3d(.3, .3, .3);
14 | }
15 | }
16 |
17 | .bounceOut {
18 | animation-name: bounceOut;
19 | }
20 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/rotating_exits/rotateOutDownLeft.css:
--------------------------------------------------------------------------------
1 | @keyframes rotateOutDownLeft {
2 | from {
3 | transform-origin: left bottom;
4 | opacity: 1;
5 | }
6 |
7 | 100% {
8 | transform-origin: left bottom;
9 | transform: rotate3d(0, 0, 1, 45deg);
10 | opacity: 0;
11 | }
12 | }
13 |
14 | .rotateOutDownLeft {
15 | animation-name: rotateOutDownLeft;
16 | }
17 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/rotating_exits/rotateOutUpRight.css:
--------------------------------------------------------------------------------
1 | @keyframes rotateOutUpRight {
2 | from {
3 | transform-origin: right bottom;
4 | opacity: 1;
5 | }
6 |
7 | 100% {
8 | transform-origin: right bottom;
9 | transform: rotate3d(0, 0, 1, 90deg);
10 | opacity: 0;
11 | }
12 | }
13 |
14 | .rotateOutUpRight {
15 | animation-name: rotateOutUpRight;
16 | }
17 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/rotating_exits/rotateOutDownRight.css:
--------------------------------------------------------------------------------
1 | @keyframes rotateOutDownRight {
2 | from {
3 | transform-origin: right bottom;
4 | opacity: 1;
5 | }
6 |
7 | 100% {
8 | transform-origin: right bottom;
9 | transform: rotate3d(0, 0, 1, -45deg);
10 | opacity: 0;
11 | }
12 | }
13 |
14 | .rotateOutDownRight {
15 | animation-name: rotateOutDownRight;
16 | }
17 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/event/ajax.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core",
3 | "../event"
4 | ], function( jQuery ) {
5 |
6 | // Attach a bunch of functions for handling common AJAX events
7 | jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
8 | jQuery.fn[ type ] = function( fn ) {
9 | return this.on( type, fn );
10 | };
11 | });
12 |
13 | });
14 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/specials/rollIn.css:
--------------------------------------------------------------------------------
1 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
2 |
3 | @keyframes rollIn {
4 | from {
5 | opacity: 0;
6 | transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
7 | }
8 |
9 | 100% {
10 | opacity: 1;
11 | transform: none;
12 | }
13 | }
14 |
15 | .rollIn {
16 | animation-name: rollIn;
17 | }
18 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/zooming_exits/zoomOutLeft.css:
--------------------------------------------------------------------------------
1 | @keyframes zoomOutLeft {
2 | 40% {
3 | opacity: 1;
4 | transform: scale3d(.475, .475, .475) translate3d(42px, 0, 0);
5 | }
6 |
7 | 100% {
8 | opacity: 0;
9 | transform: scale(.1) translate3d(-2000px, 0, 0);
10 | transform-origin: left center;
11 | }
12 | }
13 |
14 | .zoomOutLeft {
15 | animation-name: zoomOutLeft;
16 | }
17 |
--------------------------------------------------------------------------------
/www/less/lists.less:
--------------------------------------------------------------------------------
1 | .lists {
2 | .btn-sm {
3 | padding-right: 15px;
4 | padding-left: 15px;
5 | }
6 |
7 | .list-group {
8 | margin-bottom: 0;
9 | }
10 | }
11 |
12 | .list {
13 | .list-header {
14 | margin-bottom: 20px;
15 | }
16 |
17 | .social-links {
18 | margin-right: 10px;
19 | }
20 | }
21 |
22 | .list-edit {
23 | .search-box {
24 | margin-bottom: 10px;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/bouncing_exits/bounceOutUp.css:
--------------------------------------------------------------------------------
1 | @keyframes bounceOutUp {
2 | 20% {
3 | transform: translate3d(0, -10px, 0);
4 | }
5 |
6 | 40%, 45% {
7 | opacity: 1;
8 | transform: translate3d(0, 20px, 0);
9 | }
10 |
11 | 100% {
12 | opacity: 0;
13 | transform: translate3d(0, -2000px, 0);
14 | }
15 | }
16 |
17 | .bounceOutUp {
18 | animation-name: bounceOutUp;
19 | }
20 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/rotating_entrances/rotateInUpLeft.css:
--------------------------------------------------------------------------------
1 | @keyframes rotateInUpLeft {
2 | from {
3 | transform-origin: left bottom;
4 | transform: rotate3d(0, 0, 1, 45deg);
5 | opacity: 0;
6 | }
7 |
8 | 100% {
9 | transform-origin: left bottom;
10 | transform: none;
11 | opacity: 1;
12 | }
13 | }
14 |
15 | .rotateInUpLeft {
16 | animation-name: rotateInUpLeft;
17 | }
18 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/zooming_exits/zoomOutRight.css:
--------------------------------------------------------------------------------
1 | @keyframes zoomOutRight {
2 | 40% {
3 | opacity: 1;
4 | transform: scale3d(.475, .475, .475) translate3d(-42px, 0, 0);
5 | }
6 |
7 | 100% {
8 | opacity: 0;
9 | transform: scale(.1) translate3d(2000px, 0, 0);
10 | transform-origin: right center;
11 | }
12 | }
13 |
14 | .zoomOutRight {
15 | animation-name: zoomOutRight;
16 | }
17 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/rotating_entrances/rotateInDownLeft.css:
--------------------------------------------------------------------------------
1 | @keyframes rotateInDownLeft {
2 | from {
3 | transform-origin: left bottom;
4 | transform: rotate3d(0, 0, 1, -45deg);
5 | opacity: 0;
6 | }
7 |
8 | 100% {
9 | transform-origin: left bottom;
10 | transform: none;
11 | opacity: 1;
12 | }
13 | }
14 |
15 | .rotateInDownLeft {
16 | animation-name: rotateInDownLeft;
17 | }
18 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/rotating_entrances/rotateInUpRight.css:
--------------------------------------------------------------------------------
1 | @keyframes rotateInUpRight {
2 | from {
3 | transform-origin: right bottom;
4 | transform: rotate3d(0, 0, 1, -90deg);
5 | opacity: 0;
6 | }
7 |
8 | 100% {
9 | transform-origin: right bottom;
10 | transform: none;
11 | opacity: 1;
12 | }
13 | }
14 |
15 | .rotateInUpRight {
16 | animation-name: rotateInUpRight;
17 | }
18 |
--------------------------------------------------------------------------------
/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "node": true,
3 | "browser": true,
4 | "esnext": true,
5 | "curly": true,
6 | "immed": true,
7 | "indent": 2,
8 | "latedef": true,
9 | "newcap": true,
10 | "noarg": true,
11 | "quotmark": "single",
12 | "undef": true,
13 | "unused": true,
14 | "strict": false,
15 | "globalstrict": true,
16 | "trailing": true,
17 | "smarttabs": true,
18 | "devel": true,
19 | "bitwise": false
20 | }
21 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/attention_seekers/pulse.css:
--------------------------------------------------------------------------------
1 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
2 |
3 | @keyframes pulse {
4 | from {
5 | transform: scale3d(1, 1, 1);
6 | }
7 |
8 | 50% {
9 | transform: scale3d(1.05, 1.05, 1.05);
10 | }
11 |
12 | 100% {
13 | transform: scale3d(1, 1, 1);
14 | }
15 | }
16 |
17 | .pulse {
18 | animation-name: pulse;
19 | }
20 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/bouncing_exits/bounceOutDown.css:
--------------------------------------------------------------------------------
1 | @keyframes bounceOutDown {
2 | 20% {
3 | transform: translate3d(0, 10px, 0);
4 | }
5 |
6 | 40%, 45% {
7 | opacity: 1;
8 | transform: translate3d(0, -20px, 0);
9 | }
10 |
11 | 100% {
12 | opacity: 0;
13 | transform: translate3d(0, 2000px, 0);
14 | }
15 | }
16 |
17 | .bounceOutDown {
18 | animation-name: bounceOutDown;
19 | }
20 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/rotating_entrances/rotateInDownRight.css:
--------------------------------------------------------------------------------
1 | @keyframes rotateInDownRight {
2 | from {
3 | transform-origin: right bottom;
4 | transform: rotate3d(0, 0, 1, 45deg);
5 | opacity: 0;
6 | }
7 |
8 | 100% {
9 | transform-origin: right bottom;
10 | transform: none;
11 | opacity: 1;
12 | }
13 | }
14 |
15 | .rotateInDownRight {
16 | animation-name: rotateInDownRight;
17 | }
18 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/less/_popups.less:
--------------------------------------------------------------------------------
1 | .popover, .tooltip-inner {
2 | color: @popover-color;
3 | line-height: 1em;
4 | background: @popover-background;
5 | border: none;
6 | border-radius: @material-border-radius;
7 | .shadow-z-1();
8 | }
9 |
10 | .tooltip, .tooltip.in {
11 | opacity: 1;
12 | }
13 |
14 | .popover, .tooltip {
15 | .arrow, .tooltip-arrow {
16 | display: none;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/meteor/example/client/bmd.html:
--------------------------------------------------------------------------------
1 |
2 | Watch the ripple effect on newly created buttons!
3 |
4 | {{> hello}}
5 |
6 |
7 |
8 |
9 |
10 | {{#each buttons}}
11 |
12 |
13 | {{/each}}
14 |
15 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/css/var/isHidden.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../../core",
3 | "../../selector"
4 | // css is assumed
5 | ], function( jQuery ) {
6 |
7 | return function( elem, el ) {
8 | // isHidden might be called from jQuery#filter function;
9 | // in that case, element will be second argument
10 | elem = el || elem;
11 | return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
12 | };
13 | });
14 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/mixins/nav-vertical-align.less:
--------------------------------------------------------------------------------
1 | // Navbar vertical align
2 | //
3 | // Vertically center elements in the navbar.
4 | // Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.
5 |
6 | .navbar-vertical-align(@element-height) {
7 | margin-top: ((@navbar-height - @element-height) / 2);
8 | margin-bottom: ((@navbar-height - @element-height) / 2);
9 | }
10 |
--------------------------------------------------------------------------------
/po/uappexplorer.pot.template:
--------------------------------------------------------------------------------
1 | #, fuzzy
2 | msgid ""
3 | msgstr ""
4 | "Project-Id-Version: \n"
5 | "Report-Msgid-Bugs-To: \n"
6 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
7 | "Last-Translator: FULL NAME \n"
8 | "Language-Team: LANGUAGE \n"
9 | "MIME-Version: 1.0\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Content-Transfer-Encoding: 8bit\n"
12 | "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
13 |
14 | <%= content %>
15 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/meteor/example/client/bmd.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var Buttons = new Mongo.Collection(null);
4 |
5 | Template.hello.helpers({
6 | buttons: function () {
7 | return Buttons.find();
8 | }
9 | });
10 |
11 | Template.hello.events({
12 | 'click button': function (event, template) {
13 | Buttons.insert({name: _.sample(['No, click ME!', 'Click me too!', 'Click here!', 'Hey!', 'Psst!'])});
14 | }
15 | });
16 |
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/less/larger.less:
--------------------------------------------------------------------------------
1 | // Icon Sizes
2 | // -------------------------
3 |
4 | /* makes the font 33% larger relative to the icon container */
5 | .@{fa-css-prefix}-lg {
6 | font-size: (4em / 3);
7 | line-height: (3em / 4);
8 | vertical-align: -15%;
9 | }
10 | .@{fa-css-prefix}-2x { font-size: 2em; }
11 | .@{fa-css-prefix}-3x { font-size: 3em; }
12 | .@{fa-css-prefix}-4x { font-size: 4em; }
13 | .@{fa-css-prefix}-5x { font-size: 5em; }
14 |
--------------------------------------------------------------------------------
/www/bower_components/swipebox/grunt/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "boss": true,
3 | "curly": true,
4 | "eqeqeq": true,
5 | "eqnull": true,
6 | "es3": true,
7 | "expr": true,
8 | "immed": true,
9 | "noarg": true,
10 | "onevar": true,
11 | "quotmark": "single",
12 | "trailing": true,
13 | "undef": true,
14 | "unused": true,
15 |
16 | "browser": true,
17 |
18 | "globals": {
19 | "_": false,
20 | "Backbone": false,
21 | "jQuery": false,
22 | "wp": false
23 | }
24 | }
--------------------------------------------------------------------------------
/www/less/fontAwesome.less:
--------------------------------------------------------------------------------
1 | //Dirty hack to work around ad blockers
2 |
3 | .fa-sa:before {
4 | content: '\f1e0';
5 | }
6 |
7 | .fa-gps:before {
8 | content: '\f0d4';
9 | }
10 |
11 | .fa-gp:before {
12 | content: '\f0d5';
13 | }
14 |
15 | .fa-fs:before {
16 | content: '\f082';
17 | }
18 |
19 | .fa-ts:before {
20 | content: '\f081';
21 | }
22 |
23 | .fa-rs:before {
24 | content: '\f1a2';
25 | }
26 |
27 | .fa-t:before {
28 | content: '\f099';
29 | }
30 |
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/scss/_larger.scss:
--------------------------------------------------------------------------------
1 | // Icon Sizes
2 | // -------------------------
3 |
4 | /* makes the font 33% larger relative to the icon container */
5 | .#{$fa-css-prefix}-lg {
6 | font-size: (4em / 3);
7 | line-height: (3em / 4);
8 | vertical-align: -15%;
9 | }
10 | .#{$fa-css-prefix}-2x { font-size: 2em; }
11 | .#{$fa-css-prefix}-3x { font-size: 3em; }
12 | .#{$fa-css-prefix}-4x { font-size: 4em; }
13 | .#{$fa-css-prefix}-5x { font-size: 5em; }
14 |
--------------------------------------------------------------------------------
/www/app/components/root.jsx:
--------------------------------------------------------------------------------
1 | var React = require('react');
2 | var PureRenderMixin = require('react-addons-pure-render-mixin');
3 |
4 | var tree = require('../state');
5 | var Wrapper = require('./wrapper');
6 |
7 | module.exports = React.createClass({
8 | displayName: 'Root',
9 | mixins: [
10 | PureRenderMixin
11 | ],
12 |
13 | render: function() {
14 | return {this.props.children};
15 | }
16 | });
17 |
--------------------------------------------------------------------------------
/www/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "bitwise": false,
3 | "browser": true,
4 | "curly": true,
5 | "devel": true,
6 | "esnext": true,
7 | "globalstrict": true,
8 | "immed": true,
9 | "indent": 2,
10 | "latedef": true,
11 | "newcap": true,
12 | "noarg": true,
13 | "node": true,
14 | "quotmark": false,
15 | "smarttabs": true,
16 | "strict": false,
17 | "trailing": true,
18 | "undef": true,
19 | "unused": true,
20 | "globals": {
21 | "React": true
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/flippers/flipOutX.css:
--------------------------------------------------------------------------------
1 | @keyframes flipOutX {
2 | from {
3 | transform: perspective(400px);
4 | }
5 |
6 | 30% {
7 | transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
8 | opacity: 1;
9 | }
10 |
11 | 100% {
12 | transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
13 | opacity: 0;
14 | }
15 | }
16 |
17 | .flipOutX {
18 | animation-name: flipOutX;
19 | backface-visibility: visible !important;
20 | }
21 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/flippers/flipOutY.css:
--------------------------------------------------------------------------------
1 | @keyframes flipOutY {
2 | from {
3 | transform: perspective(400px);
4 | }
5 |
6 | 30% {
7 | transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
8 | opacity: 1;
9 | }
10 |
11 | 100% {
12 | transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
13 | opacity: 0;
14 | }
15 | }
16 |
17 | .flipOutY {
18 | backface-visibility: visible !important;
19 | animation-name: flipOutY;
20 | }
21 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/meteor/example/run.sh:
--------------------------------------------------------------------------------
1 | # sanity check: make sure we're in the root directory of the example
2 | cd "$( dirname "$0" )"
3 |
4 | # delete temp files even if Ctrl+C is pressed
5 | int_trap() {
6 | echo "Cleaning up..."
7 | }
8 | trap int_trap INT
9 |
10 | ln -s "meteor/package-noglyph.js" ../../package.js
11 | ln -s "../../package.json" package.json
12 |
13 | MONGO_URL=mongodb:// meteor run
14 |
15 | rm ../../package.js package.json
16 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/mixins/responsive-visibility.less:
--------------------------------------------------------------------------------
1 | // Responsive utilities
2 |
3 | //
4 | // More easily include all the states for responsive-utilities.less.
5 | .responsive-visibility() {
6 | display: block !important;
7 | table& { display: table !important; }
8 | tr& { display: table-row !important; }
9 | th&,
10 | td& { display: table-cell !important; }
11 | }
12 |
13 | .responsive-invisibility() {
14 | display: none !important;
15 | }
16 |
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/.gitignore:
--------------------------------------------------------------------------------
1 | *.pyc
2 | *.egg-info
3 | *.db
4 | *.db.old
5 | *.swp
6 | *.db-journal
7 |
8 | .coverage
9 | .DS_Store
10 | .installed.cfg
11 | _gh_pages/*
12 |
13 | .idea/*
14 | .svn/*
15 | src/website/static/*
16 | src/website/media/*
17 |
18 | bin
19 | cfcache
20 | develop-eggs
21 | dist
22 | downloads
23 | eggs
24 | parts
25 | tmp
26 | .sass-cache
27 | node_modules
28 |
29 | src/website/settingslocal.py
30 | stunnel.log
31 |
32 | .ruby-version
33 | .bundle
34 |
--------------------------------------------------------------------------------
/src/db/user.js:
--------------------------------------------------------------------------------
1 | var mongoose = require('mongoose');
2 |
3 | var userSchema = mongoose.Schema({
4 | apikey: String,
5 | apisecret: String,
6 | caxton_token: String,
7 | email: String,
8 | language: String, //language from ubuntu
9 | name: String,
10 | selectedLanguage: String, //user selected language from interface
11 | ubuntu_id: {type: String, index: true},
12 | username: String,
13 | });
14 |
15 | var User = mongoose.model('User', userSchema);
16 |
17 | exports.User = User;
18 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/css/hiddenVisibleSelectors.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core",
3 | "../selector"
4 | ], function( jQuery ) {
5 |
6 | jQuery.expr.filters.hidden = function( elem ) {
7 | // Support: Opera <= 12.12
8 | // Opera reports offsetWidths and offsetHeights less than zero on some elements
9 | return elem.offsetWidth <= 0 && elem.offsetHeight <= 0;
10 | };
11 | jQuery.expr.filters.visible = function( elem ) {
12 | return !jQuery.expr.filters.hidden( elem );
13 | };
14 |
15 | });
16 |
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/less/list.less:
--------------------------------------------------------------------------------
1 | // List Icons
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-ul {
5 | padding-left: 0;
6 | margin-left: @fa-li-width;
7 | list-style-type: none;
8 | > li { position: relative; }
9 | }
10 | .@{fa-css-prefix}-li {
11 | position: absolute;
12 | left: -@fa-li-width;
13 | width: @fa-li-width;
14 | top: (2em / 14);
15 | text-align: center;
16 | &.@{fa-css-prefix}-lg {
17 | left: (-@fa-li-width + (4em / 14));
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/scss/_list.scss:
--------------------------------------------------------------------------------
1 | // List Icons
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-ul {
5 | padding-left: 0;
6 | margin-left: $fa-li-width;
7 | list-style-type: none;
8 | > li { position: relative; }
9 | }
10 | .#{$fa-css-prefix}-li {
11 | position: absolute;
12 | left: -$fa-li-width;
13 | width: $fa-li-width;
14 | top: (2em / 14);
15 | text-align: center;
16 | &.#{$fa-css-prefix}-lg {
17 | left: -$fa-li-width + (4em / 14);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/css/var/getStyles.js:
--------------------------------------------------------------------------------
1 | define(function() {
2 | return function( elem ) {
3 | // Support: IE<=11+, Firefox<=30+ (#15098, #14150)
4 | // IE throws on elements created in popups
5 | // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
6 | if ( elem.ownerDocument.defaultView.opener ) {
7 | return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
8 | }
9 |
10 | return window.getComputedStyle( elem, null );
11 | };
12 | });
13 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/less/_panels.less:
--------------------------------------------------------------------------------
1 | .panel {
2 | border-radius: 2px;
3 | border: 0;
4 |
5 | .variations(~" > .panel-heading", background-color, @grey-200);
6 | .shadow-z-1;
7 | }
8 |
9 |
10 | [class*="panel-"] > .panel-heading {
11 | color: @darkbg-text;
12 | border: 0;
13 | }
14 | .panel-default, .panel:not([class*="panel-"]) {
15 | > .panel-heading {
16 | color: @lightbg-text;
17 | }
18 | }
19 | .panel-footer {
20 | background-color: @grey-200;
21 | }
22 |
--------------------------------------------------------------------------------
/env/vagrant-setup.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | apt-get install -y nginx
4 | ln -s /srv/uappexplorer/env/proxy.conf /etc/nginx/conf.d/proxy.conf
5 | service nginx restart
6 |
7 | sed -i 's/#force_color_prompt/force_color_prompt/g' /home/vagrant/.bashrc
8 | echo 'cd /srv/uappexplorer' >> /home/vagrant/.bashrc
9 |
10 | ln -s /srv/uappexplorer/env/attach.sh /usr/local/bin/attach
11 | ln -s /srv/uappexplorer/env/spider.sh /usr/local/bin/spider
12 |
13 | chmod +x /usr/local/bin/attach
14 | chmod +x /usr/local/bin/spider
15 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/data/accepts.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core"
3 | ], function( jQuery ) {
4 |
5 | /**
6 | * Determines whether an object can have data
7 | */
8 | jQuery.acceptData = function( owner ) {
9 | // Accepts only:
10 | // - Node
11 | // - Node.ELEMENT_NODE
12 | // - Node.DOCUMENT_NODE
13 | // - Object
14 | // - Any
15 | /* jshint -W018 */
16 | return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
17 | };
18 |
19 | return jQuery.acceptData;
20 | });
21 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/sass/material-wfont.scss:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'RobotoDraft';
3 | font-style: normal;
4 | font-weight: 100;
5 | src: local('RobotoDraft Thin'), local('RobotoDraft-Thin'), url(https://fonts.gstatic.com/s/robotodraft/v2/hope9NW9iJ5hh8P5PM_EA2zZpt1Zv2lgqhgSPQ2HnUo.woff2) format('woff2');
6 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
7 | }
8 | @import "material.scss";
9 |
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/scss/font-awesome.scss:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome
3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
4 | */
5 |
6 | @import "variables";
7 | @import "mixins";
8 | @import "path";
9 | @import "core";
10 | @import "larger";
11 | @import "fixed-width";
12 | @import "list";
13 | @import "bordered-pulled";
14 | @import "animated";
15 | @import "rotated-flipped";
16 | @import "stacked";
17 | @import "icons";
18 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/zooming_entrances/zoomInUp.css:
--------------------------------------------------------------------------------
1 | @keyframes zoomInUp {
2 | from {
3 | opacity: 0;
4 | transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0);
5 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
6 | }
7 |
8 | 60% {
9 | opacity: 1;
10 | transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
11 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
12 | }
13 | }
14 |
15 | .zoomInUp {
16 | animation-name: zoomInUp;
17 | }
18 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/attention_seekers/swing.css:
--------------------------------------------------------------------------------
1 | @keyframes swing {
2 | 20% {
3 | transform: rotate3d(0, 0, 1, 15deg);
4 | }
5 |
6 | 40% {
7 | transform: rotate3d(0, 0, 1, -10deg);
8 | }
9 |
10 | 60% {
11 | transform: rotate3d(0, 0, 1, 5deg);
12 | }
13 |
14 | 80% {
15 | transform: rotate3d(0, 0, 1, -5deg);
16 | }
17 |
18 | 100% {
19 | transform: rotate3d(0, 0, 1, 0deg);
20 | }
21 | }
22 |
23 | .swing {
24 | transform-origin: top center;
25 | animation-name: swing;
26 | }
27 |
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "font-awesome",
3 | "description": "Font Awesome",
4 | "keywords": [],
5 | "homepage": "http://fontawesome.io",
6 | "dependencies": {},
7 | "devDependencies": {},
8 | "license": ["OFL-1.1", "MIT", "CC-BY-3.0"],
9 | "main": [
10 | "less/font-awesome.less",
11 | "scss/font-awesome.scss"
12 | ],
13 | "ignore": [
14 | "*/.*",
15 | "*.json",
16 | "src",
17 | "*.yml",
18 | "Gemfile",
19 | "Gemfile.lock",
20 | "*.md"
21 | ]
22 | }
23 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/zooming_entrances/zoomInDown.css:
--------------------------------------------------------------------------------
1 | @keyframes zoomInDown {
2 | from {
3 | opacity: 0;
4 | transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0);
5 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
6 | }
7 |
8 | 60% {
9 | opacity: 1;
10 | transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
11 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
12 | }
13 | }
14 |
15 | .zoomInDown {
16 | animation-name: zoomInDown;
17 | }
18 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/zooming_entrances/zoomInLeft.css:
--------------------------------------------------------------------------------
1 | @keyframes zoomInLeft {
2 | from {
3 | opacity: 0;
4 | transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0);
5 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
6 | }
7 |
8 | 60% {
9 | opacity: 1;
10 | transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0);
11 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
12 | }
13 | }
14 |
15 | .zoomInLeft {
16 | animation-name: zoomInLeft;
17 | }
18 |
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/less/core.less:
--------------------------------------------------------------------------------
1 | // Base Class Definition
2 | // -------------------------
3 |
4 | .@{fa-css-prefix} {
5 | display: inline-block;
6 | font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/www/bower_components/swipebox/.bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "swipebox",
3 | "version": "1.4.1",
4 | "main": "src/js/jquery.swipebox.js",
5 | "ignore": [],
6 | "homepage": "https://github.com/brutaldesign/swipebox",
7 | "_release": "1.4.1",
8 | "_resolution": {
9 | "type": "version",
10 | "tag": "1.4.1",
11 | "commit": "80c68575772aacfbcffe4203a9f0ad57d4db8a62"
12 | },
13 | "_source": "git://github.com/brutaldesign/swipebox.git",
14 | "_target": "~1.4.1",
15 | "_originalSource": "swipebox",
16 | "_direct": true
17 | }
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/lightspeed/lightSpeedIn.css:
--------------------------------------------------------------------------------
1 | @keyframes lightSpeedIn {
2 | from {
3 | transform: translate3d(100%, 0, 0) skewX(-30deg);
4 | opacity: 0;
5 | }
6 |
7 | 60% {
8 | transform: skewX(20deg);
9 | opacity: 1;
10 | }
11 |
12 | 80% {
13 | transform: skewX(-5deg);
14 | opacity: 1;
15 | }
16 |
17 | 100% {
18 | transform: none;
19 | opacity: 1;
20 | }
21 | }
22 |
23 | .lightSpeedIn {
24 | animation-name: lightSpeedIn;
25 | animation-timing-function: ease-out;
26 | }
27 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/zooming_entrances/zoomInRight.css:
--------------------------------------------------------------------------------
1 | @keyframes zoomInRight {
2 | from {
3 | opacity: 0;
4 | transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0);
5 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
6 | }
7 |
8 | 60% {
9 | opacity: 1;
10 | transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0);
11 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
12 | }
13 | }
14 |
15 | .zoomInRight {
16 | animation-name: zoomInRight;
17 | }
18 |
--------------------------------------------------------------------------------
/env/docker-compose.yml:
--------------------------------------------------------------------------------
1 | server:
2 | build: ./
3 | ports:
4 | - "8080:8080"
5 | links:
6 | - mongo
7 | - elasticsearch
8 | volumes:
9 | - /srv/uappexplorer:/srv/uappexplorer
10 |
11 | mongo:
12 | image: mongo
13 | ports:
14 | - "27017:27017"
15 | volumes:
16 | - /data/db:/data/db
17 |
18 | elasticsearch:
19 | image: elasticsearch:2-alpine
20 | ports:
21 | - "9200:9200"
22 | volumes:
23 | - /usr/share/elasticsearch/data:/usr/share/elasticsearch/data
24 |
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/scss/_core.scss:
--------------------------------------------------------------------------------
1 | // Base Class Definition
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix} {
5 | display: inline-block;
6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/dist/js/npm.js:
--------------------------------------------------------------------------------
1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
2 | require('../../js/transition.js')
3 | require('../../js/alert.js')
4 | require('../../js/button.js')
5 | require('../../js/carousel.js')
6 | require('../../js/collapse.js')
7 | require('../../js/dropdown.js')
8 | require('../../js/modal.js')
9 | require('../../js/tooltip.js')
10 | require('../../js/popover.js')
11 | require('../../js/scrollspy.js')
12 | require('../../js/tab.js')
13 | require('../../js/affix.js')
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/attention_seekers/tada.css:
--------------------------------------------------------------------------------
1 | @keyframes tada {
2 | from {
3 | transform: scale3d(1, 1, 1);
4 | }
5 |
6 | 10%, 20% {
7 | transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg);
8 | }
9 |
10 | 30%, 50%, 70%, 90% {
11 | transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
12 | }
13 |
14 | 40%, 60%, 80% {
15 | transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
16 | }
17 |
18 | 100% {
19 | transform: scale3d(1, 1, 1);
20 | }
21 | }
22 |
23 | .tada {
24 | animation-name: tada;
25 | }
26 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/zooming_exits/zoomOutUp.css:
--------------------------------------------------------------------------------
1 | @keyframes zoomOutUp {
2 | 40% {
3 | opacity: 1;
4 | transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0);
5 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
6 | }
7 |
8 | 100% {
9 | opacity: 0;
10 | transform: scale3d(.1, .1, .1) translate3d(0, -2000px, 0);
11 | transform-origin: center bottom;
12 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
13 | }
14 | }
15 |
16 | .zoomOutUp {
17 | animation-name: zoomOutUp;
18 | }
19 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/less/_alerts.less:
--------------------------------------------------------------------------------
1 | .alert {
2 | border: 0px;
3 | border-radius: 0;
4 |
5 | .generic-variations(~"", @darkbg-text, {
6 | background-color: @material-color;
7 | color: @text-color;
8 |
9 | a, .alert-link {
10 | color: @text-color;
11 | }
12 | });
13 |
14 | &-info, &-danger, &-warning, &-success {
15 | color: @darkbg-text;
16 | }
17 |
18 | &-default {
19 | a, .alert-link {
20 | color: @lightbg-text;
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/less/_plugin-dropdownjs.less:
--------------------------------------------------------------------------------
1 | .dropdownjs:after {
2 | right: 5px;
3 | top: 3px;
4 | font-size: 25px;
5 | position: absolute;
6 | content: "\e894";
7 | font-family: "Material-Design-Icons";
8 | speak: none;
9 | font-style: normal;
10 | font-weight: normal;
11 | font-variant: normal;
12 | text-transform: none;
13 | line-height: 1;
14 | -webkit-font-smoothing: antialiased;
15 | -moz-osx-font-smoothing: grayscale;
16 | pointer-events: none;
17 | color: #757575;
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/.csslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "adjoining-classes": false,
3 | "box-sizing": false,
4 | "box-model": false,
5 | "compatible-vendor-prefixes": false,
6 | "floats": false,
7 | "font-sizes": false,
8 | "gradients": false,
9 | "important": false,
10 | "known-properties": false,
11 | "outline-none": false,
12 | "qualified-headings": false,
13 | "regex-selectors": false,
14 | "shorthand": false,
15 | "text-indent": false,
16 | "unique-headings": false,
17 | "universal-selector": false,
18 | "unqualified-attributes": false
19 | }
20 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/zooming_exits/zoomOutDown.css:
--------------------------------------------------------------------------------
1 | @keyframes zoomOutDown {
2 | 40% {
3 | opacity: 1;
4 | transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0);
5 | animation-timing-function: cubic-bezier(0.550, 0.055, 0.675, 0.190);
6 | }
7 |
8 | 100% {
9 | opacity: 0;
10 | transform: scale3d(.1, .1, .1) translate3d(0, 2000px, 0);
11 | transform-origin: center bottom;
12 | animation-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1);
13 | }
14 | }
15 |
16 | .zoomOutDown {
17 | animation-name: zoomOutDown;
18 | }
19 |
--------------------------------------------------------------------------------
/www/bower_components/slick-carousel/component.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "slick",
3 | "repo": "kenwheeler/slick",
4 | "description": "the last carousel you'll ever need",
5 | "version": "1.5.8",
6 | "keywords": ["ui", "jquery", "carousel", "responsive", "slider"],
7 | "dependencies": {
8 | "component/jquery": "*"
9 | },
10 | "development": {},
11 | "scripts": {
12 | "slick/slick.js": "slick.js"
13 | },
14 | "styles": {
15 | "slick/slick.css": "slick.css",
16 | "slick/slick-theme.css": "slick-theme.css"
17 | }
18 | }
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/less/font-awesome.less:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome
3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
4 | */
5 |
6 | @import "variables.less";
7 | @import "mixins.less";
8 | @import "path.less";
9 | @import "core.less";
10 | @import "larger.less";
11 | @import "fixed-width.less";
12 | @import "list.less";
13 | @import "bordered-pulled.less";
14 | @import "animated.less";
15 | @import "rotated-flipped.less";
16 | @import "stacked.less";
17 | @import "icons.less";
18 |
--------------------------------------------------------------------------------
/www/bower_components/slick-carousel/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "slick-carousel",
3 | "version": "1.5.8",
4 | "description": "the last carousel you'll ever need",
5 | "main": "slick/slick.js",
6 | "repository": {
7 | "type": "git",
8 | "url": "https://github.com/kenwheeler/slick.git"
9 | },
10 | "keywords": [
11 | "carousel",
12 | "slick",
13 | "responsive"
14 | ],
15 | "author": "Ken Wheeler",
16 | "license": "MIT",
17 | "bugs": {
18 | "url": "https://github.com/kenwheeler/slick/issues"
19 | }
20 | }
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/mixins/border-radius.less:
--------------------------------------------------------------------------------
1 | // Single side border-radius
2 |
3 | .border-top-radius(@radius) {
4 | border-top-right-radius: @radius;
5 | border-top-left-radius: @radius;
6 | }
7 | .border-right-radius(@radius) {
8 | border-bottom-right-radius: @radius;
9 | border-top-right-radius: @radius;
10 | }
11 | .border-bottom-radius(@radius) {
12 | border-bottom-right-radius: @radius;
13 | border-bottom-left-radius: @radius;
14 | }
15 | .border-left-radius(@radius) {
16 | border-bottom-left-radius: @radius;
17 | border-top-left-radius: @radius;
18 | }
19 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/mixins/reset-text.less:
--------------------------------------------------------------------------------
1 | .reset-text() {
2 | font-family: @font-family-base;
3 | // We deliberately do NOT reset font-size.
4 | font-style: normal;
5 | font-weight: normal;
6 | letter-spacing: normal;
7 | line-break: auto;
8 | line-height: @line-height-base;
9 | text-align: left; // Fallback for where `start` is not supported
10 | text-align: start;
11 | text-decoration: none;
12 | text-shadow: none;
13 | text-transform: none;
14 | white-space: normal;
15 | word-break: normal;
16 | word-spacing: normal;
17 | word-wrap: normal;
18 | }
19 |
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/less/stacked.less:
--------------------------------------------------------------------------------
1 | // Stacked Icons
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-stack {
5 | position: relative;
6 | display: inline-block;
7 | width: 2em;
8 | height: 2em;
9 | line-height: 2em;
10 | vertical-align: middle;
11 | }
12 | .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
13 | position: absolute;
14 | left: 0;
15 | width: 100%;
16 | text-align: center;
17 | }
18 | .@{fa-css-prefix}-stack-1x { line-height: inherit; }
19 | .@{fa-css-prefix}-stack-2x { font-size: 2em; }
20 | .@{fa-css-prefix}-inverse { color: @fa-inverse; }
21 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "jquery",
3 | "version": "2.1.4",
4 | "main": "dist/jquery.js",
5 | "license": "MIT",
6 | "ignore": [
7 | "**/.*",
8 | "build",
9 | "dist/cdn",
10 | "speed",
11 | "test",
12 | "*.md",
13 | "AUTHORS.txt",
14 | "Gruntfile.js",
15 | "package.json"
16 | ],
17 | "devDependencies": {
18 | "sizzle": "2.1.1-jquery.2.1.2",
19 | "requirejs": "2.1.10",
20 | "qunit": "1.14.0",
21 | "sinon": "1.8.1"
22 | },
23 | "keywords": [
24 | "jquery",
25 | "javascript",
26 | "library"
27 | ]
28 | }
29 |
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/scss/_stacked.scss:
--------------------------------------------------------------------------------
1 | // Stacked Icons
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-stack {
5 | position: relative;
6 | display: inline-block;
7 | width: 2em;
8 | height: 2em;
9 | line-height: 2em;
10 | vertical-align: middle;
11 | }
12 | .#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x {
13 | position: absolute;
14 | left: 0;
15 | width: 100%;
16 | text-align: center;
17 | }
18 | .#{$fa-css-prefix}-stack-1x { line-height: inherit; }
19 | .#{$fa-css-prefix}-stack-2x { font-size: 2em; }
20 | .#{$fa-css-prefix}-inverse { color: $fa-inverse; }
21 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/attention_seekers/rubberBand.css:
--------------------------------------------------------------------------------
1 | @keyframes rubberBand {
2 | from {
3 | transform: scale3d(1, 1, 1);
4 | }
5 |
6 | 30% {
7 | transform: scale3d(1.25, 0.75, 1);
8 | }
9 |
10 | 40% {
11 | transform: scale3d(0.75, 1.25, 1);
12 | }
13 |
14 | 50% {
15 | transform: scale3d(1.15, 0.85, 1);
16 | }
17 |
18 | 65% {
19 | transform: scale3d(.95, 1.05, 1);
20 | }
21 |
22 | 75% {
23 | transform: scale3d(1.05, .95, 1);
24 | }
25 |
26 | 100% {
27 | transform: scale3d(1, 1, 1);
28 | }
29 | }
30 |
31 | .rubberBand {
32 | animation-name: rubberBand;
33 | }
34 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/mixins/pagination.less:
--------------------------------------------------------------------------------
1 | // Pagination
2 |
3 | .pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {
4 | > li {
5 | > a,
6 | > span {
7 | padding: @padding-vertical @padding-horizontal;
8 | font-size: @font-size;
9 | line-height: @line-height;
10 | }
11 | &:first-child {
12 | > a,
13 | > span {
14 | .border-left-radius(@border-radius);
15 | }
16 | }
17 | &:last-child {
18 | > a,
19 | > span {
20 | .border-right-radius(@border-radius);
21 | }
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/.bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "animate.css",
3 | "main": "./animate.css",
4 | "ignore": [
5 | ".*",
6 | "src",
7 | "*.yml",
8 | "Gemfile",
9 | "Gemfile.lock",
10 | "*.md"
11 | ],
12 | "homepage": "https://github.com/daneden/animate.css",
13 | "version": "3.4.0",
14 | "_release": "3.4.0",
15 | "_resolution": {
16 | "type": "version",
17 | "tag": "3.4.0",
18 | "commit": "70df3c0efba87df197c34d54bb019839facd682e"
19 | },
20 | "_source": "git://github.com/daneden/animate.css.git",
21 | "_target": "~3.4.0",
22 | "_originalSource": "animate.css",
23 | "_direct": true
24 | }
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/css/addGetHookIf.js:
--------------------------------------------------------------------------------
1 | define(function() {
2 |
3 | function addGetHookIf( conditionFn, hookFn ) {
4 | // Define the hook, we'll check on the first run if it's really needed.
5 | return {
6 | get: function() {
7 | if ( conditionFn() ) {
8 | // Hook not needed (or it's not possible to use it due
9 | // to missing dependency), remove it.
10 | delete this.get;
11 | return;
12 | }
13 |
14 | // Hook needed; redefine it so that the support test is not executed again.
15 | return (this.get = hookFn).apply( this, arguments );
16 | }
17 | };
18 | }
19 |
20 | return addGetHookIf;
21 |
22 | });
23 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/ajax/parseXML.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core"
3 | ], function( jQuery ) {
4 |
5 | // Cross-browser xml parsing
6 | jQuery.parseXML = function( data ) {
7 | var xml, tmp;
8 | if ( !data || typeof data !== "string" ) {
9 | return null;
10 | }
11 |
12 | // Support: IE9
13 | try {
14 | tmp = new DOMParser();
15 | xml = tmp.parseFromString( data, "text/xml" );
16 | } catch ( e ) {
17 | xml = undefined;
18 | }
19 |
20 | if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
21 | jQuery.error( "Invalid XML: " + data );
22 | }
23 | return xml;
24 | };
25 |
26 | return jQuery.parseXML;
27 |
28 | });
29 |
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/.npmignore:
--------------------------------------------------------------------------------
1 | *.pyc
2 | *.egg-info
3 | *.db
4 | *.db.old
5 | *.swp
6 | *.db-journal
7 |
8 | .coverage
9 | .DS_Store
10 | .installed.cfg
11 | _gh_pages/*
12 |
13 | .idea/*
14 | .svn/*
15 | src/website/static/*
16 | src/website/media/*
17 |
18 | bin
19 | cfcache
20 | develop-eggs
21 | dist
22 | downloads
23 | eggs
24 | parts
25 | tmp
26 | .sass-cache
27 | node_modules
28 |
29 | src/website/settingslocal.py
30 | stunnel.log
31 |
32 | .ruby-version
33 |
34 | # don't need these in the npm package.
35 | src/
36 | _config.yml
37 | bower.json
38 | component.json
39 | composer.json
40 | CONTRIBUTING.md
41 | Gemfile
42 | Gemfile.lock
43 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/_base.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";
2 | /*!
3 | Animate.css - http://daneden.me/animate
4 | Licensed under the MIT license - http://opensource.org/licenses/MIT
5 |
6 | Copyright (c) 2015 Daniel Eden
7 | */
8 |
9 | .animated {
10 | animation-duration: 1s;
11 | animation-fill-mode: both;
12 | }
13 |
14 | .animated.infinite {
15 | animation-iteration-count: infinite;
16 | }
17 |
18 | .animated.hinge {
19 | animation-duration: 2s;
20 | }
21 |
22 | .animated.bounceIn,
23 | .animated.bounceOut {
24 | animation-duration: .75s;
25 | }
26 |
27 | .animated.flipOutX,
28 | .animated.flipOutY {
29 | animation-duration: .75s;
30 | }
31 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/bouncing_entrances/bounceInDown.css:
--------------------------------------------------------------------------------
1 | @keyframes bounceInDown {
2 | from, 60%, 75%, 90%, 100% {
3 | animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
4 | }
5 |
6 | 0% {
7 | opacity: 0;
8 | transform: translate3d(0, -3000px, 0);
9 | }
10 |
11 | 60% {
12 | opacity: 1;
13 | transform: translate3d(0, 25px, 0);
14 | }
15 |
16 | 75% {
17 | transform: translate3d(0, -10px, 0);
18 | }
19 |
20 | 90% {
21 | transform: translate3d(0, 5px, 0);
22 | }
23 |
24 | 100% {
25 | transform: none;
26 | }
27 | }
28 |
29 | .bounceInDown {
30 | animation-name: bounceInDown;
31 | }
32 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/bouncing_entrances/bounceInLeft.css:
--------------------------------------------------------------------------------
1 | @keyframes bounceInLeft {
2 | from, 60%, 75%, 90%, 100% {
3 | animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
4 | }
5 |
6 | 0% {
7 | opacity: 0;
8 | transform: translate3d(-3000px, 0, 0);
9 | }
10 |
11 | 60% {
12 | opacity: 1;
13 | transform: translate3d(25px, 0, 0);
14 | }
15 |
16 | 75% {
17 | transform: translate3d(-10px, 0, 0);
18 | }
19 |
20 | 90% {
21 | transform: translate3d(5px, 0, 0);
22 | }
23 |
24 | 100% {
25 | transform: none;
26 | }
27 | }
28 |
29 | .bounceInLeft {
30 | animation-name: bounceInLeft;
31 | }
32 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/specials/hinge.css:
--------------------------------------------------------------------------------
1 | @keyframes hinge {
2 | 0% {
3 | transform-origin: top left;
4 | animation-timing-function: ease-in-out;
5 | }
6 |
7 | 20%, 60% {
8 | transform: rotate3d(0, 0, 1, 80deg);
9 | transform-origin: top left;
10 | animation-timing-function: ease-in-out;
11 | }
12 |
13 | 40%, 80% {
14 | transform: rotate3d(0, 0, 1, 60deg);
15 | transform-origin: top left;
16 | animation-timing-function: ease-in-out;
17 | opacity: 1;
18 | }
19 |
20 | 100% {
21 | transform: translate3d(0, 700px, 0);
22 | opacity: 0;
23 | }
24 | }
25 |
26 | .hinge {
27 | animation-name: hinge;
28 | }
29 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/bouncing_entrances/bounceInRight.css:
--------------------------------------------------------------------------------
1 | @keyframes bounceInRight {
2 | from, 60%, 75%, 90%, 100% {
3 | animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
4 | }
5 |
6 | from {
7 | opacity: 0;
8 | transform: translate3d(3000px, 0, 0);
9 | }
10 |
11 | 60% {
12 | opacity: 1;
13 | transform: translate3d(-25px, 0, 0);
14 | }
15 |
16 | 75% {
17 | transform: translate3d(10px, 0, 0);
18 | }
19 |
20 | 90% {
21 | transform: translate3d(-5px, 0, 0);
22 | }
23 |
24 | 100% {
25 | transform: none;
26 | }
27 | }
28 |
29 | .bounceInRight {
30 | animation-name: bounceInRight;
31 | }
32 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/bouncing_entrances/bounceInUp.css:
--------------------------------------------------------------------------------
1 | @keyframes bounceInUp {
2 | from, 60%, 75%, 90%, 100% {
3 | animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
4 | }
5 |
6 | from {
7 | opacity: 0;
8 | transform: translate3d(0, 3000px, 0);
9 | }
10 |
11 | 60% {
12 | opacity: 1;
13 | transform: translate3d(0, -20px, 0);
14 | }
15 |
16 | 75% {
17 | transform: translate3d(0, 10px, 0);
18 | }
19 |
20 | 90% {
21 | transform: translate3d(0, -5px, 0);
22 | }
23 |
24 | 100% {
25 | transform: translate3d(0, 0, 0);
26 | }
27 | }
28 |
29 | .bounceInUp {
30 | animation-name: bounceInUp;
31 | }
32 |
--------------------------------------------------------------------------------
/src/server/json/essential-apps.json:
--------------------------------------------------------------------------------
1 | [
2 | "dekko2.dekkoproject",
3 | "it.mardy.imaginario",
4 | "openfoodfacts.ubuntouch-fr",
5 | "uadblock.mariogrip",
6 | "instagraph-devs.turan-mahmudov-l",
7 | "loquiim.nfsprodriver",
8 | "com.ubuntu.telegram",
9 | "ubuntu-hangups.timsueberkrueb",
10 | "umatriks.larreamikel",
11 | "com.mikeasoft.cutespotify",
12 | "com.mikeasoft.podbird",
13 | "pockit.turan-mahmudov-l",
14 | "doniks.shorter",
15 | "rssreaderscope.kazord",
16 | "com.ubuntu.docviewer",
17 | "talaan.kugiigi",
18 | "uwp.costales",
19 | "navigator.costales",
20 | "falcon.bhdouglass",
21 | "rockwork.mzanetti"
22 | ]
23 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "animate.css",
3 | "version": "3.4.0",
4 | "repository": {
5 | "type": "git",
6 | "url": "https://github.com/daneden/animate.css.git"
7 | },
8 | "jspm": {
9 | "main":"animate.css!",
10 | "format":"global",
11 | "directories": {
12 | "lib":"./"
13 | }
14 | },
15 | "devDependencies": {
16 | "grunt": "~0.4.1",
17 | "grunt-autoprefixer": "~0.4.0",
18 | "grunt-contrib-watch": "~0.5.3",
19 | "grunt-contrib-concat": "~0.3.0",
20 | "grunt-contrib-cssmin": "~0.8.0",
21 | "load-grunt-tasks": "~0.2.0"
22 | },
23 | "spm": {
24 | "main": "./animate.css"
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/mixins/panels.less:
--------------------------------------------------------------------------------
1 | // Panels
2 |
3 | .panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {
4 | border-color: @border;
5 |
6 | & > .panel-heading {
7 | color: @heading-text-color;
8 | background-color: @heading-bg-color;
9 | border-color: @heading-border;
10 |
11 | + .panel-collapse > .panel-body {
12 | border-top-color: @border;
13 | }
14 | .badge {
15 | color: @heading-bg-color;
16 | background-color: @heading-text-color;
17 | }
18 | }
19 | & > .panel-footer {
20 | + .panel-collapse > .panel-body {
21 | border-bottom-color: @border;
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/www/bower_components/swipebox/grunt/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "grunt-swipebox",
3 | "version": "1.4.1",
4 | "description": "A touchable jQuery lightbox",
5 | "repository": {
6 | "type": "git",
7 | "url": "git://github.com/brutaldesign/swipebox.git"
8 | },
9 | "license": "MIT",
10 | "devDependencies": {
11 | "grunt": "~0.4.5",
12 | "load-grunt-tasks": "~1.0.0",
13 | "grunt-contrib-sass": "~0.8.1",
14 | "grunt-autoprefixer": "~2.0.0",
15 | "grunt-contrib-cssmin": "~0.10.0",
16 | "grunt-contrib-jshint": "~0.10.0",
17 | "grunt-contrib-uglify": "~0.6.0",
18 | "grunt-contrib-watch": "~0.6.1",
19 | "grunt-notify": "~0.3.1"
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/queue/delay.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core",
3 | "../queue",
4 | "../effects" // Delay is optional because of this dependency
5 | ], function( jQuery ) {
6 |
7 | // Based off of the plugin by Clint Helfers, with permission.
8 | // http://blindsignals.com/index.php/2009/07/jquery-delay/
9 | jQuery.fn.delay = function( time, type ) {
10 | time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
11 | type = type || "fx";
12 |
13 | return this.queue( type, function( next, hooks ) {
14 | var timeout = setTimeout( next, time );
15 | hooks.stop = function() {
16 | clearTimeout( timeout );
17 | };
18 | });
19 | };
20 |
21 | return jQuery.fn.delay;
22 | });
23 |
--------------------------------------------------------------------------------
/www/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "uappexplorer",
3 | "description": "Unofficial Ubuntu Touch Appstore",
4 | "main": "app/index.jsx",
5 | "authors": [
6 | "Brian Douglass"
7 | ],
8 | "license": "GPL-3.0",
9 | "homepage": "https://uappexplorer.com",
10 | "moduleType": [],
11 | "private": true,
12 | "ignore": [
13 | "node_modules",
14 | "bower_components",
15 | "bower/"
16 | ],
17 | "dependencies": {
18 | "bootstrap-material-design": "~0.3.0",
19 | "bootstrap": "~3.3.5",
20 | "font-awesome": "fontawesome#~4.4.0",
21 | "slick-carousel": "~1.5.8",
22 | "animate.css": "~3.4.0",
23 | "swipebox": "~1.4.1",
24 | "jquery": "~2.1.4"
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/sass/_popups.scss:
--------------------------------------------------------------------------------
1 | .popover, .tooltip-inner {
2 | background: #323232;
3 | color: #FFF;
4 | border-radius: 2px;
5 |
6 | }
7 |
8 | .tooltip, .tooltip.in {
9 | opacity: 1;
10 | }
11 |
12 | .popover, .tooltip {
13 | &.left .arrow:after, &.left .tooltip-arrow {
14 | border-left-color: #323232;
15 | }
16 | &.right .arrow:after, &.right .tooltip-arrow {
17 | border-right-color: #323232;
18 | }
19 | &.top .arrow:after, &.top .tooltip-arrow {
20 | border-top-color: #323232;
21 | }
22 | &.bottom .arrow:after, &.bottom .tooltip-arrow {
23 | border-bottom-color: #323232;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/wells.less:
--------------------------------------------------------------------------------
1 | //
2 | // Wells
3 | // --------------------------------------------------
4 |
5 |
6 | // Base class
7 | .well {
8 | min-height: 20px;
9 | padding: 19px;
10 | margin-bottom: 20px;
11 | background-color: @well-bg;
12 | border: 1px solid @well-border;
13 | border-radius: @border-radius-base;
14 | .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));
15 | blockquote {
16 | border-color: #ddd;
17 | border-color: rgba(0,0,0,.15);
18 | }
19 | }
20 |
21 | // Sizes
22 | .well-lg {
23 | padding: 24px;
24 | border-radius: @border-radius-large;
25 | }
26 | .well-sm {
27 | padding: 9px;
28 | border-radius: @border-radius-small;
29 | }
30 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/mixins/hide-text.less:
--------------------------------------------------------------------------------
1 | // CSS image replacement
2 | //
3 | // Heads up! v3 launched with only `.hide-text()`, but per our pattern for
4 | // mixins being reused as classes with the same name, this doesn't hold up. As
5 | // of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.
6 | //
7 | // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
8 |
9 | // Deprecated as of v3.0.1 (will be removed in v4)
10 | .hide-text() {
11 | font: ~"0/0" a;
12 | color: transparent;
13 | text-shadow: none;
14 | background-color: transparent;
15 | border: 0;
16 | }
17 |
18 | // New mixin to use as of v3.0.1
19 | .text-hide() {
20 | .hide-text();
21 | }
22 |
--------------------------------------------------------------------------------
/deploy/setup.sh.ref:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Setup git deploy: https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps
4 | # Setup post-recieve hooks
5 |
6 | # Setup dependencies
7 | curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
8 | add-apt-repository ppa:certbot/certbot
9 |
10 | apt-get update
11 | apt-get upgrade
12 |
13 | apt-get install git nodejs nginx python-certbot-nginx build-essential
14 |
15 | npm install -g gulp
16 |
17 | # Setup nginx config
18 | # /etc/nginx/sites-enabled/default
19 |
20 | # Setup systemd config
21 | # /etc/systemd/system/uappexplorer-api.service
22 | systemctl enable uappexplorer-api
23 | systemctl start uappexplorer-api
24 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/attention_seekers/bounce.css:
--------------------------------------------------------------------------------
1 | @keyframes bounce {
2 | from, 20%, 53%, 80%, 100% {
3 | animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
4 | transform: translate3d(0,0,0);
5 | }
6 |
7 | 40%, 43% {
8 | animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
9 | transform: translate3d(0, -30px, 0);
10 | }
11 |
12 | 70% {
13 | animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
14 | transform: translate3d(0, -15px, 0);
15 | }
16 |
17 | 90% {
18 | transform: translate3d(0,-4px,0);
19 | }
20 | }
21 |
22 | .bounce {
23 | animation-name: bounce;
24 | transform-origin: center bottom;
25 | }
26 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/sass/_mixins.scss:
--------------------------------------------------------------------------------
1 | @mixin card-variant($background, $color, $border) {
2 | background-color: $background;
3 | color: $color;
4 |
5 | .card-footer, .card-header {
6 | border-color: $border;
7 | }
8 |
9 | a {
10 | color: $color;
11 | }
12 | }
13 |
14 | @mixin button-variant($color) {
15 | background-color: $color;
16 | }
17 |
18 | @mixin alert-variant($color) {
19 | background-color: $color;
20 | }
21 |
22 | @mixin progress-bar-variant($color) {
23 | background-color: $color;
24 | }
25 |
26 | @mixin navbar-variant($color) {
27 | background-color: $color;
28 | }
29 |
30 | @mixin icon-variant($color) {
31 | color: $color;
32 | }
33 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/css/swap.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core"
3 | ], function( jQuery ) {
4 |
5 | // A method for quickly swapping in/out CSS properties to get correct calculations.
6 | jQuery.swap = function( elem, options, callback, args ) {
7 | var ret, name,
8 | old = {};
9 |
10 | // Remember the old values, and insert the new ones
11 | for ( name in options ) {
12 | old[ name ] = elem.style[ name ];
13 | elem.style[ name ] = options[ name ];
14 | }
15 |
16 | ret = callback.apply( elem, args || [] );
17 |
18 | // Revert the old values
19 | for ( name in options ) {
20 | elem.style[ name ] = old[ name ];
21 | }
22 |
23 | return ret;
24 | };
25 |
26 | return jQuery.swap;
27 |
28 | });
29 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/less/_tabs.less:
--------------------------------------------------------------------------------
1 | .nav-tabs {
2 | background: @primary;
3 | > li {
4 | > a {
5 | color: #FFFFFF;
6 | border: 0;
7 | margin: 0;
8 | &:hover {
9 | background-color: transparent;
10 | border: 0;
11 | }
12 | }
13 | & > a, & > a:hover, & > a:focus {
14 | background-color: transparent !important;
15 | border: 0 !important;
16 | color: #FFFFFF !important;
17 | font-weight: 500;
18 | }
19 | &.disabled > a, &.disabled > a:hover {
20 | color: rgba(255,255,255,0.5);
21 | }
22 | }
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/mixins/list-group.less:
--------------------------------------------------------------------------------
1 | // List Groups
2 |
3 | .list-group-item-variant(@state; @background; @color) {
4 | .list-group-item-@{state} {
5 | color: @color;
6 | background-color: @background;
7 |
8 | a&,
9 | button& {
10 | color: @color;
11 |
12 | .list-group-item-heading {
13 | color: inherit;
14 | }
15 |
16 | &:hover,
17 | &:focus {
18 | color: @color;
19 | background-color: darken(@background, 5%);
20 | }
21 | &.active,
22 | &.active:hover,
23 | &.active:focus {
24 | color: #fff;
25 | background-color: @color;
26 | border-color: @color;
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/deploy/post-recieve:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | set -e
4 |
5 | echo "Deploying code"
6 | git --work-tree=/srv/uappexplorer --git-dir=/srv/repo/uappexplorer.git checkout -f
7 |
8 | echo "Running npm install"
9 | cd /srv/uappexplorer/
10 | npm install
11 |
12 | echo "Builing frontend"
13 | source /srv/uappexplorer/deploy/env.sh
14 | export NODE_ENV="" # Needed to install dev dependencies
15 | cd /srv/uappexplorer/www/
16 | npm install
17 | export NODE_ENV="production"
18 | gulp build
19 |
20 | # Copy dist to a separate directory, this way when we clean out dist to rebuild it doesn't take the site down for several minutes
21 | rm -rf ./production
22 | cp -r ./dist ./production
23 |
24 | echo "Restarting api"
25 | systemctl restart uappexplorer-api
26 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/flippers/flipInX.css:
--------------------------------------------------------------------------------
1 | @keyframes flipInX {
2 | from {
3 | transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
4 | animation-timing-function: ease-in;
5 | opacity: 0;
6 | }
7 |
8 | 40% {
9 | transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
10 | animation-timing-function: ease-in;
11 | }
12 |
13 | 60% {
14 | transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
15 | opacity: 1;
16 | }
17 |
18 | 80% {
19 | transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
20 | }
21 |
22 | 100% {
23 | transform: perspective(400px);
24 | }
25 | }
26 |
27 | .flipInX {
28 | backface-visibility: visible !important;
29 | animation-name: flipInX;
30 | }
31 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/flippers/flipInY.css:
--------------------------------------------------------------------------------
1 | @keyframes flipInY {
2 | from {
3 | transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
4 | animation-timing-function: ease-in;
5 | opacity: 0;
6 | }
7 |
8 | 40% {
9 | transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
10 | animation-timing-function: ease-in;
11 | }
12 |
13 | 60% {
14 | transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
15 | opacity: 1;
16 | }
17 |
18 | 80% {
19 | transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
20 | }
21 |
22 | 100% {
23 | transform: perspective(400px);
24 | }
25 | }
26 |
27 | .flipInY {
28 | backface-visibility: visible !important;
29 | animation-name: flipInY;
30 | }
31 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/mixins/clearfix.less:
--------------------------------------------------------------------------------
1 | // Clearfix
2 | //
3 | // For modern browsers
4 | // 1. The space content is one way to avoid an Opera bug when the
5 | // contenteditable attribute is included anywhere else in the document.
6 | // Otherwise it causes space to appear at the top and bottom of elements
7 | // that are clearfixed.
8 | // 2. The use of `table` rather than `block` is only necessary if using
9 | // `:before` to contain the top-margins of child elements.
10 | //
11 | // Source: http://nicolasgallagher.com/micro-clearfix-hack/
12 |
13 | .clearfix() {
14 | &:before,
15 | &:after {
16 | content: " "; // 1
17 | display: table; // 2
18 | }
19 | &:after {
20 | clear: both;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/less/bordered-pulled.less:
--------------------------------------------------------------------------------
1 | // Bordered & Pulled
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-border {
5 | padding: .2em .25em .15em;
6 | border: solid .08em @fa-border-color;
7 | border-radius: .1em;
8 | }
9 |
10 | .@{fa-css-prefix}-pull-left { float: left; }
11 | .@{fa-css-prefix}-pull-right { float: right; }
12 |
13 | .@{fa-css-prefix} {
14 | &.@{fa-css-prefix}-pull-left { margin-right: .3em; }
15 | &.@{fa-css-prefix}-pull-right { margin-left: .3em; }
16 | }
17 |
18 | /* Deprecated as of 4.4.0 */
19 | .pull-right { float: right; }
20 | .pull-left { float: left; }
21 |
22 | .@{fa-css-prefix} {
23 | &.pull-left { margin-right: .3em; }
24 | &.pull-right { margin-left: .3em; }
25 | }
26 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/breadcrumbs.less:
--------------------------------------------------------------------------------
1 | //
2 | // Breadcrumbs
3 | // --------------------------------------------------
4 |
5 |
6 | .breadcrumb {
7 | padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;
8 | margin-bottom: @line-height-computed;
9 | list-style: none;
10 | background-color: @breadcrumb-bg;
11 | border-radius: @border-radius-base;
12 |
13 | > li {
14 | display: inline-block;
15 |
16 | + li:before {
17 | content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space
18 | padding: 0 5px;
19 | color: @breadcrumb-color;
20 | }
21 | }
22 |
23 | > .active {
24 | color: @breadcrumb-active-color;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/scss/_bordered-pulled.scss:
--------------------------------------------------------------------------------
1 | // Bordered & Pulled
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-border {
5 | padding: .2em .25em .15em;
6 | border: solid .08em $fa-border-color;
7 | border-radius: .1em;
8 | }
9 |
10 | .#{$fa-css-prefix}-pull-left { float: left; }
11 | .#{$fa-css-prefix}-pull-right { float: right; }
12 |
13 | .#{$fa-css-prefix} {
14 | &.#{$fa-css-prefix}-pull-left { margin-right: .3em; }
15 | &.#{$fa-css-prefix}-pull-right { margin-left: .3em; }
16 | }
17 |
18 | /* Deprecated as of 4.4.0 */
19 | .pull-right { float: right; }
20 | .pull-left { float: left; }
21 |
22 | .#{$fa-css-prefix} {
23 | &.pull-left { margin-right: .3em; }
24 | &.pull-right { margin-left: .3em; }
25 | }
26 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/bouncing_entrances/bounceIn.css:
--------------------------------------------------------------------------------
1 | @keyframes bounceIn {
2 | from, 20%, 40%, 60%, 80%, 100% {
3 | animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
4 | }
5 |
6 | 0% {
7 | opacity: 0;
8 | transform: scale3d(.3, .3, .3);
9 | }
10 |
11 | 20% {
12 | transform: scale3d(1.1, 1.1, 1.1);
13 | }
14 |
15 | 40% {
16 | transform: scale3d(.9, .9, .9);
17 | }
18 |
19 | 60% {
20 | opacity: 1;
21 | transform: scale3d(1.03, 1.03, 1.03);
22 | }
23 |
24 | 80% {
25 | transform: scale3d(.97, .97, .97);
26 | }
27 |
28 | 100% {
29 | opacity: 1;
30 | transform: scale3d(1, 1, 1);
31 | }
32 | }
33 |
34 | .bounceIn {
35 | animation-name: bounceIn;
36 | }
37 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/responsive-embed.less:
--------------------------------------------------------------------------------
1 | // Embeds responsive
2 | //
3 | // Credit: Nicolas Gallagher and SUIT CSS.
4 |
5 | .embed-responsive {
6 | position: relative;
7 | display: block;
8 | height: 0;
9 | padding: 0;
10 | overflow: hidden;
11 |
12 | .embed-responsive-item,
13 | iframe,
14 | embed,
15 | object,
16 | video {
17 | position: absolute;
18 | top: 0;
19 | left: 0;
20 | bottom: 0;
21 | height: 100%;
22 | width: 100%;
23 | border: 0;
24 | }
25 | }
26 |
27 | // Modifier class for 16:9 aspect ratio
28 | .embed-responsive-16by9 {
29 | padding-bottom: 56.25%;
30 | }
31 |
32 | // Modifier class for 4:3 aspect ratio
33 | .embed-responsive-4by3 {
34 | padding-bottom: 75%;
35 | }
36 |
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/less/rotated-flipped.less:
--------------------------------------------------------------------------------
1 | // Rotated & Flipped Icons
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); }
5 | .@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); }
6 | .@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); }
7 |
8 | .@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); }
9 | .@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); }
10 |
11 | // Hook for IE8-9
12 | // -------------------------
13 |
14 | :root .@{fa-css-prefix}-rotate-90,
15 | :root .@{fa-css-prefix}-rotate-180,
16 | :root .@{fa-css-prefix}-rotate-270,
17 | :root .@{fa-css-prefix}-flip-horizontal,
18 | :root .@{fa-css-prefix}-flip-vertical {
19 | filter: none;
20 | }
21 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/sass/_tabs.scss:
--------------------------------------------------------------------------------
1 | .nav-tabs {
2 | background: $navbar-default-bg;
3 | > li {
4 | > a {
5 | color: #FFFFFF;
6 | border: 0;
7 | margin: 0;
8 | &:hover {
9 | background: transparent;
10 | border: 0;
11 | }
12 | }
13 | &.active > a, &.active > a:hover, &.open > a, &.open > a:hover {
14 | background: transparent !important;
15 | border: 0 !important;
16 | color: #FFFFFF !important;
17 | font-weight: 500;
18 | }
19 | &.disabled > a, &.disabled > a:hover {
20 | color: rgba(255,255,255,0.5);
21 | }
22 | }
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/jquery.js:
--------------------------------------------------------------------------------
1 | define([
2 | "./core",
3 | "./selector",
4 | "./traversing",
5 | "./callbacks",
6 | "./deferred",
7 | "./core/ready",
8 | "./data",
9 | "./queue",
10 | "./queue/delay",
11 | "./attributes",
12 | "./event",
13 | "./event/alias",
14 | "./manipulation",
15 | "./manipulation/_evalUrl",
16 | "./wrap",
17 | "./css",
18 | "./css/hiddenVisibleSelectors",
19 | "./serialize",
20 | "./ajax",
21 | "./ajax/xhr",
22 | "./ajax/script",
23 | "./ajax/jsonp",
24 | "./ajax/load",
25 | "./event/ajax",
26 | "./effects",
27 | "./effects/animatedSelector",
28 | "./offset",
29 | "./dimensions",
30 | "./deprecated",
31 | "./exports/amd",
32 | "./exports/global"
33 | ], function( jQuery ) {
34 |
35 | return jQuery;
36 |
37 | });
38 |
--------------------------------------------------------------------------------
/Vagrantfile:
--------------------------------------------------------------------------------
1 | VAGRANTFILE_API_VERSION = "2"
2 |
3 | Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
4 |
5 | config.vm.provider "virtualbox" do |v|
6 | v.memory = 2048
7 | end
8 |
9 | config.vm.box = "ubuntu/trusty64"
10 | config.vm.network "private_network", ip: "192.168.57.123"
11 | config.vm.hostname = "uappexplorer"
12 | config.vm.synced_folder "./", "/srv/uappexplorer", id: "vagrant-root"
13 |
14 | config.vm.provision :docker
15 | config.vm.provision :docker_compose, project_name: "uappexplorer", yml: "/vagrant/env/docker-compose.yml", rebuild: true, run: "always"
16 |
17 | config.vm.provision "shell", path: "./env/vagrant-setup.sh"
18 | config.vm.provision "shell", run: "always", inline: "service nginx restart"
19 | end
20 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/sass/_shadows.scss:
--------------------------------------------------------------------------------
1 | .shadow-z-1 {
2 | box-shadow: 0 1px 3px rgba(0,0,0, .12),
3 | 0 1px 2px rgba(0,0,0, .24) ;
4 | }
5 |
6 | .shadow-z-2 {
7 | box-shadow: 0 3px 6px rgba(0,0,0, .16),
8 | 0 3px 6px rgba(0,0,0, .23) ;
9 | }
10 | .shadow-z-2-hover {
11 | box-shadow: 0 3px 6px rgba(0,0,0, .20),
12 | 0 3px 6px rgba(0,0,0, .28) ;
13 | }
14 |
15 | .shadow-z-3 {
16 | box-shadow: 0 10px 20px rgba(0,0,0, .19),
17 | 0 6px 6px rgba(0,0,0, .23) ;
18 | }
19 |
20 | .shadow-z-4 {
21 | box-shadow: 0 14px 28px rgba(0,0,0, .25),
22 | 0 10px 10px rgba(0,0,0, .22) ;
23 | }
24 |
25 | .shadow-z-5 {
26 | box-shadow: 0 19px 38px rgba(0,0,0, .30),
27 | 0 15px 12px rgba(0,0,0, .22) ;
28 | }
29 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/attention_seekers/jello.css:
--------------------------------------------------------------------------------
1 | @keyframes jello {
2 | from, 11.1%, 100% {
3 | transform: none
4 | }
5 | 22.2% {
6 | transform: skewX(-12.5deg) skewY(-12.5deg)
7 | }
8 | 33.3% {
9 | transform: skewX(6.25deg) skewY(6.25deg)
10 | }
11 | 44.4% {
12 | transform: skewX(-3.125deg) skewY(-3.125deg)
13 | }
14 | 55.5% {
15 | transform: skewX(1.5625deg) skewY(1.5625deg)
16 | }
17 | 66.6% {
18 | transform: skewX(-0.78125deg) skewY(-0.78125deg)
19 | }
20 | 77.7% {
21 | transform: skewX(0.390625deg) skewY(0.390625deg)
22 | }
23 | 88.8% {
24 | transform: skewX(-0.1953125deg) skewY(-0.1953125deg)
25 | }
26 | }
27 |
28 |
29 |
30 | .jello{
31 | animation-name:jello;
32 | transform-origin: center
33 | }
34 |
--------------------------------------------------------------------------------
/www/bower_components/slick-carousel/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "slick-carousel",
3 | "main": ["slick/slick.min.js", "slick/slick.css", "slick/slick-theme.css", "slick/fonts/*"],
4 | "version": "1.5.8",
5 | "homepage": "https://github.com/kenwheeler/slick",
6 | "authors": [
7 | "Ken Wheeler "
8 | ],
9 | "description": "the last carousel you'll ever need",
10 | "keywords": [
11 | "responsive",
12 | "carousel",
13 | "jquery"
14 | ],
15 | "license": "MIT",
16 | "ignore": [
17 | "**/.*",
18 | "node_modules",
19 | "bower_components",
20 | "test",
21 | "tests",
22 | "index.html"
23 | ],
24 | "dependencies": {
25 | "jquery": ">=1.7"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/scss/_rotated-flipped.scss:
--------------------------------------------------------------------------------
1 | // Rotated & Flipped Icons
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); }
5 | .#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); }
6 | .#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); }
7 |
8 | .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); }
9 | .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); }
10 |
11 | // Hook for IE8-9
12 | // -------------------------
13 |
14 | :root .#{$fa-css-prefix}-rotate-90,
15 | :root .#{$fa-css-prefix}-rotate-180,
16 | :root .#{$fa-css-prefix}-rotate-270,
17 | :root .#{$fa-css-prefix}-flip-horizontal,
18 | :root .#{$fa-css-prefix}-flip-vertical {
19 | filter: none;
20 | }
21 |
--------------------------------------------------------------------------------
/src/server/json/open-source-licenses.json:
--------------------------------------------------------------------------------
1 | [
2 | "Apache License",
3 | "BSD License (Simplified)",
4 | "Creative Commons - No Rights Reserved",
5 | "GNU Affero GPL v3",
6 | "GNU GPL v2",
7 | "GNU GPL v3",
8 | "GNU LGPL v2.1",
9 | "GNU LGPL v3",
10 | "MIT/X/Expat License",
11 | "Academic Free License",
12 | "Artistic License 1.0",
13 | "Artistic License 2.0",
14 | "Common Public License",
15 | "Creative Commons - Attribution",
16 | "Creative Commons - Attribution Share Alike",
17 | "Eclipse Public License",
18 | "Educational Community License",
19 | "Mozilla Public License",
20 | "Open Font License v1.1",
21 | "Open Software License v3.0",
22 | "PHP License",
23 | "Public Domain",
24 | "Python License",
25 | "Zope Public License",
26 | "Other Open Source"
27 | ]
28 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/attention_seekers/wobble.css:
--------------------------------------------------------------------------------
1 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
2 |
3 | @keyframes wobble {
4 | from {
5 | transform: none;
6 | }
7 |
8 | 15% {
9 | transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
10 | }
11 |
12 | 30% {
13 | transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
14 | }
15 |
16 | 45% {
17 | transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
18 | }
19 |
20 | 60% {
21 | transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
22 | }
23 |
24 | 75% {
25 | transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
26 | }
27 |
28 | 100% {
29 | transform: none;
30 | }
31 | }
32 |
33 | .wobble {
34 | animation-name: wobble;
35 | }
36 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "bootstrap",
3 | "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
4 | "keywords": [
5 | "css",
6 | "js",
7 | "less",
8 | "mobile-first",
9 | "responsive",
10 | "front-end",
11 | "framework",
12 | "web"
13 | ],
14 | "homepage": "http://getbootstrap.com",
15 | "license": "MIT",
16 | "moduleType": "globals",
17 | "main": [
18 | "less/bootstrap.less",
19 | "dist/js/bootstrap.js"
20 | ],
21 | "ignore": [
22 | "/.*",
23 | "_config.yml",
24 | "CNAME",
25 | "composer.json",
26 | "CONTRIBUTING.md",
27 | "docs",
28 | "js/tests",
29 | "test-infra"
30 | ],
31 | "dependencies": {
32 | "jquery": ">= 1.9.1"
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/exports/global.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core",
3 | "../var/strundefined"
4 | ], function( jQuery, strundefined ) {
5 |
6 | var
7 | // Map over jQuery in case of overwrite
8 | _jQuery = window.jQuery,
9 |
10 | // Map over the $ in case of overwrite
11 | _$ = window.$;
12 |
13 | jQuery.noConflict = function( deep ) {
14 | if ( window.$ === jQuery ) {
15 | window.$ = _$;
16 | }
17 |
18 | if ( deep && window.jQuery === jQuery ) {
19 | window.jQuery = _jQuery;
20 | }
21 |
22 | return jQuery;
23 | };
24 |
25 | // Expose jQuery and $ identifiers, even in AMD
26 | // (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
27 | // and CommonJS for browser emulators (#13566)
28 | if ( typeof noGlobal === strundefined ) {
29 | window.jQuery = window.$ = jQuery;
30 | }
31 |
32 | });
33 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/dist/css/ripples.min.css:
--------------------------------------------------------------------------------
1 | .withripple{position:relative}.ripple-wrapper{position:absolute;top:0;left:0;z-index:1;width:100%;height:100%;overflow:hidden;border-radius:inherit;pointer-events:none}.ripple{position:absolute;width:20px;height:20px;margin-left:-10px;margin-top:-10px;border-radius:100%;background-color:rgba(0,0,0,.05);-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);-webkit-transform-origin:50%;-ms-transform-origin:50%;transform-origin:50%;opacity:0;pointer-events:none}.ripple.ripple-on{transition:opacity .15s ease-in 0s,-webkit-transform .5s cubic-bezier(.4,0,.2,1) .1s;transition:opacity .15s ease-in 0s,transform .5s cubic-bezier(.4,0,.2,1) .1s;opacity:.1}.ripple.ripple-out{transition:opacity .1s linear 0s!important;opacity:0}
2 | /*# sourceMappingURL=ripples.min.css.map */
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/less/_shadows.less:
--------------------------------------------------------------------------------
1 | .shadow-z-1 {
2 | box-shadow:
3 | 0 1px 6px 0 rgba(0, 0, 0, 0.12),
4 | 0 1px 6px 0 rgba(0, 0, 0, 0.12);
5 | }
6 |
7 | .shadow-z-1-hover {
8 | box-shadow:
9 | 0 5px 11px 0 rgba(0, 0, 0, 0.18),
10 | 0 4px 15px 0 rgba(0, 0, 0, 0.15);
11 | }
12 |
13 | .shadow-z-2 {
14 | box-shadow:
15 | 0 8px 17px 0 rgba(0, 0, 0, 0.2),
16 | 0 6px 20px 0 rgba(0, 0, 0, 0.19);
17 | }
18 |
19 | .shadow-z-3 {
20 | box-shadow:
21 | 0 12px 15px 0 rgba(0, 0, 0, 0.24),
22 | 0 17px 50px 0 rgba(0, 0, 0, 0.19);
23 | }
24 |
25 | .shadow-z-4 {
26 | box-shadow:
27 | 0 16px 28px 0 rgba(0, 0, 0, 0.22),
28 | 0 25px 55px 0 rgba(0, 0, 0, 0.21);
29 | }
30 |
31 | .shadow-z-5 {
32 | box-shadow:
33 | 0 27px 24px 0 rgba(0, 0, 0, 0.2),
34 | 0 40px 77px 0 rgba(0, 0, 0, 0.22);
35 | }
36 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/component-animations.less:
--------------------------------------------------------------------------------
1 | //
2 | // Component animations
3 | // --------------------------------------------------
4 |
5 | // Heads up!
6 | //
7 | // We don't use the `.opacity()` mixin here since it causes a bug with text
8 | // fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.
9 |
10 | .fade {
11 | opacity: 0;
12 | .transition(opacity .15s linear);
13 | &.in {
14 | opacity: 1;
15 | }
16 | }
17 |
18 | .collapse {
19 | display: none;
20 |
21 | &.in { display: block; }
22 | tr&.in { display: table-row; }
23 | tbody&.in { display: table-row-group; }
24 | }
25 |
26 | .collapsing {
27 | position: relative;
28 | height: 0;
29 | overflow: hidden;
30 | .transition-property(~"height, visibility");
31 | .transition-duration(.35s);
32 | .transition-timing-function(ease);
33 | }
34 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/mixins/table-row.less:
--------------------------------------------------------------------------------
1 | // Tables
2 |
3 | .table-row-variant(@state; @background) {
4 | // Exact selectors below required to override `.table-striped` and prevent
5 | // inheritance to nested tables.
6 | .table > thead > tr,
7 | .table > tbody > tr,
8 | .table > tfoot > tr {
9 | > td.@{state},
10 | > th.@{state},
11 | &.@{state} > td,
12 | &.@{state} > th {
13 | background-color: @background;
14 | }
15 | }
16 |
17 | // Hover states for `.table-hover`
18 | // Note: this is not available for cells or rows within `thead` or `tfoot`.
19 | .table-hover > tbody > tr {
20 | > td.@{state}:hover,
21 | > th.@{state}:hover,
22 | &.@{state}:hover > td,
23 | &:hover > .@{state},
24 | &.@{state}:hover > th {
25 | background-color: darken(@background, 5%);
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/less/path.less:
--------------------------------------------------------------------------------
1 | /* FONT PATH
2 | * -------------------------- */
3 |
4 | @font-face {
5 | font-family: 'FontAwesome';
6 | src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}');
7 | src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'),
8 | url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'),
9 | url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'),
10 | url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'),
11 | url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg');
12 | // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
13 | font-weight: normal;
14 | font-style: normal;
15 | }
16 |
--------------------------------------------------------------------------------
/www/bower_components/animate.css/source/flippers/flip.css:
--------------------------------------------------------------------------------
1 | @keyframes flip {
2 | from {
3 | transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
4 | animation-timing-function: ease-out;
5 | }
6 |
7 | 40% {
8 | transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
9 | animation-timing-function: ease-out;
10 | }
11 |
12 | 50% {
13 | transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
14 | animation-timing-function: ease-in;
15 | }
16 |
17 | 80% {
18 | transform: perspective(400px) scale3d(.95, .95, .95);
19 | animation-timing-function: ease-in;
20 | }
21 |
22 | 100% {
23 | transform: perspective(400px);
24 | animation-timing-function: ease-in;
25 | }
26 | }
27 |
28 | .animated.flip {
29 | backface-visibility: visible;
30 | animation-name: flip;
31 | }
32 |
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/scss/_path.scss:
--------------------------------------------------------------------------------
1 | /* FONT PATH
2 | * -------------------------- */
3 |
4 | @font-face {
5 | font-family: 'FontAwesome';
6 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}');
7 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'),
8 | url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'),
9 | url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'),
10 | url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'),
11 | url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg');
12 | // src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
13 | font-weight: normal;
14 | font-style: normal;
15 | }
16 |
--------------------------------------------------------------------------------
/www/less/apps.less:
--------------------------------------------------------------------------------
1 | .apps {
2 | .app-search {
3 | .btn-toolbar {
4 | margin-top: 15px;
5 | margin-left: 5px;
6 | }
7 |
8 | .search-box {
9 | margin-top: 5px;
10 | }
11 |
12 | select {
13 | margin-top: 5px;
14 | }
15 |
16 | .filters {
17 | margin-bottom: 10px;
18 | }
19 |
20 | .more-filters {
21 | margin-left: 15px;
22 | }
23 |
24 | .category-dropdown .dropdown-menu {
25 | max-height: 500px;
26 | overflow-y: auto;
27 | }
28 |
29 | .top-filters {
30 | margin-top: 10px;
31 | }
32 |
33 | .more-filters-btn {
34 | margin-right: 10px;
35 | }
36 | }
37 |
38 | .app-list {
39 | margin-top: 30px;
40 |
41 | .col-md-2 {
42 | margin-bottom: 25px;
43 | }
44 |
45 | .separator:before {
46 | margin-bottom: 15px;
47 | }
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/src/logger.js:
--------------------------------------------------------------------------------
1 | var config = require('./config');
2 | var winston = require('winston');
3 | var papertrail = require('winston-papertrail');
4 |
5 | var logger = new (winston.Logger)({
6 | transports: [
7 | new (winston.transports.Console)({level: 'debug'})
8 | ]
9 | });
10 |
11 | logger.cli();
12 |
13 | if (config.papertrail.port) {
14 | logger.add(papertrail.Papertrail, {
15 | host: config.papertrail.host,
16 | port: config.papertrail.port,
17 | });
18 | }
19 | else {
20 | logger.debug('No papertrail token');
21 | }
22 |
23 | process.on('uncaughtException', function(err) {
24 | logger.error('uncaughtException: ' + err);
25 |
26 | if (err && err.stack) {
27 | logger.error(err.stack);
28 | }
29 | });
30 |
31 | process.on('unhandledRejection', (reason) => {
32 | logger.error('unhandledRejection: ' + reason);
33 | });
34 |
35 | module.exports = logger;
36 |
--------------------------------------------------------------------------------
/www/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | uApp Explorer
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/sass/ripples.scss:
--------------------------------------------------------------------------------
1 | .withripple {
2 | position: relative;
3 | }
4 | .ripple-wrapper {
5 | position: absolute;
6 | top: 0;
7 | left: 0;
8 | z-index: 1;
9 | width: 100%;
10 | height: 100%;
11 | overflow: hidden;
12 | border-radius: 2px;
13 | }
14 | .ripple {
15 | position: absolute;
16 | width: 20px;
17 | height: 20px;
18 | margin-left: -10px;
19 | margin-top: -10px;
20 | border-radius: 100%;
21 | background-color: rgba(0,0,0,0.05);
22 | transform: scale(1);
23 | transform-origin: 50%;
24 | opacity: 0;
25 | pointer-events: none;
26 | }
27 | .ripple.ripple-on {
28 | transition: opacity 0.15s ease-in 0s, transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s;
29 | opacity: 1;
30 | }
31 | .ripple.ripple-out {
32 | transition: opacity 0.1s linear 0s !important;
33 | opacity: 0;
34 | }
35 |
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/less/animated.less:
--------------------------------------------------------------------------------
1 | // Animated Icons
2 | // --------------------------
3 |
4 | .@{fa-css-prefix}-spin {
5 | -webkit-animation: fa-spin 2s infinite linear;
6 | animation: fa-spin 2s infinite linear;
7 | }
8 |
9 | .@{fa-css-prefix}-pulse {
10 | -webkit-animation: fa-spin 1s infinite steps(8);
11 | animation: fa-spin 1s infinite steps(8);
12 | }
13 |
14 | @-webkit-keyframes fa-spin {
15 | 0% {
16 | -webkit-transform: rotate(0deg);
17 | transform: rotate(0deg);
18 | }
19 | 100% {
20 | -webkit-transform: rotate(359deg);
21 | transform: rotate(359deg);
22 | }
23 | }
24 |
25 | @keyframes fa-spin {
26 | 0% {
27 | -webkit-transform: rotate(0deg);
28 | transform: rotate(0deg);
29 | }
30 | 100% {
31 | -webkit-transform: rotate(359deg);
32 | transform: rotate(359deg);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/scss/_animated.scss:
--------------------------------------------------------------------------------
1 | // Spinning Icons
2 | // --------------------------
3 |
4 | .#{$fa-css-prefix}-spin {
5 | -webkit-animation: fa-spin 2s infinite linear;
6 | animation: fa-spin 2s infinite linear;
7 | }
8 |
9 | .#{$fa-css-prefix}-pulse {
10 | -webkit-animation: fa-spin 1s infinite steps(8);
11 | animation: fa-spin 1s infinite steps(8);
12 | }
13 |
14 | @-webkit-keyframes fa-spin {
15 | 0% {
16 | -webkit-transform: rotate(0deg);
17 | transform: rotate(0deg);
18 | }
19 | 100% {
20 | -webkit-transform: rotate(359deg);
21 | transform: rotate(359deg);
22 | }
23 | }
24 |
25 | @keyframes fa-spin {
26 | 0% {
27 | -webkit-transform: rotate(0deg);
28 | transform: rotate(0deg);
29 | }
30 | 100% {
31 | -webkit-transform: rotate(359deg);
32 | transform: rotate(359deg);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/.bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "font-awesome",
3 | "description": "Font Awesome",
4 | "keywords": [],
5 | "homepage": "http://fontawesome.io",
6 | "dependencies": {},
7 | "devDependencies": {},
8 | "license": [
9 | "OFL-1.1",
10 | "MIT",
11 | "CC-BY-3.0"
12 | ],
13 | "main": [
14 | "less/font-awesome.less",
15 | "scss/font-awesome.scss"
16 | ],
17 | "ignore": [
18 | "*/.*",
19 | "*.json",
20 | "src",
21 | "*.yml",
22 | "Gemfile",
23 | "Gemfile.lock",
24 | "*.md"
25 | ],
26 | "version": "4.4.0",
27 | "_release": "4.4.0",
28 | "_resolution": {
29 | "type": "version",
30 | "tag": "v4.4.0",
31 | "commit": "f2cc73da12f0e6d828bc2daaa72bff457067bf39"
32 | },
33 | "_source": "git://github.com/FortAwesome/Font-Awesome.git",
34 | "_target": "~4.4.0",
35 | "_originalSource": "fontawesome",
36 | "_direct": true
37 | }
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/less/_plugin-snackbarjs.less:
--------------------------------------------------------------------------------
1 | // Support for SnackbarJS plugin
2 | // https://github.com/FezVrasta/snackbarjs
3 |
4 | .snackbar {
5 | // Style
6 | background-color: #323232;
7 | color: @darkbg-text;
8 | font-size: 14px;
9 | border-radius: 2px;
10 | .shadow-z-1;
11 |
12 | // Animation
13 | height: 0;
14 | transition: transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0 linear 0.2s, padding 0 linear 0.2s, height 0 linear 0.2s;
15 | transform: translateY(200%);
16 | }
17 |
18 | .snackbar.snackbar-opened {
19 | // Style
20 | padding: 14px 15px;
21 | margin-bottom: 20px;
22 |
23 | // Animation
24 | height: auto;
25 | transition: transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0 linear 0.2s, height 0 linear 0.2s;
26 | transform: none;
27 | }
28 |
29 | // Variations
30 | .snackbar.toast {
31 | border-radius: 200px;
32 | }
33 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/less/ripples.less:
--------------------------------------------------------------------------------
1 | .withripple {
2 | position: relative;
3 | }
4 | .ripple-wrapper {
5 | position: absolute;
6 | top: 0;
7 | left: 0;
8 | z-index: 1;
9 | width: 100%;
10 | height: 100%;
11 | overflow: hidden;
12 | border-radius: inherit;
13 | pointer-events: none;
14 | }
15 | .ripple {
16 | position: absolute;
17 | width: 20px;
18 | height: 20px;
19 | margin-left: -10px;
20 | margin-top: -10px;
21 | border-radius: 100%;
22 | background-color: rgba(0,0,0,0.05);
23 | transform: scale(1);
24 | transform-origin: 50%;
25 | opacity: 0;
26 | pointer-events: none;
27 | }
28 | .ripple.ripple-on {
29 | transition: opacity 0.15s ease-in 0s, transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s;
30 | opacity: 0.1;
31 | }
32 | .ripple.ripple-out {
33 | transition: opacity 0.1s linear 0s !important;
34 | opacity: 0;
35 | }
36 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/.bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "jquery",
3 | "version": "2.1.4",
4 | "main": "dist/jquery.js",
5 | "license": "MIT",
6 | "ignore": [
7 | "**/.*",
8 | "build",
9 | "dist/cdn",
10 | "speed",
11 | "test",
12 | "*.md",
13 | "AUTHORS.txt",
14 | "Gruntfile.js",
15 | "package.json"
16 | ],
17 | "devDependencies": {
18 | "sizzle": "2.1.1-jquery.2.1.2",
19 | "requirejs": "2.1.10",
20 | "qunit": "1.14.0",
21 | "sinon": "1.8.1"
22 | },
23 | "keywords": [
24 | "jquery",
25 | "javascript",
26 | "library"
27 | ],
28 | "homepage": "https://github.com/jquery/jquery",
29 | "_release": "2.1.4",
30 | "_resolution": {
31 | "type": "version",
32 | "tag": "2.1.4",
33 | "commit": "7751e69b615c6eca6f783a81e292a55725af6b85"
34 | },
35 | "_source": "git://github.com/jquery/jquery.git",
36 | "_target": "~2.1.1",
37 | "_originalSource": "jquery"
38 | }
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/close.less:
--------------------------------------------------------------------------------
1 | //
2 | // Close icons
3 | // --------------------------------------------------
4 |
5 |
6 | .close {
7 | float: right;
8 | font-size: (@font-size-base * 1.5);
9 | font-weight: @close-font-weight;
10 | line-height: 1;
11 | color: @close-color;
12 | text-shadow: @close-text-shadow;
13 | .opacity(.2);
14 |
15 | &:hover,
16 | &:focus {
17 | color: @close-color;
18 | text-decoration: none;
19 | cursor: pointer;
20 | .opacity(.5);
21 | }
22 |
23 | // Additional properties for button version
24 | // iOS requires the button element instead of an anchor tag.
25 | // If you want the anchor version, it requires `href="#"`.
26 | // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
27 | button& {
28 | padding: 0;
29 | cursor: pointer;
30 | background: transparent;
31 | border: 0;
32 | -webkit-appearance: none;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/package.js:
--------------------------------------------------------------------------------
1 | // package metadata file for Meteor.js
2 |
3 | /* jshint strict:false */
4 | /* global Package:true */
5 |
6 | Package.describe({
7 | name: 'twbs:bootstrap', // http://atmospherejs.com/twbs/bootstrap
8 | summary: 'The most popular front-end framework for developing responsive, mobile first projects on the web.',
9 | version: '3.3.5',
10 | git: 'https://github.com/twbs/bootstrap.git'
11 | });
12 |
13 | Package.onUse(function (api) {
14 | api.versionsFrom('METEOR@1.0');
15 | api.use('jquery', 'client');
16 | api.addFiles([
17 | 'dist/fonts/glyphicons-halflings-regular.eot',
18 | 'dist/fonts/glyphicons-halflings-regular.svg',
19 | 'dist/fonts/glyphicons-halflings-regular.ttf',
20 | 'dist/fonts/glyphicons-halflings-regular.woff',
21 | 'dist/fonts/glyphicons-halflings-regular.woff2',
22 | 'dist/css/bootstrap.css',
23 | 'dist/js/bootstrap.js'
24 | ], 'client');
25 | });
26 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/sass/_plugin-snackbarjs.scss:
--------------------------------------------------------------------------------
1 | // Support for SnackbarJS plugin
2 | // https://github.com/FezVrasta/snackbarjs
3 |
4 | .snackbar {
5 | // Style
6 | background-color: #323232;
7 | color: $darkbg-text;
8 | font-size: 14px;
9 | border-radius: 2px;
10 | @extend .shadow-z-1;
11 |
12 | // Animation
13 | height: 0;
14 | transition: transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0 linear 0.2s, padding 0 linear 0.2s, height 0 linear 0.2s;
15 | transform: translateY(200%);
16 | }
17 |
18 | .snackbar.snackbar-opened {
19 | // Style
20 | padding: 14px 15px;
21 | margin-bottom: 20px;
22 |
23 | // Animation
24 | height: auto;
25 | transition: transform 0.2s ease-in-out, opacity 0.2s ease-in, height 0 linear 0.2s, height 0 linear 0.2s;
26 | transform: none;
27 | }
28 |
29 | // Variations
30 | .snackbar.toast {
31 | border-radius: 200px;
32 | }
33 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/thumbnails.less:
--------------------------------------------------------------------------------
1 | //
2 | // Thumbnails
3 | // --------------------------------------------------
4 |
5 |
6 | // Mixin and adjust the regular image class
7 | .thumbnail {
8 | display: block;
9 | padding: @thumbnail-padding;
10 | margin-bottom: @line-height-computed;
11 | line-height: @line-height-base;
12 | background-color: @thumbnail-bg;
13 | border: 1px solid @thumbnail-border;
14 | border-radius: @thumbnail-border-radius;
15 | .transition(border .2s ease-in-out);
16 |
17 | > img,
18 | a > img {
19 | &:extend(.img-responsive);
20 | margin-left: auto;
21 | margin-right: auto;
22 | }
23 |
24 | // Add a hover state for linked versions only
25 | a&:hover,
26 | a&:focus,
27 | a&.active {
28 | border-color: @link-color;
29 | }
30 |
31 | // Image captions
32 | .caption {
33 | padding: @thumbnail-caption-padding;
34 | color: @thumbnail-caption-color;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/www/less/appView.less:
--------------------------------------------------------------------------------
1 | .app-view {
2 | .list-group-item-heading {
3 | padding-right: 50px;
4 | }
5 |
6 | &.list-group {
7 | margin-bottom: 15px;
8 | }
9 | }
10 |
11 | @media (max-width: 768px) {
12 | .grid-view {
13 | .app-view {
14 | text-align: center;
15 |
16 | .row-action-primary {
17 | padding: 0px !important;
18 | float: none !important;
19 | }
20 |
21 | .row-content {
22 | display: block !important;
23 | width: auto !important;
24 | }
25 |
26 | .least-content {
27 | position: static !important;
28 | display: inline-block !important;
29 | }
30 |
31 | .least-content-lower {
32 | position: static !important;
33 | display: inline-block !important;
34 | }
35 |
36 | .list-group-item-heading {
37 | padding-right: 0px !important;
38 | font-size: 16px !important;
39 | }
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/www/app/components/login.jsx:
--------------------------------------------------------------------------------
1 | var React = require('react');
2 | var mixins = require('baobab-react/mixins');
3 | var PureRenderMixin = require('react-addons-pure-render-mixin');
4 | var i18n = require('i18next-client');
5 |
6 | module.exports = React.createClass({
7 | displayName: 'Donate',
8 | mixins: [
9 | mixins.branch,
10 | PureRenderMixin,
11 | ],
12 | cursors: {
13 | lng: ['lng'],
14 | },
15 |
16 | render: function() {
17 | return (
18 |
19 |
20 |

21 |
22 |
23 |
24 |
29 |
30 |
31 | );
32 | }
33 | });
34 |
--------------------------------------------------------------------------------
/www/app/components/helpers/if.jsx:
--------------------------------------------------------------------------------
1 | var React = require('react');
2 | var PureRenderMixin = require('react-addons-pure-render-mixin');
3 |
4 | module.exports = React.createClass({
5 | displayName: 'If',
6 | mixins: [
7 | PureRenderMixin
8 | ],
9 | props: {
10 | value: React.PropTypes.bool.isRequired,
11 | element: React.PropTypes.string,
12 | className: React.PropTypes.string,
13 | },
14 |
15 | render: function() {
16 | var children = '';
17 | if (this.props.value) {
18 | children = this.props.children;
19 | }
20 |
21 | var component = ;
22 | if (this.props.element == 'li') {
23 | component = {children};
24 | }
25 | else if (this.props.element == 'span') {
26 | component = {children};
27 | }
28 | else {
29 | component = {children}
;
30 | }
31 |
32 | return component;
33 | }
34 | });
35 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/dist/css/roboto.min.css:
--------------------------------------------------------------------------------
1 | @font-face{font-family:RobotoDraft;src:local('RobotoDraft'),local('RobotoDraft-Regular'),local('Roboto-Regular'),url(../fonts/RobotoDraftRegular.woff2) format('woff2'),url(../fonts/RobotoDraftRegular.woff) format('woff')}@font-face{font-family:RobotoDraft;font-weight:500;src:local('RobotoDraft Medium'),local('RobotoDraft-Medium'),local('Roboto-Medium'),url(../fonts/RobotoDraftMedium.woff2) format('woff2'),url(../fonts/RobotoDraftMedium.woff) format('woff')}@font-face{font-family:RobotoDraft;font-weight:700;src:local('RobotoDraft Bold'),local('RobotoDraft-Bold'),local('Roboto-Bold'),url(../fonts/RobotoDraftBold.woff2) format('woff2'),url(../fonts/RobotoDraftBold.woff) format('woff')}@font-face{font-family:RobotoDraft;font-style:italic;src:local('RobotoDraft Italic'),local('RobotoDraft-Italic'),local('Roboto-Italic'),url(../fonts/RobotoDraftItalic.woff2) format('woff2'),url(../fonts/RobotoDraftItalic.woff) format('woff')}
2 | /*# sourceMappingURL=roboto.min.css.map */
--------------------------------------------------------------------------------
/deploy/nginx.conf:
--------------------------------------------------------------------------------
1 | server {
2 | listen 80 default_server;
3 | return 444;
4 | }
5 |
6 | server {
7 | listen 80;
8 | server_name uappexplorer.com;
9 | return 301 https://$host$request_uri;
10 | }
11 |
12 | server {
13 | listen 443 ssl;
14 | server_name uappexplorer.com;
15 | root /srv/uappexplorer/www/dist/;
16 |
17 | if ($host !~* ^uappexplorer\.com$ ) {
18 | return 444;
19 | }
20 |
21 | ssl on;
22 | ssl_certificate /etc/letsencrypt/live/uappexplorer.com/fullchain.pem;
23 | ssl_certificate_key /etc/letsencrypt/live/uappexplorer.com/privkey.pem;
24 | ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
25 |
26 | gzip on;
27 | gzip_min_length 500;
28 | gzip_types text/plain text/html application/json application/javascript text/css;
29 |
30 | client_max_body_size 100M;
31 |
32 | location / {
33 | proxy_pass http://localhost:8081/;
34 | proxy_set_header Host $host;
35 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/utilities.less:
--------------------------------------------------------------------------------
1 | //
2 | // Utility classes
3 | // --------------------------------------------------
4 |
5 |
6 | // Floats
7 | // -------------------------
8 |
9 | .clearfix {
10 | .clearfix();
11 | }
12 | .center-block {
13 | .center-block();
14 | }
15 | .pull-right {
16 | float: right !important;
17 | }
18 | .pull-left {
19 | float: left !important;
20 | }
21 |
22 |
23 | // Toggling content
24 | // -------------------------
25 |
26 | // Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1
27 | .hide {
28 | display: none !important;
29 | }
30 | .show {
31 | display: block !important;
32 | }
33 | .invisible {
34 | visibility: hidden;
35 | }
36 | .text-hide {
37 | .text-hide();
38 | }
39 |
40 |
41 | // Hide from screenreaders and browsers
42 | //
43 | // Credit: HTML5 Boilerplate
44 |
45 | .hidden {
46 | display: none !important;
47 | }
48 |
49 |
50 | // For Affix plugin
51 | // -------------------------
52 |
53 | .affix {
54 | position: fixed;
55 | }
56 |
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/less/mixins.less:
--------------------------------------------------------------------------------
1 | // Mixins
2 | // --------------------------
3 |
4 | .fa-icon() {
5 | display: inline-block;
6 | font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 |
12 | }
13 |
14 | .fa-icon-rotate(@degrees, @rotation) {
15 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation);
16 | -webkit-transform: rotate(@degrees);
17 | -ms-transform: rotate(@degrees);
18 | transform: rotate(@degrees);
19 | }
20 |
21 | .fa-icon-flip(@horiz, @vert, @rotation) {
22 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1);
23 | -webkit-transform: scale(@horiz, @vert);
24 | -ms-transform: scale(@horiz, @vert);
25 | transform: scale(@horiz, @vert);
26 | }
27 |
--------------------------------------------------------------------------------
/www/webpack.config.js:
--------------------------------------------------------------------------------
1 | var webpack = require('webpack');
2 | var path = require('path');
3 |
4 | module.exports = {
5 | entry: './app/index.jsx',
6 | output: {
7 | hash: true,
8 | path: __dirname,
9 | filename: 'app.js'
10 | },
11 |
12 | resolve: {
13 | extensions: ['', '.js', '.jsx'],
14 | modulesDirectories: ['node_modules', 'bower_components'],
15 | },
16 |
17 | module: {
18 | loaders: [
19 | {
20 | test: /\.jsx?$/,
21 | exclude: /(node_modules|bower_components)/,
22 | loader: 'babel-loader',
23 | query: {
24 | presets: ['es2015', 'react']
25 | }
26 | },
27 | ],
28 | },
29 |
30 | plugins: [
31 | new webpack.ResolverPlugin(
32 | new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin('.bower.json', ['main'])
33 | ),
34 | //new webpack.optimize.DedupePlugin(),
35 | //new webpack.optimize.UglifyJsPlugin(),
36 | ],
37 | };
38 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/attributes/support.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../var/support"
3 | ], function( support ) {
4 |
5 | (function() {
6 | var input = document.createElement( "input" ),
7 | select = document.createElement( "select" ),
8 | opt = select.appendChild( document.createElement( "option" ) );
9 |
10 | input.type = "checkbox";
11 |
12 | // Support: iOS<=5.1, Android<=4.2+
13 | // Default value for a checkbox should be "on"
14 | support.checkOn = input.value !== "";
15 |
16 | // Support: IE<=11+
17 | // Must access selectedIndex to make default options select
18 | support.optSelected = opt.selected;
19 |
20 | // Support: Android<=2.3
21 | // Options inside disabled selects are incorrectly marked as disabled
22 | select.disabled = true;
23 | support.optDisabled = !opt.disabled;
24 |
25 | // Support: IE<=11+
26 | // An input loses its value after becoming a radio
27 | input = document.createElement( "input" );
28 | input.value = "t";
29 | input.type = "radio";
30 | support.radioValue = input.value === "t";
31 | })();
32 |
33 | return support;
34 |
35 | });
36 |
--------------------------------------------------------------------------------
/www/bower_components/slick-carousel/.bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "slick-carousel",
3 | "main": [
4 | "slick/slick.min.js",
5 | "slick/slick.css",
6 | "slick/slick-theme.css",
7 | "slick/fonts/*"
8 | ],
9 | "version": "1.5.8",
10 | "homepage": "https://github.com/kenwheeler/slick",
11 | "authors": [
12 | "Ken Wheeler "
13 | ],
14 | "description": "the last carousel you'll ever need",
15 | "keywords": [
16 | "responsive",
17 | "carousel",
18 | "jquery"
19 | ],
20 | "license": "MIT",
21 | "ignore": [
22 | "**/.*",
23 | "node_modules",
24 | "bower_components",
25 | "test",
26 | "tests",
27 | "index.html"
28 | ],
29 | "dependencies": {
30 | "jquery": ">=1.7"
31 | },
32 | "_release": "1.5.8",
33 | "_resolution": {
34 | "type": "version",
35 | "tag": "1.5.8",
36 | "commit": "66a9ee8f01a0d8e56f959b17ce70ed1a27ebfdee"
37 | },
38 | "_source": "git://github.com/kenwheeler/slick.git",
39 | "_target": "~1.5.8",
40 | "_originalSource": "slick-carousel",
41 | "_direct": true
42 | }
--------------------------------------------------------------------------------
/www/bower_components/font-awesome/scss/_mixins.scss:
--------------------------------------------------------------------------------
1 | // Mixins
2 | // --------------------------
3 |
4 | @mixin fa-icon() {
5 | display: inline-block;
6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 |
12 | }
13 |
14 | @mixin fa-icon-rotate($degrees, $rotation) {
15 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
16 | -webkit-transform: rotate($degrees);
17 | -ms-transform: rotate($degrees);
18 | transform: rotate($degrees);
19 | }
20 |
21 | @mixin fa-icon-flip($horiz, $vert, $rotation) {
22 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
23 | -webkit-transform: scale($horiz, $vert);
24 | -ms-transform: scale($horiz, $vert);
25 | transform: scale($horiz, $vert);
26 | }
27 |
--------------------------------------------------------------------------------
/src/spider/clicks/api.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const config = require('../../config');
4 | const logger = require('../../logger');
5 |
6 | const axios = require('axios');
7 |
8 | const OPENSTORE_URL = 'https://open-store.io/api/v2/apps';
9 | class OpenStoreApi {
10 | list(url, results) {
11 | url = url ? url : OPENSTORE_URL + '?limit=100';
12 | results = results ? results : [];
13 |
14 | return axios({
15 | method: 'get',
16 | url: url,
17 | headers: {'User-Agent': config.spider.snaps.user_agent}
18 | }).then((res) => {
19 | logger.debug('got package list page: ' + url);
20 |
21 | if (res.data && res.data.data && res.data.data.packages) {
22 | results = results.concat(res.data.data.packages);
23 | }
24 |
25 | if (res.data && res.data.data && res.data.data.next) {
26 | return this.list(res.data.data.next, results);
27 | }
28 | else {
29 | return results;
30 | }
31 | });
32 | }
33 | }
34 |
35 | module.exports = OpenStoreApi;
36 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/exports/amd.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core"
3 | ], function( jQuery ) {
4 |
5 | // Register as a named AMD module, since jQuery can be concatenated with other
6 | // files that may use define, but not via a proper concatenation script that
7 | // understands anonymous AMD modules. A named AMD is safest and most robust
8 | // way to register. Lowercase jquery is used because AMD module names are
9 | // derived from file names, and jQuery is normally delivered in a lowercase
10 | // file name. Do this after creating the global so that if an AMD module wants
11 | // to call noConflict to hide this version of jQuery, it will work.
12 |
13 | // Note that for maximum portability, libraries that are not jQuery should
14 | // declare themselves as anonymous modules, and avoid setting a global if an
15 | // AMD loader is present. jQuery is a special case. For more information, see
16 | // https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
17 |
18 | if ( typeof define === "function" && define.amd ) {
19 | define( "jquery", [], function() {
20 | return jQuery;
21 | });
22 | }
23 |
24 | });
25 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/pager.less:
--------------------------------------------------------------------------------
1 | //
2 | // Pager pagination
3 | // --------------------------------------------------
4 |
5 |
6 | .pager {
7 | padding-left: 0;
8 | margin: @line-height-computed 0;
9 | list-style: none;
10 | text-align: center;
11 | &:extend(.clearfix all);
12 | li {
13 | display: inline;
14 | > a,
15 | > span {
16 | display: inline-block;
17 | padding: 5px 14px;
18 | background-color: @pager-bg;
19 | border: 1px solid @pager-border;
20 | border-radius: @pager-border-radius;
21 | }
22 |
23 | > a:hover,
24 | > a:focus {
25 | text-decoration: none;
26 | background-color: @pager-hover-bg;
27 | }
28 | }
29 |
30 | .next {
31 | > a,
32 | > span {
33 | float: right;
34 | }
35 | }
36 |
37 | .previous {
38 | > a,
39 | > span {
40 | float: left;
41 | }
42 | }
43 |
44 | .disabled {
45 | > a,
46 | > a:hover,
47 | > a:focus,
48 | > span {
49 | color: @pager-disabled-color;
50 | background-color: @pager-bg;
51 | cursor: @cursor-disabled;
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/core/parseHTML.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core",
3 | "./var/rsingleTag",
4 | "../manipulation" // buildFragment
5 | ], function( jQuery, rsingleTag ) {
6 |
7 | // data: string of html
8 | // context (optional): If specified, the fragment will be created in this context, defaults to document
9 | // keepScripts (optional): If true, will include scripts passed in the html string
10 | jQuery.parseHTML = function( data, context, keepScripts ) {
11 | if ( !data || typeof data !== "string" ) {
12 | return null;
13 | }
14 | if ( typeof context === "boolean" ) {
15 | keepScripts = context;
16 | context = false;
17 | }
18 | context = context || document;
19 |
20 | var parsed = rsingleTag.exec( data ),
21 | scripts = !keepScripts && [];
22 |
23 | // Single tag
24 | if ( parsed ) {
25 | return [ context.createElement( parsed[1] ) ];
26 | }
27 |
28 | parsed = jQuery.buildFragment( [ data ], context, scripts );
29 |
30 | if ( scripts && scripts.length ) {
31 | jQuery( scripts ).remove();
32 | }
33 |
34 | return jQuery.merge( [], parsed.childNodes );
35 | };
36 |
37 | return jQuery.parseHTML;
38 |
39 | });
40 |
--------------------------------------------------------------------------------
/www/bower_components/slick-carousel/slick.jquery.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "slick",
3 | "title": "slick",
4 | "description": "A jQuery responsive touch carousel",
5 | "keywords": [
6 | "responsive",
7 | "slider",
8 | "carousel",
9 | "touch",
10 | "mobile"
11 | ],
12 | "version": "1.5.8",
13 | "author": {
14 | "name": "Ken Wheeler",
15 | "url": "http://kenwheeler.github.io"
16 | },
17 | "maintainers": [{
18 | "name": "Ken Wheeler",
19 | "email": "dubmediagroup@gmail.com",
20 | "url": "http://www.dubmediagroup.com"
21 | }],
22 | "licenses": [{
23 | "type": "MIT",
24 | "url": "https://github.com/kenwheeler/slick/blob/master/LICENSE"
25 | }],
26 | "demo": "http://kenwheeler.github.io/slick/",
27 | "bugs": "https://github.com/kenwheeler/slick/issues",
28 | "homepage": "https://github.com/kenwheeler/slick/",
29 | "docs": "https://github.com/kenwheeler/slick/",
30 | "download": "https://github.com/kenwheeler/slick/archive/master.zip",
31 | "dependencies": {
32 | "jquery": ">=1.7"
33 | }
34 | }
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/manipulation/support.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../var/support"
3 | ], function( support ) {
4 |
5 | (function() {
6 | var fragment = document.createDocumentFragment(),
7 | div = fragment.appendChild( document.createElement( "div" ) ),
8 | input = document.createElement( "input" );
9 |
10 | // Support: Safari<=5.1
11 | // Check state lost if the name is set (#11217)
12 | // Support: Windows Web Apps (WWA)
13 | // `name` and `type` must use .setAttribute for WWA (#14901)
14 | input.setAttribute( "type", "radio" );
15 | input.setAttribute( "checked", "checked" );
16 | input.setAttribute( "name", "t" );
17 |
18 | div.appendChild( input );
19 |
20 | // Support: Safari<=5.1, Android<4.2
21 | // Older WebKit doesn't clone checked state correctly in fragments
22 | support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
23 |
24 | // Support: IE<=11+
25 | // Make sure textarea (and checkbox) defaultValue is properly cloned
26 | div.innerHTML = "";
27 | support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
28 | })();
29 |
30 | return support;
31 |
32 | });
33 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/.bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "bootstrap",
3 | "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
4 | "keywords": [
5 | "css",
6 | "js",
7 | "less",
8 | "mobile-first",
9 | "responsive",
10 | "front-end",
11 | "framework",
12 | "web"
13 | ],
14 | "homepage": "http://getbootstrap.com",
15 | "license": "MIT",
16 | "moduleType": "globals",
17 | "main": [
18 | "less/bootstrap.less",
19 | "dist/js/bootstrap.js"
20 | ],
21 | "ignore": [
22 | "/.*",
23 | "_config.yml",
24 | "CNAME",
25 | "composer.json",
26 | "CONTRIBUTING.md",
27 | "docs",
28 | "js/tests",
29 | "test-infra"
30 | ],
31 | "dependencies": {
32 | "jquery": ">= 1.9.1"
33 | },
34 | "version": "3.3.5",
35 | "_release": "3.3.5",
36 | "_resolution": {
37 | "type": "version",
38 | "tag": "v3.3.5",
39 | "commit": "16b48259a62f576e52c903c476bd42b90ab22482"
40 | },
41 | "_source": "git://github.com/twbs/bootstrap.git",
42 | "_target": "~3.3.5",
43 | "_originalSource": "bootstrap",
44 | "_direct": true
45 | }
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/grunt/bs-commonjs-generator.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap Grunt task for the CommonJS module generation
3 | * http://getbootstrap.com
4 | * Copyright 2014-2015 Twitter, Inc.
5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
6 | */
7 |
8 | 'use strict';
9 |
10 | var fs = require('fs');
11 | var path = require('path');
12 |
13 | var COMMONJS_BANNER = '// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\n';
14 |
15 | module.exports = function generateCommonJSModule(grunt, srcFiles, destFilepath) {
16 | var destDir = path.dirname(destFilepath);
17 |
18 | function srcPathToDestRequire(srcFilepath) {
19 | var requirePath = path.relative(destDir, srcFilepath).replace(/\\/g, '/');
20 | return 'require(\'' + requirePath + '\')';
21 | }
22 |
23 | var moduleOutputJs = COMMONJS_BANNER + srcFiles.map(srcPathToDestRequire).join('\n');
24 | try {
25 | fs.writeFileSync(destFilepath, moduleOutputJs);
26 | } catch (err) {
27 | grunt.fail.warn(err);
28 | }
29 | grunt.log.writeln('File ' + destFilepath.cyan + ' created.');
30 | };
31 |
--------------------------------------------------------------------------------
/www/bower_components/slick-carousel/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2013
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of
6 | this software and associated documentation files (the "Software"), to deal in
7 | the Software without restriction, including without limitation the rights to
8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9 | the Software, and to permit persons to whom the Software is furnished to do so,
10 | subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/src/db/index.js:
--------------------------------------------------------------------------------
1 | var mongoose = require('mongoose');
2 | mongoose.Promise = global.Promise;
3 |
4 | var Department = require('./department').Department;
5 | var List = require('./list').List;
6 | var Package = require('./package').Package;
7 | var Review = require('./review').Review;
8 | var User = require('./user').User;
9 | var Snap = require('./snap').Snap;
10 | var config = require('../config');
11 | var logger = require('../logger');
12 |
13 | //As recommended here: https://blog.mlab.com/2014/04/mongodb-driver-mongoose/
14 | var options = {
15 | server: {
16 | socketOptions: {
17 | keepAlive: 300000,
18 | connectTimeoutMS: 30000
19 | }
20 | },
21 | replset: {
22 | socketOptions: {
23 | keepAlive: 300000,
24 | connectTimeoutMS : 30000
25 | }
26 | }
27 | };
28 |
29 | mongoose.connect(config.mongo.uri + '/' + config.mongo.database, options, function(err) {
30 | if (err) {
31 | logger.error('database: ' + err);
32 | process.exit(1);
33 | }
34 | });
35 |
36 | exports.Department = Department;
37 | exports.List = List;
38 | exports.Package = Package;
39 | exports.Review = Review;
40 | exports.User = User;
41 | exports.Snap = Snap;
42 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2011-2015 Twitter, Inc
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/dist/css/ripples.css:
--------------------------------------------------------------------------------
1 | .withripple {
2 | position: relative;
3 | }
4 | .ripple-wrapper {
5 | position: absolute;
6 | top: 0;
7 | left: 0;
8 | z-index: 1;
9 | width: 100%;
10 | height: 100%;
11 | overflow: hidden;
12 | border-radius: inherit;
13 | pointer-events: none;
14 | }
15 | .ripple {
16 | position: absolute;
17 | width: 20px;
18 | height: 20px;
19 | margin-left: -10px;
20 | margin-top: -10px;
21 | border-radius: 100%;
22 | background-color: rgba(0, 0, 0, 0.05);
23 | -webkit-transform: scale(1);
24 | -ms-transform: scale(1);
25 | transform: scale(1);
26 | -webkit-transform-origin: 50%;
27 | -ms-transform-origin: 50%;
28 | transform-origin: 50%;
29 | opacity: 0;
30 | pointer-events: none;
31 | }
32 | .ripple.ripple-on {
33 | transition: opacity 0.15s ease-in 0s, -webkit-transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s;
34 | transition: opacity 0.15s ease-in 0s, transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s;
35 | opacity: 0.1;
36 | }
37 | .ripple.ripple-out {
38 | transition: opacity 0.1s linear 0s !important;
39 | opacity: 0;
40 | }
41 | /*# sourceMappingURL=ripples.css.map */
--------------------------------------------------------------------------------
/www/bower_components/jquery/MIT-LICENSE.txt:
--------------------------------------------------------------------------------
1 | Copyright 2014 jQuery Foundation and other contributors
2 | http://jquery.com/
3 |
4 | Permission is hereby granted, free of charge, to any person obtaining
5 | a copy of this software and associated documentation files (the
6 | "Software"), to deal in the Software without restriction, including
7 | without limitation the rights to use, copy, modify, merge, publish,
8 | distribute, sublicense, and/or sell copies of the Software, and to
9 | permit persons to whom the Software is furnished to do so, subject to
10 | the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be
13 | included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/media.less:
--------------------------------------------------------------------------------
1 | .media {
2 | // Proper spacing between instances of .media
3 | margin-top: 15px;
4 |
5 | &:first-child {
6 | margin-top: 0;
7 | }
8 | }
9 |
10 | .media,
11 | .media-body {
12 | zoom: 1;
13 | overflow: hidden;
14 | }
15 |
16 | .media-body {
17 | width: 10000px;
18 | }
19 |
20 | .media-object {
21 | display: block;
22 |
23 | // Fix collapse in webkit from max-width: 100% and display: table-cell.
24 | &.img-thumbnail {
25 | max-width: none;
26 | }
27 | }
28 |
29 | .media-right,
30 | .media > .pull-right {
31 | padding-left: 10px;
32 | }
33 |
34 | .media-left,
35 | .media > .pull-left {
36 | padding-right: 10px;
37 | }
38 |
39 | .media-left,
40 | .media-right,
41 | .media-body {
42 | display: table-cell;
43 | vertical-align: top;
44 | }
45 |
46 | .media-middle {
47 | vertical-align: middle;
48 | }
49 |
50 | .media-bottom {
51 | vertical-align: bottom;
52 | }
53 |
54 | // Reset margins on headings for tighter default spacing
55 | .media-heading {
56 | margin-top: 0;
57 | margin-bottom: 5px;
58 | }
59 |
60 | // Media list variation
61 | //
62 | // Undo default ul/ol styles
63 | .media-list {
64 | padding-left: 0;
65 | list-style: none;
66 | }
67 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/mixins/image.less:
--------------------------------------------------------------------------------
1 | // Image Mixins
2 | // - Responsive image
3 | // - Retina image
4 |
5 |
6 | // Responsive image
7 | //
8 | // Keep images from scaling beyond the width of their parents.
9 | .img-responsive(@display: block) {
10 | display: @display;
11 | max-width: 100%; // Part 1: Set a maximum relative to the parent
12 | height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching
13 | }
14 |
15 |
16 | // Retina image
17 | //
18 | // Short retina mixin for setting background-image and -size. Note that the
19 | // spelling of `min--moz-device-pixel-ratio` is intentional.
20 | .img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {
21 | background-image: url("@{file-1x}");
22 |
23 | @media
24 | only screen and (-webkit-min-device-pixel-ratio: 2),
25 | only screen and ( min--moz-device-pixel-ratio: 2),
26 | only screen and ( -o-min-device-pixel-ratio: 2/1),
27 | only screen and ( min-device-pixel-ratio: 2),
28 | only screen and ( min-resolution: 192dpi),
29 | only screen and ( min-resolution: 2dppx) {
30 | background-image: url("@{file-2x}");
31 | background-size: @width-1x @height-1x;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/dist/css/ripples.min.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["/less/ripples.less"],"names":[],"mappings":"AAAA,YACI,kBAAA,CAAA,eAGA,kBACA,CAAA,KACA,CAAA,MACA,CAAA,SACA,CAAA,UACA,CAAA,WACA,CAAA,eACA,CAAA,qBACA,CAAA,mBAEJ,CAAA,OACI,kBACA,CAAA,UACA,CAAA,WACA,CAAA,iBACA,CAAA,gBACA,CAAA,kBACA,CAAA,gCACA,CAAA,0BAAA,CACA,sBADA,CACA,kBAAA,CAAA,4BAAA,CACA,wBADA,CACA,oBAAA,CAAA,SACA,CAAA,mBAAA,CAAA,iBAGA,qFAAA,CACA,4EAAA,CAAA,UAAA,CAAA,kBAGA,2CACA,CAAA,SAAA,CAAA","file":"ripples.min.css","sourcesContent":[".withripple {\n position: relative;\n}\n.ripple-wrapper {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1;\n width: 100%;\n height: 100%;\n overflow: hidden;\n border-radius: inherit;\n pointer-events: none;\n}\n.ripple {\n position: absolute;\n width: 20px;\n height: 20px;\n margin-left: -10px;\n margin-top: -10px;\n border-radius: 100%;\n background-color: rgba(0,0,0,0.05);\n transform: scale(1);\n transform-origin: 50%;\n opacity: 0;\n pointer-events: none;\n}\n.ripple.ripple-on {\n transition: opacity 0.15s ease-in 0s, transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s;\n opacity: 0.1;\n}\n.ripple.ripple-out {\n transition: opacity 0.1s linear 0s !important;\n opacity: 0;\n}\n"]}
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/event/alias.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core",
3 | "../event"
4 | ], function( jQuery ) {
5 |
6 | jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
7 | "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
8 | "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
9 |
10 | // Handle event binding
11 | jQuery.fn[ name ] = function( data, fn ) {
12 | return arguments.length > 0 ?
13 | this.on( name, null, data, fn ) :
14 | this.trigger( name );
15 | };
16 | });
17 |
18 | jQuery.fn.extend({
19 | hover: function( fnOver, fnOut ) {
20 | return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
21 | },
22 |
23 | bind: function( types, data, fn ) {
24 | return this.on( types, null, data, fn );
25 | },
26 | unbind: function( types, fn ) {
27 | return this.off( types, null, fn );
28 | },
29 |
30 | delegate: function( selector, types, data, fn ) {
31 | return this.on( types, selector, data, fn );
32 | },
33 | undelegate: function( selector, types, fn ) {
34 | // ( namespace ) or ( selector, types [, fn] )
35 | return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
36 | }
37 | });
38 |
39 | });
40 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const server = require('./server');
4 | const spider = require('./spider');
5 | const config = require('./config');
6 | const logger = require('./logger');
7 | const cluster = require('cluster');
8 | const os = require('os');
9 |
10 | if (cluster.isMaster) {
11 | if (config.use_spider()) {
12 | spider.setupSchedule();
13 |
14 | if (!config.use_app() && !config.use_api()) {
15 | spider.server();
16 | }
17 | }
18 |
19 | if (config.use_app() || config.use_api()) {
20 | let cpus = os.cpus().length;
21 | let processes = cpus;
22 | if (config.server.process_limit > 0 && cpus > config.server.process_limit) {
23 | processes = config.server.process_limit;
24 | logger.debug('limiting processes to ' + processes + ' (CPUs: ' + cpus + ')');
25 | }
26 | else {
27 | logger.debug('spawning ' + processes + ' processes');
28 | }
29 |
30 | for (let i = 0; i < processes; i += 1) {
31 | cluster.fork();
32 | }
33 |
34 | cluster.on('exit', () => {
35 | cluster.fork();
36 | });
37 | }
38 | }
39 | else {
40 | if (config.use_app() || config.use_api()) {
41 | server.run();
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/dist/css/roboto.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'RobotoDraft';
3 | font-style: normal;
4 | font-weight: 400;
5 | src: local('RobotoDraft'), local('RobotoDraft-Regular'), local('Roboto-Regular'), url(../fonts/RobotoDraftRegular.woff2) format('woff2'), url(../fonts/RobotoDraftRegular.woff) format('woff');
6 | }
7 | @font-face {
8 | font-family: 'RobotoDraft';
9 | font-style: normal;
10 | font-weight: 500;
11 | src: local('RobotoDraft Medium'), local('RobotoDraft-Medium'), local('Roboto-Medium'), url(../fonts/RobotoDraftMedium.woff2) format('woff2'), url(../fonts/RobotoDraftMedium.woff) format('woff');
12 | }
13 | @font-face {
14 | font-family: 'RobotoDraft';
15 | font-style: normal;
16 | font-weight: 700;
17 | src: local('RobotoDraft Bold'), local('RobotoDraft-Bold'), local('Roboto-Bold'), url(../fonts/RobotoDraftBold.woff2) format('woff2'), url(../fonts/RobotoDraftBold.woff) format('woff');
18 | }
19 | @font-face {
20 | font-family: 'RobotoDraft';
21 | font-style: italic;
22 | font-weight: 400;
23 | src: local('RobotoDraft Italic'), local('RobotoDraft-Italic'), local('Roboto-Italic'), url(../fonts/RobotoDraftItalic.woff2) format('woff2'), url(../fonts/RobotoDraftItalic.woff) format('woff');
24 | }
25 | /*# sourceMappingURL=roboto.css.map */
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/LICENSE.md:
--------------------------------------------------------------------------------
1 | Bootstrap Material Design theme
2 | Copyright (C) 2014+ Federico Zivolo
3 |
4 | This program is free software: you can redistribute it and/or modify
5 | it under the terms you can find below.
6 |
7 | You may edit, improve and redistribute this software always under the
8 | terms of this license.
9 |
10 | You can use this software for free only for no-profit projects.
11 | If you'd like to use this software in a commercial project you may
12 | contact the author (Federico Zivolo) of the software and ask for his
13 | permission and fulfill his conditions.
14 |
15 | You can edit and/or redistribute this software only providing a copy
16 | of this license with it.
17 |
18 | You cannot sell this software, any change to the software must be
19 | published under the same license of the original software.
20 |
21 | This software may be sold if used inside a software which uses it as
22 | dependency, in any case, this license must be included in the
23 | software. This always after have fulfilled author's conditions.
24 |
25 | This program is distributed in the hope that it will be useful,
26 | but WITHOUT ANY WARRANTY; without even the implied warranty of
27 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
28 |
29 | This license could be edited in any moment without alert.
30 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/jumbotron.less:
--------------------------------------------------------------------------------
1 | //
2 | // Jumbotron
3 | // --------------------------------------------------
4 |
5 |
6 | .jumbotron {
7 | padding-top: @jumbotron-padding;
8 | padding-bottom: @jumbotron-padding;
9 | margin-bottom: @jumbotron-padding;
10 | color: @jumbotron-color;
11 | background-color: @jumbotron-bg;
12 |
13 | h1,
14 | .h1 {
15 | color: @jumbotron-heading-color;
16 | }
17 |
18 | p {
19 | margin-bottom: (@jumbotron-padding / 2);
20 | font-size: @jumbotron-font-size;
21 | font-weight: 200;
22 | }
23 |
24 | > hr {
25 | border-top-color: darken(@jumbotron-bg, 10%);
26 | }
27 |
28 | .container &,
29 | .container-fluid & {
30 | border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container
31 | }
32 |
33 | .container {
34 | max-width: 100%;
35 | }
36 |
37 | @media screen and (min-width: @screen-sm-min) {
38 | padding-top: (@jumbotron-padding * 1.6);
39 | padding-bottom: (@jumbotron-padding * 1.6);
40 |
41 | .container &,
42 | .container-fluid & {
43 | padding-left: (@jumbotron-padding * 2);
44 | padding-right: (@jumbotron-padding * 2);
45 | }
46 |
47 | h1,
48 | .h1 {
49 | font-size: @jumbotron-heading-font-size;
50 | }
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/mixins.less:
--------------------------------------------------------------------------------
1 | // Mixins
2 | // --------------------------------------------------
3 |
4 | // Utilities
5 | @import "mixins/hide-text.less";
6 | @import "mixins/opacity.less";
7 | @import "mixins/image.less";
8 | @import "mixins/labels.less";
9 | @import "mixins/reset-filter.less";
10 | @import "mixins/resize.less";
11 | @import "mixins/responsive-visibility.less";
12 | @import "mixins/size.less";
13 | @import "mixins/tab-focus.less";
14 | @import "mixins/reset-text.less";
15 | @import "mixins/text-emphasis.less";
16 | @import "mixins/text-overflow.less";
17 | @import "mixins/vendor-prefixes.less";
18 |
19 | // Components
20 | @import "mixins/alerts.less";
21 | @import "mixins/buttons.less";
22 | @import "mixins/panels.less";
23 | @import "mixins/pagination.less";
24 | @import "mixins/list-group.less";
25 | @import "mixins/nav-divider.less";
26 | @import "mixins/forms.less";
27 | @import "mixins/progress-bar.less";
28 | @import "mixins/table-row.less";
29 |
30 | // Skins
31 | @import "mixins/background-variant.less";
32 | @import "mixins/border-radius.less";
33 | @import "mixins/gradients.less";
34 |
35 | // Layout
36 | @import "mixins/clearfix.less";
37 | @import "mixins/center-block.less";
38 | @import "mixins/nav-vertical-align.less";
39 | @import "mixins/grid-framework.less";
40 | @import "mixins/grid.less";
41 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/meteor/package-noicons.js:
--------------------------------------------------------------------------------
1 | // package metadata file for Meteor.js
2 | 'use strict';
3 |
4 | var packageName = 'fezvrasta:bootstrap-material-design-noicons'; // https://atmospherejs.com/fezvrasta/bootstrap-material-design-noicons
5 | var where = 'client'; // where to install: 'client' or 'server'. For both, pass nothing.
6 |
7 | var packageJson = JSON.parse(Npm.require("fs").readFileSync('package.json'));
8 |
9 | Package.describe({
10 | name: packageName,
11 | summary: 'FezVrasta\'s Bootstrap theme implementing Google\'s Material Design (Paper Elements). No icons.',
12 | version: packageJson.version,
13 | git: 'https://github.com/fezvrasta/bootstrap-material-design.git'
14 | });
15 |
16 | Package.onUse(function (api) {
17 | api.versionsFrom(['METEOR@0.9.0', 'METEOR@1.0']);
18 | api.use('twbs:bootstrap-noglyph@3.3.1');
19 | api.use('jquery');
20 | api.addFiles([
21 | 'dist/css/material.css', // includes @font-face rules to load the Roboto font
22 | 'dist/css/ripples.css',
23 | 'dist/js/material.js',
24 | 'dist/js/ripples.js',
25 | 'meteor/init.js'
26 | ], where);
27 | });
28 |
29 | Package.onTest(function (api) {
30 | api.use(packageName, where);
31 | api.use(['tinytest', 'http'], where);
32 |
33 | api.addFiles('meteor/test-noicons.js', where);
34 | });
35 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/bower.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "bootstrap-material-design",
3 | "version": "0.3.0",
4 | "homepage": "http://fezvrasta.github.io/bootstrap-material-design",
5 | "authors": [
6 | "Federico Zivolo "
7 | ],
8 | "description": "Material Design theme for Bootstrap 3",
9 | "main": [
10 | "dist/css/material.css",
11 | "dist/js/material.js",
12 | "dist/css/ripples.css",
13 | "dist/js/ripples.js",
14 | "dist/fonts/Material-Design-Icons.eot",
15 | "dist/fonts/Material-Design-Icons.svg",
16 | "dist/fonts/Material-Design-Icons.ttf",
17 | "dist/fonts/Material-Design-Icons.woff"
18 | ],
19 | "ignore": [
20 | "test",
21 | "screenshots",
22 | "demo",
23 | ".editorconfig",
24 | ".gitignore",
25 | ".jshintrc",
26 | ".travis.yml",
27 | "CONTRIBUTING.md",
28 | "Gruntfile.json",
29 | "index.html",
30 | "**/.*",
31 | "node_modules",
32 | "bower_components",
33 | "test",
34 | "tests"
35 | ],
36 | "keywords": [
37 | "material",
38 | "design",
39 | "bootstrap",
40 | "theme",
41 | "google",
42 | "android"
43 | ],
44 | "license": "https://github.com/FezVrasta/bootstrap-material-design/blob/master/LICENSE.md",
45 | "dependencies": {
46 | "jquery": "~2.1.1"
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/www/app/components/appinfo/price.jsx:
--------------------------------------------------------------------------------
1 | var React = require('react');
2 | var mixins = require('baobab-react/mixins');
3 | var PureRenderMixin = require('react-addons-pure-render-mixin');
4 | var i18n = require('i18next-client');
5 |
6 | var utils = require('../../utils');
7 |
8 | module.exports = React.createClass({
9 | displayName: 'Price',
10 | mixins: [
11 | PureRenderMixin,
12 | mixins.branch,
13 | ],
14 | cursors: {
15 | lng: ['lng'],
16 | },
17 | props: {
18 | prices: React.PropTypes.object.isRequired,
19 | currency: React.PropTypes.string,
20 | },
21 |
22 | render: function() {
23 | var component = '';
24 | var price = 0;
25 | if (utils.isFree(this.props.prices)) {
26 | component = {i18n.t('Free')};
27 | }
28 | else if (this.props.currency) {
29 | price = utils.price(this.props.prices, this.props.currency);
30 | component = {price};
31 | }
32 | else {
33 | component = [];
34 | for (var currency in this.props.prices) {
35 | price = utils.price(this.props.prices, currency);
36 | component.push({price});
37 | }
38 | }
39 |
40 | return {component};
41 | }
42 | });
43 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap-material-design/less/_dialogs.less:
--------------------------------------------------------------------------------
1 | //
2 | // Modals
3 | // Material Design element Dialogs
4 | // --------------------------------------------------
5 | .modal-content {
6 | .shadow-z-5();
7 | border-radius: 2px;
8 | border: none;
9 | // Modal header
10 | // Top section of the modal w/ title and dismiss
11 | .modal-header {
12 | border-bottom: none;
13 | padding-top: 24px;
14 | padding-right: 24px;
15 | padding-bottom: 0px;
16 | padding-left: 24px;
17 | }
18 | // Modal body
19 | // Where all modal content resides (sibling of .modal-header and .modal-footer)
20 | .modal-body {
21 | padding-top: 0px;
22 | padding-right: 24px;
23 | padding-bottom: 16px;
24 | padding-left: 24px;
25 | }
26 | // Footer (for actions)
27 | .modal-footer {
28 | border-top: none;
29 | padding: 7px;
30 | button {
31 | margin: 0;
32 | padding-left: 16px;
33 | padding-right: 16px;
34 | width: auto;
35 | &.pull-left {
36 | padding-left: 5px;
37 | padding-right: 5px;
38 | position: relative;
39 | left: -5px;
40 | }
41 | }
42 | button+button {
43 | margin-bottom: 16px;
44 | }
45 | }
46 | .modal-body + .modal-footer {
47 | padding-top: 0;
48 | }
49 | }
50 | .modal-backdrop {
51 | background: rgba(0,0,0,0.3);
52 | }
53 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/labels.less:
--------------------------------------------------------------------------------
1 | //
2 | // Labels
3 | // --------------------------------------------------
4 |
5 | .label {
6 | display: inline;
7 | padding: .2em .6em .3em;
8 | font-size: 75%;
9 | font-weight: bold;
10 | line-height: 1;
11 | color: @label-color;
12 | text-align: center;
13 | white-space: nowrap;
14 | vertical-align: baseline;
15 | border-radius: .25em;
16 |
17 | // Add hover effects, but only for links
18 | a& {
19 | &:hover,
20 | &:focus {
21 | color: @label-link-hover-color;
22 | text-decoration: none;
23 | cursor: pointer;
24 | }
25 | }
26 |
27 | // Empty labels collapse automatically (not available in IE8)
28 | &:empty {
29 | display: none;
30 | }
31 |
32 | // Quick fix for labels in buttons
33 | .btn & {
34 | position: relative;
35 | top: -1px;
36 | }
37 | }
38 |
39 | // Colors
40 | // Contextual variations (linked labels get darker on :hover)
41 |
42 | .label-default {
43 | .label-variant(@label-default-bg);
44 | }
45 |
46 | .label-primary {
47 | .label-variant(@label-primary-bg);
48 | }
49 |
50 | .label-success {
51 | .label-variant(@label-success-bg);
52 | }
53 |
54 | .label-info {
55 | .label-variant(@label-info-bg);
56 | }
57 |
58 | .label-warning {
59 | .label-variant(@label-warning-bg);
60 | }
61 |
62 | .label-danger {
63 | .label-variant(@label-danger-bg);
64 | }
65 |
--------------------------------------------------------------------------------
/www/bower_components/swipebox/src/img/icons.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/www/app/components/appinfo/hearts.jsx:
--------------------------------------------------------------------------------
1 | var React = require('react');
2 | var mixins = require('baobab-react/mixins');
3 | var PureRenderMixin = require('react-addons-pure-render-mixin');
4 | var i18n = require('i18next-client');
5 |
6 | var If = require('../helpers/if');
7 |
8 | module.exports = React.createClass({
9 | displayName: 'Hearts',
10 | mixins: [
11 | mixins.branch,
12 | PureRenderMixin,
13 | ],
14 | cursors: {
15 | lng: ['lng'],
16 | },
17 | props: {
18 | hearts: React.PropTypes.number,
19 | popularity: React.PropTypes.number,
20 | pop: React.PropTypes.bool,
21 | },
22 |
23 | render: function() {
24 | return (
25 |
26 |
27 | 0) ? 'heart-rating text-danger' : 'heart-rating'} title={i18n.t('Monthly Popularity')}>
28 | 0) ? 'fa fa-fire' : 'fa fa-fire-extinguisher'}> {this.props.popularity ? this.props.popularity : 0}
29 |
30 |
31 |
32 |
33 |
34 | 0) ? 'fa fa-heart' : 'fa fa-heart-o'}> {this.props.hearts ? this.props.hearts : 0}
35 |
36 |
37 |
38 | );
39 | }
40 | });
41 |
--------------------------------------------------------------------------------
/www/bower_components/jquery/src/core/access.js:
--------------------------------------------------------------------------------
1 | define([
2 | "../core"
3 | ], function( jQuery ) {
4 |
5 | // Multifunctional method to get and set values of a collection
6 | // The value/s can optionally be executed if it's a function
7 | var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
8 | var i = 0,
9 | len = elems.length,
10 | bulk = key == null;
11 |
12 | // Sets many values
13 | if ( jQuery.type( key ) === "object" ) {
14 | chainable = true;
15 | for ( i in key ) {
16 | jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
17 | }
18 |
19 | // Sets one value
20 | } else if ( value !== undefined ) {
21 | chainable = true;
22 |
23 | if ( !jQuery.isFunction( value ) ) {
24 | raw = true;
25 | }
26 |
27 | if ( bulk ) {
28 | // Bulk operations run against the entire set
29 | if ( raw ) {
30 | fn.call( elems, value );
31 | fn = null;
32 |
33 | // ...except when executing function values
34 | } else {
35 | bulk = fn;
36 | fn = function( elem, key, value ) {
37 | return bulk.call( jQuery( elem ), value );
38 | };
39 | }
40 | }
41 |
42 | if ( fn ) {
43 | for ( ; i < len; i++ ) {
44 | fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
45 | }
46 | }
47 | }
48 |
49 | return chainable ?
50 | elems :
51 |
52 | // Gets
53 | bulk ?
54 | fn.call( elems ) :
55 | len ? fn( elems[0], key ) : emptyGet;
56 | };
57 |
58 | return access;
59 |
60 | });
61 |
--------------------------------------------------------------------------------
/src/spider/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const config = require('../config');
4 | const logger = require('../logger');
5 | const clicks = require('./clicks');
6 | const snaps = require('./snaps');
7 | const schedule = require('node-schedule');
8 | const express = require('express');
9 |
10 | function setupSchedule() {
11 | logger.debug('scheduling spider');
12 |
13 | let spider_rule_clicks = new schedule.RecurrenceRule();
14 | spider_rule_clicks.dayOfWeek = new schedule.Range(0, 6, 1);
15 | spider_rule_clicks.hour = new schedule.Range(1, 23, 2);
16 | spider_rule_clicks.minute = 0;
17 |
18 | schedule.scheduleJob(spider_rule_clicks, function() {
19 | clicks.fetchClicks();
20 | });
21 |
22 | let spider_rule_snaps = new schedule.RecurrenceRule();
23 | spider_rule_snaps.dayOfWeek = new schedule.Range(0, 6, 1);
24 | spider_rule_snaps.hour = new schedule.Range(0, 23, 6);
25 | spider_rule_snaps.minute = 0;
26 |
27 | schedule.scheduleJob(spider_rule_snaps, function() {
28 | snaps.fetchSnaps();
29 | });
30 | }
31 |
32 | function server() {
33 | let app = express();
34 |
35 | app.get('/', function(req, res) {
36 | res.send({
37 | success: true,
38 | data: {
39 | alive: true
40 | },
41 | message: null
42 | });
43 | });
44 |
45 | app.listen(config.server.port, config.server.ip);
46 | }
47 |
48 | exports.setupSchedule = setupSchedule;
49 | exports.server = server;
50 |
--------------------------------------------------------------------------------
/www/app/components/appinfo/stars.jsx:
--------------------------------------------------------------------------------
1 | var React = require('react');
2 | var PureRenderMixin = require('react-addons-pure-render-mixin');
3 |
4 | module.exports = React.createClass({
5 | displayName: 'Stars',
6 | mixins: [
7 | PureRenderMixin
8 | ],
9 | props: {
10 | stars: React.PropTypes.number.isRequired,
11 | },
12 |
13 | render: function() {
14 | var prop_stars = this.props.stars ? this.props.stars : 0;
15 | var title = (Math.round(prop_stars * 100) / 100) + ' / 5';
16 | var stars = Math.round(prop_stars * 2) / 2; //round to nearest 1/2
17 | var full = Math.floor(stars);
18 | var empty = 5 - Math.ceil(stars);
19 | var half = 5 - full - empty;
20 |
21 | var full_icons = [];
22 | var half_icons = [];
23 | var empty_icons = [];
24 |
25 | for (var i = 0; i < full; i++) {
26 | var key_full = 'full' + i;
27 | full_icons.push();
28 | }
29 |
30 | for (var j = 0; j < half; j++) {
31 | var key_half = 'half' + j;
32 | half_icons.push();
33 | }
34 |
35 | for (var k = 0; k < empty; k++) {
36 | var key_empty = 'empty' + k;
37 | empty_icons.push();
38 | }
39 |
40 | return (
41 |
42 | {full_icons}
43 | {half_icons}
44 | {empty_icons}
45 |
46 | );
47 | }
48 | });
49 |
--------------------------------------------------------------------------------
/www/bower_components/bootstrap/less/badges.less:
--------------------------------------------------------------------------------
1 | //
2 | // Badges
3 | // --------------------------------------------------
4 |
5 |
6 | // Base class
7 | .badge {
8 | display: inline-block;
9 | min-width: 10px;
10 | padding: 3px 7px;
11 | font-size: @font-size-small;
12 | font-weight: @badge-font-weight;
13 | color: @badge-color;
14 | line-height: @badge-line-height;
15 | vertical-align: middle;
16 | white-space: nowrap;
17 | text-align: center;
18 | background-color: @badge-bg;
19 | border-radius: @badge-border-radius;
20 |
21 | // Empty badges collapse automatically (not available in IE8)
22 | &:empty {
23 | display: none;
24 | }
25 |
26 | // Quick fix for badges in buttons
27 | .btn & {
28 | position: relative;
29 | top: -1px;
30 | }
31 |
32 | .btn-xs &,
33 | .btn-group-xs > .btn & {
34 | top: 0;
35 | padding: 1px 5px;
36 | }
37 |
38 | // Hover state, but only for links
39 | a& {
40 | &:hover,
41 | &:focus {
42 | color: @badge-link-hover-color;
43 | text-decoration: none;
44 | cursor: pointer;
45 | }
46 | }
47 |
48 | // Account for badges in navs
49 | .list-group-item.active > &,
50 | .nav-pills > .active > a > & {
51 | color: @badge-active-color;
52 | background-color: @badge-active-bg;
53 | }
54 |
55 | .list-group-item > & {
56 | float: right;
57 | }
58 |
59 | .list-group-item > & + & {
60 | margin-right: 5px;
61 | }
62 |
63 | .nav-pills > li > a > & {
64 | margin-left: 3px;
65 | }
66 | }
67 |
--------------------------------------------------------------------------------