From 66a905be22a9c846fc6f3ef6c54510e94cafe092 Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Fri, 24 Feb 2012 20:58:48 +0000 Subject: [PATCH] renamed main file from app.coffee to heartbit.coffee and added a custom 404 page --- Procfile | 2 +- app.js | 41 ------------------------- heartbit.js | 47 +++++++++++++++++++++++++++++ public/css/style.css | 52 +++++++++++++++++++------------- public/images/404-dead-link.png | Bin 0 -> 44047 bytes src/app.coffee | 33 -------------------- src/heartbit.coffee | 38 +++++++++++++++++++++++ views/404.coffee | 1 + 8 files changed, 118 insertions(+), 96 deletions(-) delete mode 100644 app.js create mode 100644 heartbit.js create mode 100644 public/images/404-dead-link.png delete mode 100644 src/app.coffee create mode 100644 src/heartbit.coffee create mode 100644 views/404.coffee diff --git a/Procfile b/Procfile index 207d22f..fa48714 100644 --- a/Procfile +++ b/Procfile @@ -1 +1 @@ -web: node app.js \ No newline at end of file +web: node heartbit.js \ No newline at end of file diff --git a/app.js b/app.js deleted file mode 100644 index 279acce..0000000 --- a/app.js +++ /dev/null @@ -1,41 +0,0 @@ -(function() { - var app, express; - - express = require('express'); - - app = module.exports = express.createServer(); - - app.configure(function() { - app.set('views', __dirname + '/views'); - app.set('view engine', 'coffee'); - app.register('.coffee', require('coffeekup').adapters.express); - app.use(express.bodyParser()); - app.use(express.methodOverride()); - return app.use(express.static(__dirname + '/public')); - }); - - app.configure('development', function() { - return app.use(express.errorHandler({ - dumpExceptions: true, - showStack: true - })); - }); - - app.configure('production', function() { - app.use(express.errorHandler()); - return app.use(require('./middleware/host_redirect')({ - "www.heartb.it": "http://heartb.it/" - })); - }); - - app.get('/', function(req, res) { - return res.render('index', { - format: true - }); - }); - - app.listen(process.env.PORT || 3000); - - console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env); - -}).call(this); diff --git a/heartbit.js b/heartbit.js new file mode 100644 index 0000000..4b1058f --- /dev/null +++ b/heartbit.js @@ -0,0 +1,47 @@ +(function() { + var express, server; + + express = require('express'); + + server = module.exports = express.createServer(); + + server.configure(function() { + server.set('views', __dirname + '/views'); + server.set('view engine', 'coffee'); + server.register('.coffee', require('coffeekup').adapters.express); + server.use(express.bodyParser()); + server.use(express.methodOverride()); + return server.use(express.static(__dirname + '/public')); + }); + + server.configure('development', function() { + return server.use(express.errorHandler({ + dumpExceptions: true, + showStack: true + })); + }); + + server.configure('production', function() { + server.use(express.errorHandler()); + return server.use(require('./middleware/host_redirect')({ + "www.heartb.it": "http://heartb.it/" + })); + }); + + server.get('/', function(req, res) { + return res.render('index', { + format: true + }); + }); + + server.get('*', function(req, res) { + return res.render('404', { + format: true + }); + }); + + server.listen(process.env.PORT || 3000); + + console.log("Express server listening on port %d in %s mode", server.address().port, server.settings.env); + +}).call(this); diff --git a/public/css/style.css b/public/css/style.css index ca26ec8..3e7eca5 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -1,29 +1,39 @@ body { - font-family: helvetica, arial, sans-serif; - padding: 0; - margin: 0; + font-family: helvetica, arial, sans-serif; + padding: 0; + margin: 0; } #logo { - background: url("../images/heartb.it.png") center center no-repeat; - position: absolute; - top: 50%; - left: 50%; - margin: -15px 0px 0px -75px; - height: 30px; - width: 150px; + background: url("../images/heartb.it.png") center center no-repeat; + position: absolute; + top: 50%; + left: 50%; + margin: -15px 0px 0px -75px; + height: 30px; + width: 150px; } #contact { - font-size: 12px; - position: absolute; - right: 8px; - bottom: 5px; + font-size: 12px; + position: absolute; + right: 8px; + bottom: 5px; } - #contact a { - color: #aaa; - text-decoration: none; - } - #contact a:hover { - text-decoration: underline; - } \ No newline at end of file + #contact a { + color: #aaa; + text-decoration: none; + } + #contact a:hover { + text-decoration: underline; + } + +#not-found { + background: url("../images/404-dead-link.png") center center no-repeat; + position: absolute; + top: 50%; + left: 50%; + margin: -150px 0px 0px -250px; + height: 300px; + width: 500px; +} \ No newline at end of file diff --git a/public/images/404-dead-link.png b/public/images/404-dead-link.png new file mode 100644 index 0000000000000000000000000000000000000000..cfacb1f562a312a5c069382cd0d22866cd185fc1 GIT binary patch literal 44047 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%0DjMS(j*NkiB zQ+w1Te97germk1Q{Yse`8?H>(T1bGuxaLTtFF=IRfScRb8PGTUURug1D0X?goJB4L zNa;AL6S4geRqmS`sk+y%Ujt4@K>?y7A{q?=bB@VCAB(p5A55hauprDMkR&H3S4bKa z_RcJ>6`1N;rM1V=P{#i8bP9ZD=_3OG00>~tYCfT=1>kZ*3W}1|&@$wl_V+RhxDczc zvAOQ|#+6DOp5U|XE*_p%#oEP9LOigMkNj3!WR|08+WuX+OG87^U2j~i3zPsaU~qqR zLddQe)&>CXdU@brw^veeQdIgqcHVxfhsE4ak{`t{3m$yt6M2JByiBC6O*yO-X2uKRBmC9*%Ai|6B* zu_4Sp0Rhv8eZmdzw{eKA?pA&`6My~)cxl+CRp$Y@IM3ngwC6+o#tj1lL$PK#(-cqR zQTyGW3XPNumm${Jt&wzBrVoso2nqQ9mjxe^lJ$2@Lsy7P~F1&L1{{BAcDn!{tQ!}By3vi18 zGXIR`tufIP#sVb&ZU-xCabnh38(b9RO_KCjj5u2FTKqzBWLq z$4Uk?PutauX?^XhGqozH1~SXa%>F$++J!p-MECAjtpFv+DX=o7*8jIv7edAyxm5<>DH>=gN1E9zIKJVd!m57h=;sw?w1sl0hoXtR1$jlW0 zNN>bG)#k_F$E)kumX(&AY?8`!qBl z#>Ui9y&3^GGlrjjP@w(P!CnNKg=3%;BN!93()ZTIw*K7k)UuG94Uis?yy?ViZf=&? zPep7WU3IkB2g;R=mw05^UjJqhqops~G!&C1&TsGdfEPvE9QCBysnP)md%J6du zv_t+`iQ0R%+8*$4OKN^Q#Z>jqkeHa*RGn&=*M}w!T_H8!0C~VBw=-822|Qq5N5cxg zt6aoE3lSTC86%gZB#UDA=r8GoE}|S2Muf24iMKw1gNB^?@`o=;Hy!POHFF$i*EmBw zMlEeIFJ`b@UXb9+SO^kAiEqTXFdH;(7>iGH=X(GSzG8Mn1SWXVa+-`2g&;L(Gx!3t zusk=HUi-s`{#a^1KR>5@Gs(!v$c{S6u%queIX6^cGjXq)G}VDY#hhcO0-QAQvr*{t z`2T)Ze|89dezL04&jWB92gb9pCNKaC<>#Sv{CwE|?>Lvj!odIbU;pPB{_7O~%NhRf z&+Pv+-G8p=|ILl~&uRXb`}be3?!Q0Xe~$a#-S_|YbpLr?ZCEz}h-e5b=4BBWEdHnn Pz)+M`l_`H?7W_W|OSDNc literal 0 HcmV?d00001 diff --git a/src/app.coffee b/src/app.coffee deleted file mode 100644 index 1b0f30a..0000000 --- a/src/app.coffee +++ /dev/null @@ -1,33 +0,0 @@ -# Module Dependencies -express = require 'express' -app = module.exports = express.createServer() - - -# Configuration -app.configure -> - app.set 'views', __dirname + '/views' - app.set 'view engine', 'coffee' - app.register '.coffee', require('coffeekup').adapters.express - app.use express.bodyParser() - app.use express.methodOverride() - app.use express.static(__dirname + '/public') - -app.configure 'development', -> - app.use express.errorHandler(dumpExceptions: true, showStack: true) - -app.configure 'production', -> - app.use express.errorHandler() - app.use require('./middleware/host_redirect') - "www.heartb.it": "http://heartb.it/" - - -# Routes -app.get '/', (req, res) -> - res.render 'index', format: true - - -# Set port and start server. -app.listen process.env.PORT || 3000 - -console.log "Express server listening on port %d in %s mode", - app.address().port, app.settings.env diff --git a/src/heartbit.coffee b/src/heartbit.coffee new file mode 100644 index 0000000..1bab051 --- /dev/null +++ b/src/heartbit.coffee @@ -0,0 +1,38 @@ +# Module Dependencies. +express = require 'express' + +# Create server instance. +server = module.exports = express.createServer() + +# Configuration. +server.configure -> + server.set 'views', __dirname + '/views' + server.set 'view engine', 'coffee' + server.register '.coffee', require('coffeekup').adapters.express + server.use express.bodyParser() + server.use express.methodOverride() + server.use express.static(__dirname + '/public') + +server.configure 'development', -> + server.use express.errorHandler(dumpExceptions: true, showStack: true) + +server.configure 'production', -> + server.use express.errorHandler() + server.use require('./middleware/host_redirect') + "www.heartb.it": "http://heartb.it/" + + +# Routes +server.get '/', (req, res) -> + res.render 'index', format: true + +# 404 Fallback +server.get '*', (req, res) -> + res.render '404', format: true + +# Set port and start server. +server.listen process.env.PORT || 3000 + +# Print debug +console.log "Express server listening on port %d in %s mode", + server.address().port, server.settings.env diff --git a/views/404.coffee b/views/404.coffee new file mode 100644 index 0000000..3f1dc0f --- /dev/null +++ b/views/404.coffee @@ -0,0 +1 @@ +div id: 'not-found'