From 28c0bd8d766b625c0f87a945724cab84ea61dc59 Mon Sep 17 00:00:00 2001 From: Visnu Pitiyanuvath Date: Mon, 14 Mar 2011 23:24:35 -0700 Subject: [PATCH] ah, back to express, jade, and stylus --- .gitignore | 2 +- .npmignore | 1 + app.js | 18 +++++ package.json | 25 ++++++ public/fonts/04B_03__.TTF | Bin 0 -> 19492 bytes public/images/noise.png | Bin 0 -> 12080 bytes public/index.html | 120 ---------------------------- public/javascripts/application.js | 27 +++++++ public/stylesheets/application.styl | 40 ++++++++++ views/index.jade | 30 +++++++ views/layout.jade | 11 +++ 11 files changed, 153 insertions(+), 121 deletions(-) create mode 100644 .npmignore create mode 100644 app.js create mode 100644 package.json create mode 100644 public/fonts/04B_03__.TTF create mode 100644 public/images/noise.png delete mode 100644 public/index.html create mode 100644 public/javascripts/application.js create mode 100644 public/stylesheets/application.styl create mode 100644 views/index.jade create mode 100644 views/layout.jade diff --git a/.gitignore b/.gitignore index 2500a909..66ae7f44 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ .DS_Store -.sass-cache tmp/* +*.css diff --git a/.npmignore b/.npmignore new file mode 100644 index 00000000..a9a5aecf --- /dev/null +++ b/.npmignore @@ -0,0 +1 @@ +tmp diff --git a/app.js b/app.js new file mode 100644 index 00000000..97e8fe0e --- /dev/null +++ b/app.js @@ -0,0 +1,18 @@ +var express = require('express') + , pub = __dirname + '/public'; + +var app = express.createServer(); + +app.use(require('stylus').middleware(pub)); +app.use(express.static(pub)); +app.use(express.logger()); +app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); + +app.set('views', __dirname + '/views'); +app.set('view engine', 'jade'); + +app.listen(process.env.PORT || 8000); + +app.get('/', function(req, res) { + res.render('index'); +}); diff --git a/package.json b/package.json new file mode 100644 index 00000000..b6965f40 --- /dev/null +++ b/package.json @@ -0,0 +1,25 @@ +{ + "name": "nko", + "description": "node.js knockout: 48-hour node.js hackathon", + "version": "0.0.1", + "homepage": "http://nodeknockout.com", + "repository": { + "type": "git", + "url": "git://github.com/nko/website.git" + }, + "author": "NKO Team ", + "main": "./app.js", + "directories": { + "lib": "." + }, + "engines": { + "node": "*" + }, + "dependencies": { + "express": ">=2.0.0rc", + "jade": ">=0.8.8", + "stylus": "0.8.0" + }, + "devDependencies": { + } +} diff --git a/public/fonts/04B_03__.TTF b/public/fonts/04B_03__.TTF new file mode 100644 index 0000000000000000000000000000000000000000..fe4328b6accff5ea1c2554ef0148814ff3203ca4 GIT binary patch literal 19492 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

O_mRz*|e0Z9*~kmc2lC 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 literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html deleted file mode 100644 index 77d322e1..00000000 --- a/public/index.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - Node.js Knockout - - - - - -

-

Node.js Knockout

-
- -

- Node.js Knockout is a 48-hour coding contest using - node.js. -

- -

- Node.js Knockout 2011 will be - - -

- -

- What do I do until then? - See last year's winners - or - follow us on Twitter. -

- - - - - - - - - - diff --git a/public/javascripts/application.js b/public/javascripts/application.js new file mode 100644 index 00000000..9ff4fd3d --- /dev/null +++ b/public/javascripts/application.js @@ -0,0 +1,27 @@ +(function(b){function c(){}for(var d="assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info, log,markTimeline,profile,profileEnd,time,timeEnd,trace,warn".split(","),a;a=d.pop();)b[a]=b[a]||c})(window.console=window.console||{}); + +$(function() { + var parts, start; + parts = $('time.start').attr('datetime').split(/[-:TZ]/); + parts[1]--; // js dates :( + start = Date.UTC.apply(null, parts); + + $('#countdown').each(function() { + var $this = $(this); + (function tick() { + $this.html(countdownify((start - (new Date)) / 1000)); + return setTimeout(tick, 1000); + })(); + + function countdownify(secs) { + var names = ['day', 'hour', 'minute', 'second']; + return $.map([secs / 86400, secs % 86400 / 3600, secs % 3600 / 60, secs % 60], function(num, i) { + return [Math.floor(num), pluralize(names[i], num)]; + }).join(' '); + } + + function pluralize(str, count) { + return str + (parseInt(count) !== 1 ? 's' : ''); + } + }); +}); diff --git a/public/stylesheets/application.styl b/public/stylesheets/application.styl new file mode 100644 index 00000000..475f2145 --- /dev/null +++ b/public/stylesheets/application.styl @@ -0,0 +1,40 @@ +@font-face + font-family "04b_03" + src url(/fonts/04B_03__.TTF) + +header, footer + display block + +body + font-family "04b_03", monospace + text-align center + background hsl(200, 30%, 95%) url('/images/noise.png') repeat + text-shadow 0px 1px 0px hsla(0, 100%, 100%, 0.6) + +a:link, a:visited + color hsl(200, 30%, 60%) + +header + h1 + font-size 72pt + word-spacing -0.5ex + .ko + background-color black + color white + text-shadow 0px 2px 0px hsla(0, 100%, 100%, 0.5) + padding 10px 10px 0 25px + border-radius 2px + border solid 1px hsla(0, 100%, 100%, 0.5) + +h2 + margin 2em + .dates + font-size 32pt + #countdown + margin 0.5em + +footer + margin-top 5em + li + display inline-block + margin 0 1ex diff --git a/views/index.jade b/views/index.jade new file mode 100644 index 00000000..38b837b2 --- /dev/null +++ b/views/index.jade @@ -0,0 +1,30 @@ +header + h1 + | node.js + span.ko ko + +h3 + | node.js knockout is a 48-hour coding contest using + a( href: 'http://nodejs.org' ) node.js + +h2 + | node.js knockout 2011 will be + .dates + time.start( datetime: '2011-08-27T00:00:00Z' ) August 27 + | — + time.end( datetime: '2011-08-28T00:00:00Z' ) August 28, 2011 + #countdown + +.now-what + | What do I do until then? + a( href: '#' ) See last year's winners + | or + a( href: '#' ) follow us on Twitter + +footer + ul + li: a( href: 'http://twitter.com/node_knockout' ) @node_knockout + li: a( href: 'mailto:all@nodeknockout.com' ) all@nodeknockout.com + li: a( href: 'http://blog.nodeknockout.com' ) blog + li: a( href: 'http://2010.nodeknockout.com' ) 2010 website + diff --git a/views/layout.jade b/views/layout.jade new file mode 100644 index 00000000..f5267afe --- /dev/null +++ b/views/layout.jade @@ -0,0 +1,11 @@ +!!! 5 +html + head + meta( charset: 'utf-8' ) + meta( http-equiv: 'X-UA-Compatible', content: 'IE=edge,chrome=1' ) + title node.js knockout + link( rel: 'stylesheet', href: '/stylesheets/application.css' ) + body + != body + script( type: 'text/javascript', src: '//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js' ) + script( type: 'text/javascript', src: '/javascripts/application.js' )