ff-stream-web

git clone git://archive.git.mtrnord.blog/MTRNord/ff-stream-web.git
Log | Files | Refs | README | LICENSE

commit 51bc13358a9909734a6504ebf29e64b0c06b332d
Author: Konstantin Tarkus <hello@tarkus.me>
Date:   Sun,  8 Jun 2014 19:20:36 +0400

Initial commit

Diffstat:
A.editorconfig | 19+++++++++++++++++++
A.gitattributes | 6++++++
A.gitignore | 13+++++++++++++
A.jshintrc | 8++++++++
A.travis.yml | 5+++++
ALICENSE.txt | 22++++++++++++++++++++++
AREADME.md | 75+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Abower.json | 17+++++++++++++++++
Aconfig/webpack.config.js | 65+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Adocs/FAQ.md | 5+++++
Agulpfile.js | 179+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apackage.json | 36++++++++++++++++++++++++++++++++++++
Asrc/404.html | 59+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/app.jsx | 44++++++++++++++++++++++++++++++++++++++++++++
Asrc/app.less | 56++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/assets/apple-touch-icon-precomposed.png | 0
Asrc/assets/browserconfig.xml | 12++++++++++++
Asrc/assets/crossdomain.xml | 15+++++++++++++++
Asrc/assets/favicon.ico | 0
Asrc/assets/humans.txt | 15+++++++++++++++
Asrc/assets/robots.txt | 5+++++
Asrc/assets/tile-wide.png | 0
Asrc/assets/tile.png | 0
Asrc/images/logo-small.png | 0
Asrc/images/logo-small@2x.png | 0
Asrc/index.html | 31+++++++++++++++++++++++++++++++
Asrc/styles/base.less | 23+++++++++++++++++++++++
Asrc/styles/navbar.less | 11+++++++++++
Asrc/styles/variables.less | 3+++
29 files changed, 724 insertions(+), 0 deletions(-)

diff --git a/.editorconfig b/.editorconfig @@ -0,0 +1,19 @@ +# EditorConfig helps developers define and maintain consistent coding styles between different editors and IDEs +# http://editorconfig.org + +root = true + +[*] +indent_style = space +indent_size = 4 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[{.travis.yml,bower.json,package.json,.jshintrc}] +indent_style = space +indent_size = 2 + +[*.md] +trim_trailing_whitespace = false diff --git a/.gitattributes b/.gitattributes @@ -0,0 +1,5 @@ +# These attributes affect how the contents stored in the repository are copied +# to the working tree files when commands such as git checkout and git merge run. +# http://git-scm.com/docs/gitattributes + +* text=auto +\ No newline at end of file diff --git a/.gitignore b/.gitignore @@ -0,0 +1,13 @@ +# Git uses this file to determine which files and directories to ignore +# https://help.github.com/articles/ignoring-files + +build +bower_components +node_modules +npm-debug.log + +## WebStrom +.idea/ +*.ipr +*.iws +*.iml diff --git a/.jshintrc b/.jshintrc @@ -0,0 +1,7 @@ +{ + "globalstrict": true, + "globals": { + "require": false, + "__dirname": false + } +} +\ No newline at end of file diff --git a/.travis.yml b/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - '0.10' +before_script: + - 'npm install -g gulp' diff --git a/LICENSE.txt b/LICENSE.txt @@ -0,0 +1,21 @@ + The MIT License + +Copyright (c) 2014 Konstantin Tarkus (@koistya), KriaSoft LLC. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +\ No newline at end of file diff --git a/README.md b/README.md @@ -0,0 +1,75 @@ +# KriaSoft React Seed + +> **Web Application Front-end Starter Kit** built with [Facebook React](https://github.com/facebook/react). + +**Source**: [https://github.com/kriasoft/React-Seed](https://github.com/kriasoft/React-Seed) + +#### Runtime Components: + + * [React](https://facebook.github.io/react/) - A JavaScript library for building user interfaces, developed by Facebook + * [Bootstrap](http://getbootstrap.com/) - CSS framework for developing responsive, mobile first interfaces + * [jQuery](http://jquery.com/) - a JavaScript library designed to simplify the client-side scripting of HTML + +#### Development Tools: + + * [Webpack](http://webpack.github.io/) - Compiles front-end source code into modules / bundles + * [Gulp](http://gulpjs.com/) - JavaScript streaming build system and task automation + * [Karma](http://karma-runner.github.io/) - JavaScript unit-test runner (coming) + * [Protractor](https://github.com/angular/protractor) - End-to-end test framework (coming) + +### Directory Layout + +``` +. +├── /bower_components/ # 3rd party client-side libraries +├── /build/ # The folder for compiled output +├── /docs/ # Documentation files +├── /node_modules/ # Node.js-based dev tools and utilities +├── /src/ # The source code of the application +│ ├── /assets/ +│ ├── /data/ +│ ├── /common/ +│ ├── /images/ +│ ├── /styles/ +│ ├── /services/ +│ ├── /404.html +│ ├── /app.jsx +│ ├── /app.less +│ └── /index.html +├── /test/ # Unit, integration and load tests +│ ├── /e2e/ # End-to-end tests +│ └── /unit/ # Unit tests +└── ... +``` + +### Getting Started + +To get started you can simply clone the repo and install the dependencies: + +``` +> git clone https://github.com/kriasoft/React-Seed MyApp && cd MyApp +> npm install -g gulp # Install Gulp task runner globally +> npm install # Install Node.js components listed in ./package.json +> bower install # Install Bower components listed in ./bower.json +``` + +To compile the application and start a dev server just run: + +``` +> gulp +``` + +Now browse to the app at [http://localhost:8080/](http://localhost:8080/) + +### Authors + + * [Konstantin Tarkus](https://angel.co/koistya) ([@koistya](https://twitter.com/koistya)), KriaSoft LLC + +### Support + +Need help or willing to contribute? Contact me via email: [hello@tarkus.me](mailto:hello@tarkus.me) or Skype: koistya + +### Copyright + + * Source code is licensed under the MIT License. See [LICENSE.txt](./LICENSE.txt) file in the project root. + * Documentation to the project is licensed under the [CC BY 4.0](http://creativecommons.org/licenses/by/4.0/) license. diff --git a/bower.json b/bower.json @@ -0,0 +1,17 @@ +{ + "name": "react-seed", + "version": "0.0.0", + "homepage": "https://github.com/kriasoft/React-Seed", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test" + ], + "dependencies": { + "jquery": "~2.1.1" + }, + "devDependencies": { + "bootstrap": "~3.1.1" + } +} diff --git a/config/webpack.config.js b/config/webpack.config.js @@ -0,0 +1,64 @@ +// Webpack Configuration +// http://webpack.github.io/docs/configuration.html + +module.exports = function (isDebug) { + return { + output: { + publicPatch: './build/', + path: './build/', + filename: 'app.js', + hideModules: true + }, + + cache: isDebug, + debug: isDebug, + devtool: false, + entry: './src/app.jsx', + qiuet: true, + + stats: { + colors: true, + reasons: isDebug + }, + + plugins: isDebug ? [] : [ + new webpack.optimize.DedupePlugin(), + new webpack.optimize.UglifyJsPlugin(), + new webpack.optimize.OccurenceOrderPlugin(), + new webpack.optimize.AggressiveMergingPlugin() + ], + + module: { + preLoaders: [ + { + test: '\\.js$', + exclude: 'node_modules', + loader: 'jshint' + } + ], + + loaders: [ + { + test: /\.css$/, + loader: 'style!css' + }, + { + test: /\.gif/, + loader: 'url-loader?limit=10000&minetype=image/gif' + }, + { + test: /\.jpg/, + loader: 'url-loader?limit=10000&minetype=image/jpg' + }, + { + test: /\.png/, + loader: 'url-loader?limit=10000&minetype=image/png' + }, + { + test: /\.jsx$/, + loader: 'jsx-loader' + } + ] + } + }; +}; +\ No newline at end of file diff --git a/docs/FAQ.md b/docs/FAQ.md @@ -0,0 +1,4 @@ +FAQ +=== + +... +\ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js @@ -0,0 +1,178 @@ +// For more information on how to configure Gulp.js build system, please visit: +// https://github.com/gulpjs/gulp/blob/master/docs/API.md + +var es = require('event-stream'); +var gulp = require('gulp'); +var changed = require('gulp-changed'); +var embedlr = require('gulp-embedlr'); +var htmlmin = require('gulp-htmlmin'); +var jshint = require('gulp-jshint'); +var less = require('gulp-less'); +var minifyCSS = require('gulp-minify-css'); +var plumber = require('gulp-plumber'); +var uglify = require('gulp-uglify'); +var gutil = require('gulp-util'); +var path = require('path'); +var rimraf = require('rimraf'); +var webpack = require('webpack'); + +// Settings +var isDebug = !require('minimist')(process.argv.slice(2)).production; +var compiler = webpack(require('./config/webpack.config.js')(isDebug)); + +// A cache for Gulp tasks. It is used as a workaround for Gulp's dependency resolution +// limitations. It won't be needed anymore starting with Gulp 4. +var task = {}; + +// Clean up +gulp.task('clean', function (cb) { + rimraf('./build', cb); +}); + +// Copy vendor files +// ----------------------------------------------------------------------------- +gulp.task('vendor', task.vendor = function () { + var pkg = require('./bower.json').dependencies; + return es.concat( + gulp.src('./bower_components/jquery/dist/**') + .pipe(gulp.dest('./build/vendor/jquery-' + pkg.jquery.substring(1))), + gulp.src('./bower_components/bootstrap/dist/fonts/**') + .pipe(gulp.dest('./build/fonts')) + ); +}); +gulp.task('vendor:clean', ['clean'], task.vendor); + +// Copy static files / assets +// ----------------------------------------------------------------------------- +gulp.task('assets', task.assets = function () { + return es.concat( + gulp.src('./src/assets/**') + .pipe(gulp.dest('./build')), + gulp.src('./src/images/**') + .pipe(gulp.dest('./build/images/')), + gulp.src('./src/*.html') + .pipe(isDebug ? gutil.noop() : htmlmin({ + removeComments: true, + collapseWhitespace: true, + minifyJS: true + })) + .pipe(isDebug ? embedlr() : gutil.noop()) + .pipe(gulp.dest('./build')) + ); +}); +gulp.task('assets:clean', ['clean'], task.assets); + +// CSS stylesheets +// ----------------------------------------------------------------------------- +gulp.task('styles', task.styles = function () { + return gulp.src('./src/app.less') + .pipe(plumber()) + .pipe(less({sourceMap: isDebug, sourceMapBasepath: __dirname})) + .on('error', gutil.log) + .pipe(isDebug ? gutil.noop() : minifyCSS()) + .pipe(gulp.dest('./build')); +}); +gulp.task('styles:clean', ['clean'], task.styles); + +// Create JavaScript bundle +// ----------------------------------------------------------------------------- +gulp.task('bundle', ['clean'], function (cb) { + compiler.run(function (err, stats) { + if (err) { + throw new gutil.PluginError('webpack', err); + } + gutil.log('[webpack]', stats.toString({colors: true})); + cb(); + }); +}); +gulp.task('bundle:watch', ['clean'], function (cb) { + compiler.watch(200, function (err, stats) { + if (err) { + throw new gutil.PluginError('webpack', err); + } + gutil.log('[webpack]', stats.toString({colors: true})); + if (cb) { + cb(); + cb = null; + } + }); +}); + +// Build the app from source code +// ----------------------------------------------------------------------------- +gulp.task('build', ['vendor:clean', 'assets:clean', 'styles:clean', 'bundle']); +gulp.task('build:watch', ['vendor:clean', 'assets:clean', 'styles:clean', 'bundle:watch']); + +// Launch a lightweight HTTP Server +// ----------------------------------------------------------------------------- +gulp.task('run', ['build:watch'], function (next) { + var url = require('url'); + var server = require('ecstatic')({root: './', cache: 'no-cache', showDir: true}); + var port = 8080; + + require('http').createServer() + .on('request', function (req, res) { + // For non-existent files output the contents of /index.html page in order to make HTML5 routing work + var urlPath = url.parse(req.url).pathname; + if (urlPath === '/') { + req.url = '/build/index.html'; + } else if (['src', 'bower_components'].indexOf(urlPath.split('/')[1]) === -1) { + if (urlPath.length > 3 && + ['src', 'bower_components'].indexOf(urlPath.split('/')[1]) === -1 && + ['css', 'html', 'ico', 'js', 'png', 'txt', 'xml'].indexOf(urlPath.split('.').pop()) == -1 && + ['fonts', 'images', 'vendor', 'views'].indexOf(urlPath.split('/')[1]) == -1) { + req.url = '/build/index.html'; + } else { + req.url = '/build' + req.url; + } + } + server(req, res); + }) + .listen(port, function () { + gutil.log('Server is listening on ' + gutil.colors.magenta('http://localhost:' + port + '/')); + next(); + }); +}); + +// Watch for changes in source files +// ----------------------------------------------------------------------------- +gulp.task('watch', ['run'], function () { + var path = require('path'); + var lr = require('gulp-livereload'); + + // Watch for changes in source files + gulp.watch('./src/assets/**', ['assets']); + gulp.watch('./src/**/*.less', ['styles']); + + // Watch for changes in 'compiled' files + gulp.watch('./build/**', function (file) { + var relPath = 'build\\' + path.relative('./build', file.path); + gutil.log('File changed: ' + gutil.colors.magenta(relPath)); + lr.changed(file.path); + }); + + lr.listen(); +}); + +// Deploy to GitHub Pages. See: https://pages.github.com +// ----------------------------------------------------------------------------- +gulp.task('deploy', ['build'], function (cb) { + var url = 'https://github.com/watchlist/watchlist.github.io.git'; + var exec = require('child_process').exec; + var cwd = path.join(__dirname, './build'); + var cmd = 'git init && git remote add origin ' + url + ' && ' + + 'git add . && git commit -m Release && ' + + 'git push -f origin master'; + + exec(cmd, { 'cwd': cwd }, function (err, stdout, stderr) { + if (err !== null) { + cb(err); + } else { + gutil.log(stdout, stderr); + cb(); + } + }); +}); + +// The default task +gulp.task('default', ['watch']); +\ No newline at end of file diff --git a/package.json b/package.json @@ -0,0 +1,36 @@ +{ + "name": "react-seed", + "private": true, + "version": "0.0.0", + "description": "Facebook React Starter Kit", + "repository": "https://github.com/kriasoft/react-seed", + "dependencies": { + "react": "^0.10.0" + }, + "devDependencies": { + "ecstatic": "^0.5.3", + "event-stream": "^3.1.5", + "gulp": "^3.7.0", + "gulp-changed": "^0.4.0", + "gulp-embedlr": "^0.5.2", + "gulp-htmlmin": "^0.1.2", + "gulp-jshint": "^1.6.2", + "gulp-less": "^1.2.3", + "gulp-livereload": "^2.0.0", + "gulp-minify-css": "^0.3.4", + "gulp-plumber": "^0.6.2", + "gulp-uglify": "^0.3.0", + "gulp-util": "^2.2.16", + "jshint-stylish": "^0.2.0", + "jsx-loader": "^0.10.2", + "karma": "^0.12.16", + "minimist": "^0.1.0", + "protractor": "^0.24.0", + "rimraf": "^2.2.8", + "url-loader": "^0.5.5", + "webpack": "^1.3.0-beta5" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + } +} diff --git a/src/404.html b/src/404.html @@ -0,0 +1,59 @@ +<!doctype html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <title>Page Not Found</title> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <style> + + * { + line-height: 1.5; + margin: 0; + } + + html { + color: #888; + font-family: sans-serif; + text-align: center; + } + + body { + left: 50%; + margin: -43px 0 0 -150px; + position: absolute; + top: 50%; + width: 300px; + } + + h1 { + color: #555; + font-size: 2em; + font-weight: 400; + } + + p { + line-height: 1.2; + } + + @media only screen and (max-width: 270px) { + + body { + margin: 10px auto; + position: static; + width: 95%; + } + + h1 { + font-size: 1.5em; + } + + } + + </style> +</head> +<body> + <h1>Page Not Found</h1> + <p>Sorry, but the page you were trying to view does not exist.</p> +</body> +</html> +<!-- IE needs 512+ bytes: http://blogs.msdn.com/b/ieinternals/archive/2010/08/19/http-error-pages-in-internet-explorer.aspx --> diff --git a/src/app.jsx b/src/app.jsx @@ -0,0 +1,43 @@ +/** + * @jsx React.DOM + */ + +var React = require('react'); + +var Navbar = React.createClass({ + render: function () { + return ( + <div className="navbar navbar-inverse navbar-fixed-top"> + <div className="container"> + <a className="navbar-brand" href="/"><img src="/images/logo-small.png" width="38" height="38" alt="" /> React Seed</a> + </div> + </div> + ); + } +}); + +var Page = React.createClass({ + render: function () { + return ( + <div className="container"> + <h2>Facebook React Starter Kit</h2> + <p>This is a single-page application (SPA) project template based on Facebook React.</p> + <h4>Runtime Components:</h4> + <ul> + <li><a href="https://facebook.github.io/react/">React</a> - A JavaScript library for building user interfaces, developed by Facebook</li> + <li><a href="http://getbootstrap.com/">Bootstrap</a> - CSS framework for developing responsive, mobile first interfaces</li> + <li><a href="http://jquery.com/">jQuery</a> - a JavaScript library designed to simplify the client-side scripting of HTML</li> + </ul> + <h4>Development Tools:</h4> + <ul> + <li><a href="http://webpack.github.io/">Webpack</a> - Compiles front-end source code into modules / bundles</li> + <li><a href="http://gulpjs.com">Gulp</a> - JavaScript streaming build system and task automation</li> + </ul> + <h3>Fork me on GitHub</h3> + <p><a href="https://github.com/kriasoft/react-seed">https://github.com/kriasoft/react-seed</a></p> + </div> + ); + } +}); + +React.renderComponent(<div><Navbar /><Page /></div>, document.body); +\ No newline at end of file diff --git a/src/app.less b/src/app.less @@ -0,0 +1,56 @@ +/* ========================================================================== + Bootstrap CSS + Custom Styles and overrides + ========================================================================== */ + +// Core variables and mixins +@import "..\bower_components\bootstrap\less\variables.less"; +@import "styles\variables.less"; +@import "..\bower_components\bootstrap\less\mixins.less"; + +// Reset +@import "..\bower_components\bootstrap\less\normalize.less"; +@import "..\bower_components\bootstrap\less\print.less"; + +// Core CSS +@import "..\bower_components\bootstrap\less\scaffolding.less"; +@import "..\bower_components\bootstrap\less\type.less"; +@import "..\bower_components\bootstrap\less\code.less"; +@import "..\bower_components\bootstrap\less\grid.less"; +@import "..\bower_components\bootstrap\less\tables.less"; +@import "..\bower_components\bootstrap\less\forms.less"; +@import "..\bower_components\bootstrap\less\buttons.less"; +@import "styles\base.less"; + +// Components +@import "..\bower_components\bootstrap\less\component-animations.less"; +@import "..\bower_components\bootstrap\less\glyphicons.less"; +@import "..\bower_components\bootstrap\less\dropdowns.less"; +@import "..\bower_components\bootstrap\less\button-groups.less"; +@import "..\bower_components\bootstrap\less\input-groups.less"; +@import "..\bower_components\bootstrap\less\navs.less"; +@import "..\bower_components\bootstrap\less\navbar.less"; +@import "styles\navbar.less"; +@import "..\bower_components\bootstrap\less\breadcrumbs.less"; +@import "..\bower_components\bootstrap\less\pagination.less"; +@import "..\bower_components\bootstrap\less\pager.less"; +@import "..\bower_components\bootstrap\less\labels.less"; +@import "..\bower_components\bootstrap\less\badges.less"; +@import "..\bower_components\bootstrap\less\jumbotron.less"; +@import "..\bower_components\bootstrap\less\thumbnails.less"; +@import "..\bower_components\bootstrap\less\alerts.less"; +@import "..\bower_components\bootstrap\less\progress-bars.less"; +@import "..\bower_components\bootstrap\less\media.less"; +@import "..\bower_components\bootstrap\less\list-group.less"; +@import "..\bower_components\bootstrap\less\panels.less"; +@import "..\bower_components\bootstrap\less\wells.less"; +@import "..\bower_components\bootstrap\less\close.less"; + +// Components w/ JavaScript +@import "..\bower_components\bootstrap\less\modals.less"; +@import "..\bower_components\bootstrap\less\tooltip.less"; +@import "..\bower_components\bootstrap\less\popovers.less"; +@import "..\bower_components\bootstrap\less\carousel.less"; + +// Utility classes +@import "..\bower_components\bootstrap\less\utilities.less"; +@import "..\bower_components\bootstrap\less\responsive-utilities.less"; diff --git a/src/assets/apple-touch-icon-precomposed.png b/src/assets/apple-touch-icon-precomposed.png Binary files differ. diff --git a/src/assets/browserconfig.xml b/src/assets/browserconfig.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Please read: http://msdn.microsoft.com/en-us/library/ie/dn455106.aspx --> +<browserconfig> + <msapplication> + <tile> + <square70x70logo src="tile.png"/> + <square150x150logo src="tile.png"/> + <wide310x150logo src="tile-wide.png"/> + <square310x310logo src="tile.png"/> + </tile> + </msapplication> +</browserconfig> diff --git a/src/assets/crossdomain.xml b/src/assets/crossdomain.xml @@ -0,0 +1,15 @@ +<?xml version="1.0"?> +<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> +<cross-domain-policy> + <!-- Read this: www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html --> + + <!-- Most restrictive policy: --> + <site-control permitted-cross-domain-policies="none"/> + + <!-- Least restrictive policy: --> + <!-- + <site-control permitted-cross-domain-policies="all"/> + <allow-access-from domain="*" to-ports="*" secure="false"/> + <allow-http-request-headers-from domain="*" headers="*" secure="false"/> + --> +</cross-domain-policy> diff --git a/src/assets/favicon.ico b/src/assets/favicon.ico Binary files differ. diff --git a/src/assets/humans.txt b/src/assets/humans.txt @@ -0,0 +1,15 @@ +# humanstxt.org/ +# The humans responsible & technology colophon + +# TEAM + + <name> -- <role> -- <twitter> + +# THANKS + + <name> + +# TECHNOLOGY COLOPHON + + HTML5, CSS3, JavaScript + React, jQuery, Bootstrap diff --git a/src/assets/robots.txt b/src/assets/robots.txt @@ -0,0 +1,5 @@ +# www.robotstxt.org/ + +# Allow crawling of all content +User-agent: * +Disallow: diff --git a/src/assets/tile-wide.png b/src/assets/tile-wide.png Binary files differ. diff --git a/src/assets/tile.png b/src/assets/tile.png Binary files differ. diff --git a/src/images/logo-small.png b/src/images/logo-small.png Binary files differ. diff --git a/src/images/logo-small@2x.png b/src/images/logo-small@2x.png Binary files differ. diff --git a/src/index.html b/src/index.html @@ -0,0 +1,31 @@ +<!doctype html> +<html class="no-js" lang=""> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title></title> + <meta name="description" content=""> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <link rel="stylesheet" href="app.css"> + </head> + <body> + <!--[if lt IE 8]> + <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p> + <![endif]--> + + <!-- Add your site or application content here --> + <p>Hello world! This is HTML5 Boilerplate.</p> + + <script src="app.js"></script> + + <!-- Google Analytics: change UA-XXXXX-X to be your site's ID. --> + <script> + (function(b,o,i,l,e,r){b.GoogleAnalyticsObject=l;b[l]||(b[l]= + function(){(b[l].q=b[l].q||[]).push(arguments)});b[l].l=+new Date; + e=o.createElement(i);r=o.getElementsByTagName(i)[0]; + e.src='//www.google-analytics.com/analytics.js'; + r.parentNode.insertBefore(e,r)}(window,document,'script','ga')); + ga('create','UA-XXXXX-X');ga('send','pageview'); + </script> + </body> +</html> diff --git a/src/styles/base.less b/src/styles/base.less @@ -0,0 +1,22 @@ +/* ========================================================================== + Base styles + ========================================================================== */ + +html { + padding-top: 48px; +} + +html, body { + background-color: #f9f9f9; +} + +/* ========================================================================== + Browse Happy prompt + ========================================================================== */ + +.browsehappy { + margin: 0.2em 0; + background: #ccc; + color: #000; + padding: 0.2em 0; +} +\ No newline at end of file diff --git a/src/styles/navbar.less b/src/styles/navbar.less @@ -0,0 +1,10 @@ +/* ========================================================================== + Navigation Bar + ========================================================================== */ + +.navbar-brand { + padding-top: 8px; + padding-bottom: 8px; + color: #00d8ff !important; + font-size: 24px; +} +\ No newline at end of file diff --git a/src/styles/variables.less b/src/styles/variables.less @@ -0,0 +1,3 @@ +/* ========================================================================== + Variables + ========================================================================== */