Browse files

Initial Commit

  • Loading branch information...
0 parents commit 7950de3fe24c792c59d01891f3514499a6370bb3 @robrighter committed Dec 30, 2011
Showing with 460 additions and 0 deletions.
  1. +1 −0 .gitignore
  2. +1 −0 config.json
  3. +17 −0 package.json
  4. +88 −0 server.js
  5. +287 −0 static/css/style.css
  6. +19 −0 static/js/script.js
  7. +2 −0 views/404.jade
  8. +7 −0 views/500.jade
  9. +3 −0 views/index.jade
  10. +35 −0 views/layout.jade
1 .gitignore
@@ -0,0 +1 @@
+node_modules
1 config.json
@@ -0,0 +1 @@
+{ "version": "v0.6.6" }
17 package.json
@@ -0,0 +1,17 @@
+{
+ "name": "YOUR-PROJECT-NAME-HERE",
+ "description": "YOUR PROJECT DESCRIPTION HERE",
+ "author": "YOUR NAME <your@emailaddress.com>",
+ "version": "0.0.1",
+ "dependencies": {
+ "connect": "1.8.5",
+ "express": "2.5.2",
+ "jade": "0.20.0",
+ "mongoose": "2.4.8",
+ "socket.io": "0.8.7"
+ },
+ "devDependencies": {
+ "vows": "0.5.x"
+ },
+ "engine": "node >= 0.6.6"
+}
88 server.js
@@ -0,0 +1,88 @@
+//setup Dependencies
+var connect = require('connect')
+ , express = require('express')
+ , io = require('Socket.io')
+ , port = (process.env.PORT || 8081);
+
+//Setup Express
+var server = express.createServer();
+server.configure(function(){
+ server.set('views', __dirname + '/views');
+ server.use(connect.bodyParser());
+ server.use(express.cookieParser());
+ server.use(express.session({ secret: "shhhhhhhhh!"}));
+ server.use(connect.static(__dirname + '/static'));
+ server.use(server.router);
+});
+
+//setup the errors
+server.error(function(err, req, res, next){
+ if (err instanceof NotFound) {
+ res.render('404.jade', { locals: {
+ title : '404 - Not Found'
+ ,description: ''
+ ,author: ''
+ ,analyticssiteid: 'XXXXXXX'
+ },status: 404 });
+ } else {
+ res.render('500.jade', { locals: {
+ title : 'The Server Encountered an Error'
+ ,description: ''
+ ,author: ''
+ ,analyticssiteid: 'XXXXXXX'
+ ,error: err
+ },status: 500 });
+ }
+});
+server.listen( port);
+
+//Setup Socket.IO
+var io = io.listen(server);
+io.on('connection', function(client){
+ console.log('Client Connected');
+ client.on('message', function(message){
+ client.broadcast(message);
+ client.send(message);
+ });
+ client.on('disconnect', function(){
+ console.log('Client Disconnected.');
+ });
+});
+
+
+///////////////////////////////////////////
+// Routes //
+///////////////////////////////////////////
+
+/////// ADD ALL YOUR ROUTES HERE /////////
+
+server.get('/', function(req,res){
+ res.render('index.jade', {
+ locals : {
+ title : 'Your Page Title'
+ ,description: 'Your Page Description'
+ ,author: 'Your Name'
+ ,analyticssiteid: 'XXXXXXX'
+ }
+ });
+});
+
+
+//A Route for Creating a 500 Error (Useful to keep around)
+server.get('/500', function(req, res){
+ throw new Error('This is a 500 Error');
+});
+
+//The 404 Route (ALWAYS Keep this as the last route)
+server.get('/*', function(req, res){
+ throw new NotFound;
+});
+
+function NotFound(msg){
+ this.name = 'NotFound';
+ Error.call(this, msg);
+ Error.captureStackTrace(this, arguments.callee);
+}
+
+
+console.log('Listening on http://0.0.0.0:' + port );
287 static/css/style.css
@@ -0,0 +1,287 @@
+/*
+ * HTML5 ✰ Boilerplate
+ *
+ * What follows is the result of much research on cross-browser styling.
+ * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal,
+ * Kroc Camen, and the H5BP dev community and team.
+ *
+ * Detailed information about this CSS: h5bp.com/css
+ *
+ * ==|== normalize ==========================================================
+ */
+
+
+/* =============================================================================
+ HTML5 display definitions
+ ========================================================================== */
+
+article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { display: block; }
+audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; }
+audio:not([controls]) { display: none; }
+[hidden] { display: none; }
+
+
+/* =============================================================================
+ Base
+ ========================================================================== */
+
+/*
+ * 1. Correct text resizing oddly in IE6/7 when body font-size is set using em units
+ * 2. Force vertical scrollbar in non-IE
+ * 3. Prevent iOS text size adjust on device orientation change, without disabling user zoom: h5bp.com/g
+ */
+
+html { font-size: 100%; overflow-y: scroll; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; }
+
+body { margin: 0; font-size: 1em; line-height: 1.4; }
+
+body, button, input, select, textarea { font-family: sans-serif; color: #222; }
+
+/*
+ * Remove text-shadow in selection highlight: h5bp.com/i
+ * These selection declarations have to be separate
+ * Also: hot pink! (or customize the background color to match your design)
+ */
+
+::-moz-selection { background: #fe57a1; color: #fff; text-shadow: none; }
+::selection { background: #fe57a1; color: #fff; text-shadow: none; }
+
+
+/* =============================================================================
+ Links
+ ========================================================================== */
+
+a { color: #00e; }
+a:visited { color: #551a8b; }
+a:hover { color: #06e; }
+a:focus { outline: thin dotted; }
+
+/* Improve readability when focused and hovered in all browsers: h5bp.com/h */
+a:hover, a:active { outline: 0; }
+
+
+/* =============================================================================
+ Typography
+ ========================================================================== */
+
+abbr[title] { border-bottom: 1px dotted; }
+
+b, strong { font-weight: bold; }
+
+blockquote { margin: 1em 40px; }
+
+dfn { font-style: italic; }
+
+hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; }
+
+ins { background: #ff9; color: #000; text-decoration: none; }
+
+mark { background: #ff0; color: #000; font-style: italic; font-weight: bold; }
+
+/* Redeclare monospace font family: h5bp.com/j */
+pre, code, kbd, samp { font-family: monospace, serif; _font-family: 'courier new', monospace; font-size: 1em; }
+
+/* Improve readability of pre-formatted text in all browsers */
+pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; }
+
+q { quotes: none; }
+q:before, q:after { content: ""; content: none; }
+
+small { font-size: 85%; }
+
+/* Position subscript and superscript content without affecting line-height: h5bp.com/k */
+sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
+sup { top: -0.5em; }
+sub { bottom: -0.25em; }
+
+
+/* =============================================================================
+ Lists
+ ========================================================================== */
+
+ul, ol { margin: 1em 0; padding: 0 0 0 40px; }
+dd { margin: 0 0 0 40px; }
+nav ul, nav ol { list-style: none; list-style-image: none; margin: 0; padding: 0; }
+
+
+/* =============================================================================
+ Embedded content
+ ========================================================================== */
+
+/*
+ * 1. Improve image quality when scaled in IE7: h5bp.com/d
+ * 2. Remove the gap between images and borders on image containers: h5bp.com/e
+ */
+
+img { border: 0; -ms-interpolation-mode: bicubic; vertical-align: middle; }
+
+/*
+ * Correct overflow not hidden in IE9
+ */
+
+svg:not(:root) { overflow: hidden; }
+
+
+/* =============================================================================
+ Figures
+ ========================================================================== */
+
+figure { margin: 0; }
+
+
+/* =============================================================================
+ Forms
+ ========================================================================== */
+
+form { margin: 0; }
+fieldset { border: 0; margin: 0; padding: 0; }
+
+/* Indicate that 'label' will shift focus to the associated form element */
+label { cursor: pointer; }
+
+/*
+ * 1. Correct color not inheriting in IE6/7/8/9
+ * 2. Correct alignment displayed oddly in IE6/7
+ */
+
+legend { border: 0; *margin-left: -7px; padding: 0; }
+
+/*
+ * 1. Correct font-size not inheriting in all browsers
+ * 2. Remove margins in FF3/4 S5 Chrome
+ * 3. Define consistent vertical alignment display in all browsers
+ */
+
+button, input, select, textarea { font-size: 100%; margin: 0; vertical-align: baseline; *vertical-align: middle; }
+
+/*
+ * 1. Define line-height as normal to match FF3/4 (set using !important in the UA stylesheet)
+ */
+
+button, input { line-height: normal; }
+
+/*
+ * 1. Display hand cursor for clickable form elements
+ * 2. Allow styling of clickable form elements in iOS
+ * 3. Correct inner spacing displayed oddly in IE7 (doesn't effect IE6)
+ */
+
+button, input[type="button"], input[type="reset"], input[type="submit"] { cursor: pointer; -webkit-appearance: button; *overflow: visible; }
+
+/*
+ * Consistent box sizing and appearance
+ */
+
+input[type="checkbox"], input[type="radio"] { box-sizing: border-box; padding: 0; }
+input[type="search"] { -webkit-appearance: textfield; -moz-box-sizing: content-box; -webkit-box-sizing: content-box; box-sizing: content-box; }
+input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }
+
+/*
+ * Remove inner padding and border in FF3/4: h5bp.com/l
+ */
+
+button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
+
+/*
+ * 1. Remove default vertical scrollbar in IE6/7/8/9
+ * 2. Allow only vertical resizing
+ */
+
+textarea { overflow: auto; vertical-align: top; resize: vertical; }
+
+/* Colors for form validity */
+input:valid, textarea:valid { }
+input:invalid, textarea:invalid { background-color: #f0dddd; }
+
+
+/* =============================================================================
+ Tables
+ ========================================================================== */
+
+table { border-collapse: collapse; border-spacing: 0; }
+td { vertical-align: top; }
+
+
+/* ==|== primary styles =====================================================
+ Author:
+ ========================================================================== */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/* ==|== media queries ======================================================
+ PLACEHOLDER Media Queries for Responsive Design.
+ These override the primary ('mobile first') styles
+ Modify as content requires.
+ ========================================================================== */
+
+@media only screen and (min-width: 480px) {
+ /* Style adjustments for viewports 480px and over go here */
+
+}
+
+@media only screen and (min-width: 768px) {
+ /* Style adjustments for viewports 768px and over go here */
+
+}
+
+
+
+/* ==|== non-semantic helper classes ========================================
+ Please define your styles before this section.
+ ========================================================================== */
+
+/* For image replacement */
+.ir { display: block; border: 0; text-indent: -999em; overflow: hidden; background-color: transparent; background-repeat: no-repeat; text-align: left; direction: ltr; *line-height: 0; }
+.ir br { display: none; }
+
+/* Hide from both screenreaders and browsers: h5bp.com/u */
+.hidden { display: none !important; visibility: hidden; }
+
+/* Hide only visually, but have it available for screenreaders: h5bp.com/v */
+.visuallyhidden { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }
+
+/* Extends the .visuallyhidden class to allow the element to be focusable when navigated to via the keyboard: h5bp.com/p */
+.visuallyhidden.focusable:active, .visuallyhidden.focusable:focus { clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto; }
+
+/* Hide visually and from screenreaders, but maintain layout */
+.invisible { visibility: hidden; }
+
+/* Contain floats: h5bp.com/q */
+.clearfix:before, .clearfix:after { content: ""; display: table; }
+.clearfix:after { clear: both; }
+.clearfix { *zoom: 1; }
+
+
+
+/* ==|== print styles =======================================================
+ Print styles.
+ Inlined to avoid required HTTP connection: h5bp.com/r
+ ========================================================================== */
+
+@media print {
+ * { background: transparent !important; color: black !important; box-shadow:none !important; text-shadow: none !important; filter:none !important; -ms-filter: none !important; } /* Black prints faster: h5bp.com/s */
+ a, a:visited { text-decoration: underline; }
+ a[href]:after { content: " (" attr(href) ")"; }
+ abbr[title]:after { content: " (" attr(title) ")"; }
+ .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } /* Don't show links for images, or javascript/internal links */
+ pre, blockquote { border: 1px solid #999; page-break-inside: avoid; }
+ thead { display: table-header-group; } /* h5bp.com/t */
+ tr, img { page-break-inside: avoid; }
+ img { max-width: 100% !important; }
+ @page { margin: 0.5cm; }
+ p, h2, h3 { orphans: 3; widows: 3; }
+ h2, h3 { page-break-after: avoid; }
+}
19 static/js/script.js
@@ -0,0 +1,19 @@
+/* Author: YOUR NAME HERE
+*/
+
+$(document).ready(function() {
+
+ socket = new io.Socket(null, {
+ port: 8081
+ ,transports: ['websocket', 'htmlfile', 'xhr-multipart', 'xhr-polling']
+ });
+ socket.connect();
+
+ $('#sender').bind('click', function() {
+ socket.emit('message', 'Message Sent on ' + new Date());
+ });
+
+ socket.on('message', function(data){
+ $('#reciever').append('<li>' + data + '</li>');
+ });
+});
2 views/404.jade
@@ -0,0 +1,2 @@
+h1='Not Found'
+div='Sorry, the page you are looking for does not exist.'
7 views/500.jade
@@ -0,0 +1,7 @@
+!!! 5
+html
+ head
+ title='500 Error'
+ body
+ h1='The Server Encountered and Error'
+ div=error
3 views/index.jade
@@ -0,0 +1,3 @@
+div
+ a(id='sender')='Send a Message'
+ ul(id='reciever')
35 views/layout.jade
@@ -0,0 +1,35 @@
+!!! 5
+//if lt IE 7
+ html.no-js.ie6.oldie(lang='en')
+//if IE 7
+ html.no-js.ie7.oldie(lang='en')
+//if IE 8
+ html.no-js.ie8.oldie(lang='en')
+//[if gt IE 8]><!
+html.no-js(lang='en')
+ //<![end if]
+ head
+ meta(charset='utf-8')
+ meta(http-equiv='X-UA-Compatible', content='IE=edge,chrome=1')
+ title=title
+ meta(name="description", content=description)
+ meta(name="author", content=author)
+ meta(name="viewport", content='width=device-width, initial-scale=1')
+ link(rel='stylesheet', href='/css/style.css')
+ //-script(src='js/libs/modernizr-2.0.6.min.js')
+ body!=body
+ script(src='//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js')
+ script
+ window.jQuery || document.write('<script src="js/libs/jquery-1.7.1.min.js"><\\/script>')
+ //-script(defer, src='js/plugins.js')
+ script(defer, src='/js/script.js')
+ script(defer, src='/socket.io/socket.io.js')
+ script
+ var _gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview'],['_trackPageLoadTime']];
+ (function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.async=1;
+ g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
+ s.parentNode.insertBefore(g,s)}(document,'script'));
+ //if lt IE 7
+ script(defer, src='//ajax.googleapis.com/ajax/libs/chrome-frame/1.0.3/CFInstall.min.js')
+ script(defer)
+ window.attachEvent('onload',function(){CFInstall.check({mode:'overlay'})})

0 comments on commit 7950de3

Please sign in to comment.