diff --git a/.gitignore b/.gitignore
index 613ecd0..2462588 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,7 @@
node_modules
test/workspace
+static/css/**/*.css
+static/fonts
static/js/libs
static/js/templates
projects/**/workspace
diff --git a/app.js b/app.js
index 628cdac..186d73e 100644
--- a/app.js
+++ b/app.js
@@ -8,7 +8,7 @@ var staticServer = new nodeStatic.Server('./static');
var server = http.createServer(function(req, res, next) {
// serve index for all app pages
if (req.url.indexOf('/data.io.js') === -1) {
- if (req.url.indexOf('/js') === -1) {
+ if (!req.url.match(/(js|css|fonts)/)) {
// Compile a function
var index = jade.compileFile(__dirname + '/views/index.jade');
res.write(index());
diff --git a/bower.json b/bower.json
index 1094116..77e51c5 100644
--- a/bower.json
+++ b/bower.json
@@ -10,7 +10,8 @@
"requirejs": "2.1.17",
"jquery": "1.10.2",
"reflux": "0.2.7",
- "bootstrap": "3.3.4"
+ "bootstrap": "3.3.4",
+ "font-awesome": "~4.3.0"
},
"moduleType": [
"amd"
diff --git a/gulpfile.js b/gulpfile.js
index accf3a9..6e3ff05 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -2,7 +2,9 @@
var gulp = require('gulp');
var nodemon = require('gulp-nodemon');
+var less = require('gulp-less');
var gulpReactJade = require('gulp-react-jade-amd');
+var mainBowerFiles = require('main-bower-files');
gulp.task('react-jade', function() {
return gulp.src('static/js/**/*.jade')
@@ -10,9 +12,20 @@ gulp.task('react-jade', function() {
.pipe(gulp.dest('static/js/templates'));
});
+gulp.task('less', function () {
+ return gulp.src('static/css/index.less')
+ .pipe(less('index.css'))
+ .pipe(gulp.dest('./static/css'));
+});
+
+gulp.task('fonts', function() {
+ return gulp.src(mainBowerFiles({filter: /.*fonts.*/i}))
+ .pipe(gulp.dest('static/fonts/'));
+});
+
gulp.task('develop', function() {
gulp.watch('static/js/app/**/*.jade', ['react-jade']);
- //gulp.watch('static/css/**/*.less', ['make-styles']);
+ gulp.watch('static/css/**/*.less', ['less']);
return nodemon({
ignore: ['static/**/*.js', 'app/**/*.js', 'node_modules/**'],
@@ -23,5 +36,7 @@ gulp.task('develop', function() {
gulp.task('default', [
'react-jade',
+ 'less',
+ 'fonts',
'develop'
]);
diff --git a/package.json b/package.json
index f7536c9..5c94fe4 100644
--- a/package.json
+++ b/package.json
@@ -43,6 +43,7 @@
"gulp-nodemon": "2.0.3",
"gulp-react-jade-amd": "git://github.com/vladimir-polyakov/gulp-react-jade-amd",
"memdown": "1.0.0",
+ "main-bower-files": "2.7.0",
"mocha": "1.18.2",
"nodemon": "1.3.7"
}
diff --git a/static/css/index.less b/static/css/index.less
new file mode 100644
index 0000000..a887a0d
--- /dev/null
+++ b/static/css/index.less
@@ -0,0 +1,20 @@
+@bowerPath: "../js/libs";
+
+// bootstrap
+@import "@{bowerPath}/bootstrap/less/bootstrap.less";
+
+//flatly
+@import "./sources/common/variables-flatly.less";
+
+//font-awesome
+@import "@{bowerPath}/font-awesome/less/font-awesome.less";
+
+//variables
+@import "./sources/common/variables.less";
+
+//layout
+@import "./sources/components/layout.less";
+
+//components
+@import "./sources/components/builds.less";
+@import "./sources/components/projects.less";
diff --git a/static/css/sources/common/variables-flatly.less b/static/css/sources/common/variables-flatly.less
new file mode 100644
index 0000000..a8b0679
--- /dev/null
+++ b/static/css/sources/common/variables-flatly.less
@@ -0,0 +1,861 @@
+// Flatly 3.3.4
+// Variables
+// --------------------------------------------------
+
+
+//== Colors
+//
+//## Gray and brand colors for use across Bootstrap.
+
+@gray-base: #000;
+@gray-darker: lighten(@gray-base, 13.5%); // #222
+@gray-dark: #7b8a8b; // #333
+@gray: #95a5a6; // #555
+@gray-light: #b4bcc2; // #999
+@gray-lighter: #ecf0f1; // #eee
+
+@brand-primary: #2C3E50;
+@brand-success: #18BC9C;
+@brand-info: #3498DB;
+@brand-warning: #F39C12;
+@brand-danger: #E74C3C;
+
+
+//== Scaffolding
+//
+//## Settings for some of the most global styles.
+
+//** Background color for `
`.
+@body-bg: #fff;
+//** Global text color on ``.
+@text-color: @brand-primary;
+
+//** Global textual link color.
+@link-color: @brand-success;
+//** Link hover color set via `darken()` function.
+@link-hover-color: @link-color;
+//** Link hover decoration.
+@link-hover-decoration: underline;
+
+
+//== Typography
+//
+//## Font, line-height, and color for body text, headings, and more.
+
+@font-family-sans-serif: "Lato", "Helvetica Neue", Helvetica, Arial, sans-serif;
+@font-family-serif: Georgia, "Times New Roman", Times, serif;
+//** Default monospace fonts for ``, ``, and `
`.
+@font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace;
+@font-family-base: @font-family-sans-serif;
+
+@font-size-base: 15px;
+@font-size-large: ceil((@font-size-base * 1.25)); // ~18px
+@font-size-small: ceil((@font-size-base * 0.85)); // ~12px
+
+@font-size-h1: floor((@font-size-base * 2.6)); // ~36px
+@font-size-h2: floor((@font-size-base * 2.15)); // ~30px
+@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px
+@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px
+@font-size-h5: @font-size-base;
+@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px
+
+//** Unit-less `line-height` for use in components like buttons.
+@line-height-base: 1.428571429; // 20/14
+//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
+@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px
+
+//** By default, this inherits from the ``.
+@headings-font-family: @font-family-base;
+@headings-font-weight: 400;
+@headings-line-height: 1.1;
+@headings-color: inherit;
+
+
+//== Iconography
+//
+//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
+
+//** Load fonts from this directory.
+@icon-font-path: "../fonts/";
+//** File name for all font files.
+@icon-font-name: "glyphicons-halflings-regular";
+//** Element ID within SVG icon file.
+@icon-font-svg-id: "glyphicons_halflingsregular";
+
+
+//== Components
+//
+//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
+
+@padding-base-vertical: 10px;
+@padding-base-horizontal: 15px;
+
+@padding-large-vertical: 18px;
+@padding-large-horizontal: 27px;
+
+@padding-small-vertical: 6px;
+@padding-small-horizontal: 9px;
+
+@padding-xs-vertical: 1px;
+@padding-xs-horizontal: 5px;
+
+@line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome
+@line-height-small: 1.5;
+
+@border-radius-base: 4px;
+@border-radius-large: 6px;
+@border-radius-small: 3px;
+
+//** Global color for active items (e.g., navs or dropdowns).
+@component-active-color: #fff;
+//** Global background color for active items (e.g., navs or dropdowns).
+@component-active-bg: @brand-primary;
+
+//** Width of the `border` for generating carets that indicator dropdowns.
+@caret-width-base: 4px;
+//** Carets increase slightly in size for larger components.
+@caret-width-large: 5px;
+
+
+//== Tables
+//
+//## Customizes the `.table` component with basic values, each used across all table variations.
+
+//** Padding for `
`s and `
`s.
+@table-cell-padding: 8px;
+//** Padding for cells in `.table-condensed`.
+@table-condensed-cell-padding: 5px;
+
+//** Default background color used for all tables.
+@table-bg: transparent;
+//** Background color used for `.table-striped`.
+@table-bg-accent: #f9f9f9;
+//** Background color used for `.table-hover`.
+@table-bg-hover: @gray-lighter;
+@table-bg-active: @table-bg-hover;
+
+//** Border color for table and cell borders.
+@table-border-color: @gray-lighter;
+
+
+//== Buttons
+//
+//## For each of Bootstrap's buttons, define text, background and border color.
+
+@btn-font-weight: normal;
+
+@btn-default-color: #fff;
+@btn-default-bg: @gray;
+@btn-default-border: @btn-default-bg;
+
+@btn-primary-color: @btn-default-color;
+@btn-primary-bg: @brand-primary;
+@btn-primary-border: @btn-primary-bg;
+
+@btn-success-color: @btn-default-color;
+@btn-success-bg: @brand-success;
+@btn-success-border: @btn-success-bg;
+
+@btn-info-color: @btn-default-color;
+@btn-info-bg: @brand-info;
+@btn-info-border: @btn-info-bg;
+
+@btn-warning-color: @btn-default-color;
+@btn-warning-bg: @brand-warning;
+@btn-warning-border: @btn-warning-bg;
+
+@btn-danger-color: @btn-default-color;
+@btn-danger-bg: @brand-danger;
+@btn-danger-border: @btn-danger-bg;
+
+@btn-link-disabled-color: @gray-light;
+
+
+//== Forms
+//
+//##
+
+//** `` background color
+@input-bg: #fff;
+//** `` background color
+@input-bg-disabled: @gray-lighter;
+
+//** Text color for ``s
+@input-color: @text-color;
+//** `` border color
+@input-border: #dce4ec;
+
+// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4
+//** Default `.form-control` border radius
+// This has no effect on `