From aceab1239604dc136f67c3efda11fd70a25c9b62 Mon Sep 17 00:00:00 2001 From: abezuska Date: Tue, 10 Jan 2017 23:32:37 -0500 Subject: [PATCH] initial commit --- .gitignore | 33 ++++++++++++++ app.js | 48 ++++++++++++++++++++ bin/www | 92 +++++++++++++++++++++++++++++++++++++++ helpers/count.js | 3 ++ helpers/ifEqual.js | 6 +++ package.json | 16 +++++++ public/css/main.css | 10 +++++ public/css/main.css.map | 12 +++++ public/fonts/.gitinclude | 0 public/images/.gitinclude | 0 public/js/.gitinclude | 0 routes/about.js | 9 ++++ routes/home.js | 9 ++++ scss/css/_colors.scss | 0 scss/css/_structure.scss | 10 +++++ scss/css/_typography.scss | 0 scss/css/main.scss | 3 ++ views/about.hbs | 22 ++++++++++ views/home.hbs | 31 +++++++++++++ views/layouts/main.hbs | 28 ++++++++++++ views/partials/footer.hbs | 5 +++ views/partials/header.hbs | 17 ++++++++ 22 files changed, 354 insertions(+) create mode 100644 .gitignore create mode 100644 app.js create mode 100755 bin/www create mode 100644 helpers/count.js create mode 100644 helpers/ifEqual.js create mode 100644 package.json create mode 100644 public/css/main.css create mode 100644 public/css/main.css.map create mode 100644 public/fonts/.gitinclude create mode 100644 public/images/.gitinclude create mode 100644 public/js/.gitinclude create mode 100644 routes/about.js create mode 100644 routes/home.js create mode 100644 scss/css/_colors.scss create mode 100644 scss/css/_structure.scss create mode 100644 scss/css/_typography.scss create mode 100644 scss/css/main.scss create mode 100644 views/about.hbs create mode 100644 views/home.hbs create mode 100644 views/layouts/main.hbs create mode 100644 views/partials/footer.hbs create mode 100644 views/partials/header.hbs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..660c872 --- /dev/null +++ b/.gitignore @@ -0,0 +1,33 @@ +# Logs +logs +*.log + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directory +# https://docs.npmjs.com/cli/shrinkwrap#caveats +node_modules + +# Debug log from npm +npm-debug.log + +# script to copy site to server +upload.sh diff --git a/app.js b/app.js new file mode 100644 index 0000000..24cac05 --- /dev/null +++ b/app.js @@ -0,0 +1,48 @@ +var express = require('express'); +var path = require('path'); +var favicon = require('serve-favicon'); +var bodyParser = require('body-parser'); +var autoprefixer = require('express-autoprefixer'); + +var routes = { + home: require('./routes/home'), + about: require('./routes/about') +}; + +var app = express(); + +app.set('views', path.join(__dirname, 'views')); +var exphbs = require('express-handlebars'); +var hbs = exphbs.create({ + extname: '.hbs', + helpers: { + ifEqual: require("./helpers/ifEqual.js"), + count: require("./helpers/count.js") + } +}); +app.engine('.hbs', hbs.engine); +app.set('view engine', '.hbs'); + +app.use(bodyParser.json()); +app.use(bodyParser.urlencoded({ extended: false })); +app.use(require('node-sass-middleware')({ + src: path.join(__dirname, 'scss/'), + dest: path.join(__dirname, 'public/'), + debug: true, + sourceMap: true +})); +app.use(autoprefixer({ browsers: 'last 2 versions' })) +app.use(express.static(path.join(__dirname, 'public'))); + +app.use('/', routes.home); +app.use('/about', routes.about); + + +// catch 404 and forward to error handler +app.use(function(req, res, next) { + var err = new Error('Not Found'); + err.status = 404; + next(err); +}); + +module.exports = app; diff --git a/bin/www b/bin/www new file mode 100755 index 0000000..8d10d2e --- /dev/null +++ b/bin/www @@ -0,0 +1,92 @@ +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var app = require('../app'); +var debug = require('debug')('Daydream.farm:server'); +var http = require('http'); +var open = require("open"); + +/** + * Get port from environment and store in Express. + */ + +var port = normalizePort(3000); +app.set('port', port); + +/** + * Create HTTP server. + */ + +var server = http.createServer(app); + +/** + * Listen on provided port, on all network interfaces. + */ + +server.listen(port); +open("http://localhost:" + port); +server.on('error', onError); +server.on('listening', onListening); + +/** + * Normalize a port into a number, string, or false. + */ + +function normalizePort(val) { + var port = parseInt(val, 10); + + if (isNaN(port)) { + // named pipe + return val; + } + + if (port >= 0) { + // port number + return port; + } + + return false; +} + +/** + * Event listener for HTTP server "error" event. + */ + +function onError(error) { + if (error.syscall !== 'listen') { + throw error; + } + + var bind = typeof port === 'string' + ? 'Pipe ' + port + : 'Port ' + port; + + // handle specific listen errors with friendly messages + switch (error.code) { + case 'EACCES': + console.error(bind + ' requires elevated privileges'); + process.exit(1); + break; + case 'EADDRINUSE': + console.error(bind + ' is already in use'); + process.exit(1); + break; + default: + throw error; + } +} + +/** + * Event listener for HTTP server "listening" event. + */ + +function onListening() { + var addr = server.address(); + var bind = typeof addr === 'string' + ? 'pipe ' + addr + : 'port ' + addr.port; + debug('Listening on ' + bind); +} diff --git a/helpers/count.js b/helpers/count.js new file mode 100644 index 0000000..9a11426 --- /dev/null +++ b/helpers/count.js @@ -0,0 +1,3 @@ +module.exports = function(context, options) { + return context.length; +} diff --git a/helpers/ifEqual.js b/helpers/ifEqual.js new file mode 100644 index 0000000..00a9968 --- /dev/null +++ b/helpers/ifEqual.js @@ -0,0 +1,6 @@ +module.exports = function(a, b, opts) { + if(a == b) // Or === depending on your needs + return opts.fn(this); + else + return opts.inverse(this); +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..93554ea --- /dev/null +++ b/package.json @@ -0,0 +1,16 @@ +{ + "name": "express-handlebars-sass-starter-project", + "version": "0.0.0", + "private": true, + "scripts": { + "start": "node ./bin/www" + }, + "dependencies": { + "body-parser": "~1.15.1", + "express": "~4.13.4", + "express-autoprefixer": "^5.1.1", + "express-handlebars": "^3.0.0", + "node-sass-middleware": "0.8.0", + "serve-favicon": "~2.3.0" + } +} diff --git a/public/css/main.css b/public/css/main.css new file mode 100644 index 0000000..f631d0f --- /dev/null +++ b/public/css/main.css @@ -0,0 +1,10 @@ +html { + box-sizing: border-box; } + +*, *:before, *:after { + box-sizing: inherit; } + +.offset-header { + margin-top: 3.5rem; } + +/*# sourceMappingURL=main.css.map */ \ No newline at end of file diff --git a/public/css/main.css.map b/public/css/main.css.map new file mode 100644 index 0000000..8bf9bdf --- /dev/null +++ b/public/css/main.css.map @@ -0,0 +1,12 @@ +{ + "version": 3, + "file": "main.css", + "sources": [ + "../../scss/css/main.scss", + "../../scss/css/_colors.scss", + "../../scss/css/_typography.scss", + "../../scss/css/_structure.scss" + ], + "mappings": "AGAA,AAAA,IAAI,CAAC;EACH,UAAU,EAAE,UAAW,GACxB;;AACD,AAAA,CAAC,EAAE,AAAC,CAAA,AAAA,OAAO,EAAE,AAAC,CAAA,AAAA,MAAM,CAAC;EACnB,UAAU,EAAE,OAAQ,GACrB;;AAED,AAAA,cAAc,CAAA;EACZ,UAAU,EAAE,MAAO,GACpB", + "names": [] +} \ No newline at end of file diff --git a/public/fonts/.gitinclude b/public/fonts/.gitinclude new file mode 100644 index 0000000..e69de29 diff --git a/public/images/.gitinclude b/public/images/.gitinclude new file mode 100644 index 0000000..e69de29 diff --git a/public/js/.gitinclude b/public/js/.gitinclude new file mode 100644 index 0000000..e69de29 diff --git a/routes/about.js b/routes/about.js new file mode 100644 index 0000000..2e2f2d5 --- /dev/null +++ b/routes/about.js @@ -0,0 +1,9 @@ +var express = require('express'); +var router = express.Router(); + +router.get('/', function(req, res, next) { + res.render('about', { + layout: 'main'}); +}); + +module.exports = router; diff --git a/routes/home.js b/routes/home.js new file mode 100644 index 0000000..a16315a --- /dev/null +++ b/routes/home.js @@ -0,0 +1,9 @@ +var express = require('express'); +var router = express.Router(); + +router.get('/', function(req, res, next) { + res.render('home', { + layout: 'main'}); +}); + +module.exports = router; diff --git a/scss/css/_colors.scss b/scss/css/_colors.scss new file mode 100644 index 0000000..e69de29 diff --git a/scss/css/_structure.scss b/scss/css/_structure.scss new file mode 100644 index 0000000..553fe26 --- /dev/null +++ b/scss/css/_structure.scss @@ -0,0 +1,10 @@ +html { + box-sizing: border-box; +} +*, *:before, *:after { + box-sizing: inherit; +} + +.offset-header{ + margin-top: 3.5rem; +} \ No newline at end of file diff --git a/scss/css/_typography.scss b/scss/css/_typography.scss new file mode 100644 index 0000000..e69de29 diff --git a/scss/css/main.scss b/scss/css/main.scss new file mode 100644 index 0000000..1de4614 --- /dev/null +++ b/scss/css/main.scss @@ -0,0 +1,3 @@ +@import"colors"; +@import"typography"; +@import"structure"; \ No newline at end of file diff --git a/views/about.hbs b/views/about.hbs new file mode 100644 index 0000000..f41474f --- /dev/null +++ b/views/about.hbs @@ -0,0 +1,22 @@ +
+ +
+
+

Heading

+

Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

+

View details »

+
+
+

Heading

+

Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

+

View details »

+
+
+

Heading

+

Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.

+

View details »

+
+
+ +
+
\ No newline at end of file diff --git a/views/home.hbs b/views/home.hbs new file mode 100644 index 0000000..4dcfffb --- /dev/null +++ b/views/home.hbs @@ -0,0 +1,31 @@ + +
+
+

Hello, world!

+

This is a template for a simple marketing or informational website. It includes a large callout called a jumbotron and three supporting pieces of content. Use it as a starting point to create something more unique.

+

Learn more »

+
+
+ +
+ +
+
+

Heading

+

Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

+

View details »

+
+
+

Heading

+

Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.

+

View details »

+
+
+

Heading

+

Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.

+

View details »

+
+
+ +
+
\ No newline at end of file diff --git a/views/layouts/main.hbs b/views/layouts/main.hbs new file mode 100644 index 0000000..055818c --- /dev/null +++ b/views/layouts/main.hbs @@ -0,0 +1,28 @@ + + + + + + + + + + Starter Project + + + + + + + + {{> header}} + + {{{body}}} + + {{> footer}} + + + + + + diff --git a/views/partials/footer.hbs b/views/partials/footer.hbs new file mode 100644 index 0000000..dbfa73d --- /dev/null +++ b/views/partials/footer.hbs @@ -0,0 +1,5 @@ +
+
+

© Company 2017

+
+
\ No newline at end of file diff --git a/views/partials/header.hbs b/views/partials/header.hbs new file mode 100644 index 0000000..dda91a6 --- /dev/null +++ b/views/partials/header.hbs @@ -0,0 +1,17 @@ + \ No newline at end of file