From 59ed9d04cfb5d33ac353cbbdce8a97baa456f800 Mon Sep 17 00:00:00 2001 From: Rose Hip Date: Wed, 7 Dec 2016 10:02:53 -0800 Subject: [PATCH 01/18] first commit, file set up --- .gitignore | 1 + app.js | 46 ++++++++++++++++++ bin/www | 90 ++++++++++++++++++++++++++++++++++++ package.json | 18 ++++++++ public/stylesheets/style.css | 8 ++++ routes/index.js | 9 ++++ routes/users.js | 9 ++++ 7 files changed, 181 insertions(+) create mode 100644 .gitignore create mode 100644 app.js create mode 100755 bin/www create mode 100644 package.json create mode 100644 public/stylesheets/style.css create mode 100644 routes/index.js create mode 100644 routes/users.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/app.js b/app.js new file mode 100644 index 0000000..e1f6864 --- /dev/null +++ b/app.js @@ -0,0 +1,46 @@ +var express = require('express'); +var path = require('path'); +var favicon = require('serve-favicon'); +var logger = require('morgan'); +var cookieParser = require('cookie-parser'); +var bodyParser = require('body-parser'); + +var index = require('./routes/index'); +var users = require('./routes/users'); + +var app = express(); + +// view engine setup +app.set('views', path.join(__dirname, 'views')); +app.set('view engine', 'html'); + +// uncomment after placing your favicon in /public +//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); +app.use(logger('dev')); +app.use(bodyParser.json()); +app.use(bodyParser.urlencoded({ extended: false })); +app.use(cookieParser()); +app.use(express.static(path.join(__dirname, 'public'))); + +app.use('/', index); +app.use('/users', users); + +// catch 404 and forward to error handler +app.use(function(req, res, next) { + var err = new Error('Not Found'); + err.status = 404; + next(err); +}); + +// error handler +app.use(function(err, req, res, next) { + // set locals, only providing error in development + res.locals.message = err.message; + res.locals.error = req.app.get('env') === 'development' ? err : {}; + + // render the error page + res.status(err.status || 500); + res.render('error'); +}); + +module.exports = app; diff --git a/bin/www b/bin/www new file mode 100755 index 0000000..d1decbc --- /dev/null +++ b/bin/www @@ -0,0 +1,90 @@ +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var app = require('../app'); +var debug = require('debug')('cat-chat:server'); +var http = require('http'); + +/** + * Get port from environment and store in Express. + */ + +var port = normalizePort(process.env.PORT || '3000'); +app.set('port', port); + +/** + * Create HTTP server. + */ + +var server = http.createServer(app); + +/** + * Listen on provided port, on all network interfaces. + */ + +server.listen(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/package.json b/package.json new file mode 100644 index 0000000..1e9469f --- /dev/null +++ b/package.json @@ -0,0 +1,18 @@ +{ + "name": "cat-chat", + "version": "0.0.0", + "private": true, + "scripts": { + "start": "nodemon ./bin/www" + }, + "dependencies": { + "body-parser": "~1.15.2", + "cookie-parser": "~1.4.3", + "debug": "~2.2.0", + "express": "~4.14.0", + "morgan": "~1.7.0", + "serve-favicon": "~2.3.0", + "nodemon":"~1.11.0", + "socket.io": "~1.7.1" + } +} diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css new file mode 100644 index 0000000..9453385 --- /dev/null +++ b/public/stylesheets/style.css @@ -0,0 +1,8 @@ +body { + padding: 50px; + font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; +} + +a { + color: #00B7FF; +} diff --git a/routes/index.js b/routes/index.js new file mode 100644 index 0000000..ecca96a --- /dev/null +++ b/routes/index.js @@ -0,0 +1,9 @@ +var express = require('express'); +var router = express.Router(); + +/* GET home page. */ +router.get('/', function(req, res, next) { + res.render('index', { title: 'Express' }); +}); + +module.exports = router; diff --git a/routes/users.js b/routes/users.js new file mode 100644 index 0000000..623e430 --- /dev/null +++ b/routes/users.js @@ -0,0 +1,9 @@ +var express = require('express'); +var router = express.Router(); + +/* GET users listing. */ +router.get('/', function(req, res, next) { + res.send('respond with a resource'); +}); + +module.exports = router; From 2c791a7b6ef16fbd1bdc754195be8f754c021db8 Mon Sep 17 00:00:00 2001 From: Rose Hip Date: Wed, 7 Dec 2016 11:11:10 -0800 Subject: [PATCH 02/18] added pug as view engine; modified package.json; opened websocket --- app.js | 7 ++++++- package.json | 3 ++- views/index.pug | 7 +++++++ 3 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 views/index.pug diff --git a/app.js b/app.js index e1f6864..df40a59 100644 --- a/app.js +++ b/app.js @@ -9,10 +9,15 @@ var index = require('./routes/index'); var users = require('./routes/users'); var app = express(); +var server = require('http').createServer(app); +var io = require('socket.io').listen(server); + +server.listen(8000); + // view engine setup app.set('views', path.join(__dirname, 'views')); -app.set('view engine', 'html'); +app.set('view engine', 'pug'); // uncomment after placing your favicon in /public //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); diff --git a/package.json b/package.json index 1e9469f..f4d2db6 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,9 @@ "debug": "~2.2.0", "express": "~4.14.0", "morgan": "~1.7.0", + "nodemon": "~1.11.0", + "pug": "^2.0.0-beta6", "serve-favicon": "~2.3.0", - "nodemon":"~1.11.0", "socket.io": "~1.7.1" } } diff --git a/views/index.pug b/views/index.pug new file mode 100644 index 0000000..f8b8eeb --- /dev/null +++ b/views/index.pug @@ -0,0 +1,7 @@ +doctype html +html + head + meta(charset='utf-8') + title + body + h1 Hello World! From 95fc451792aafb4c7aeb940a0f14315de545ca88 Mon Sep 17 00:00:00 2001 From: Rose Hip Date: Wed, 7 Dec 2016 12:00:31 -0800 Subject: [PATCH 03/18] finished message functionality --- app.js | 5 +++++ routes/index.js | 1 + views/error.pug | 5 +++++ views/index.pug | 22 +++++++++++++++++++++- 4 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 views/error.pug diff --git a/app.js b/app.js index df40a59..e3c25ca 100644 --- a/app.js +++ b/app.js @@ -19,6 +19,11 @@ server.listen(8000); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'pug'); +io.sockets.on('connection', function(socket){ + socket.on('send-message', function(data){ + io.sockets.emit('new message', data); + }); +}); // uncomment after placing your favicon in /public //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); app.use(logger('dev')); diff --git a/routes/index.js b/routes/index.js index ecca96a..d0a85ba 100644 --- a/routes/index.js +++ b/routes/index.js @@ -6,4 +6,5 @@ router.get('/', function(req, res, next) { res.render('index', { title: 'Express' }); }); + module.exports = router; diff --git a/views/error.pug b/views/error.pug new file mode 100644 index 0000000..4acb4f0 --- /dev/null +++ b/views/error.pug @@ -0,0 +1,5 @@ +doctype html +html + head + body + h1 This is an error page. diff --git a/views/index.pug b/views/index.pug index f8b8eeb..69975ff 100644 --- a/views/index.pug +++ b/views/index.pug @@ -4,4 +4,24 @@ html meta(charset='utf-8') title body - h1 Hello World! + #chat + form#send-message(action='index.html', method='post') + input#message(type='text') + input(type='submit') + script(src='http://code.jquery.com/jquery-latest.min.js') + script(src='/socket.io/socket.io.js') + script. + $(document).ready(function(){ + var socket = io.connect(); + var $form = $('#send-message'); + var $messageBox = $('#message'); + var $chat = $('#chat'); + $messageForm.submit(function(event){ + event.preventDefault(); + socket.emit('send message', messageBox.val()); + $messageBox.val(''); + }); + socket.on('new message', function(){ + $chat.append(data + "
"); + }); + }); From 34d90688164cc88d05df6410c454fd104a18edc8 Mon Sep 17 00:00:00 2001 From: Rose Hip Date: Wed, 7 Dec 2016 13:48:12 -0800 Subject: [PATCH 04/18] working on rendering --- public/stylesheets/style.css | 4 ++++ views/index.pug | 7 ++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index 9453385..3ae824f 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -6,3 +6,7 @@ body { a { color: #00B7FF; } +#chat { +height: 300px; +color: red; +} diff --git a/views/index.pug b/views/index.pug index 69975ff..2878fbc 100644 --- a/views/index.pug +++ b/views/index.pug @@ -2,10 +2,11 @@ doctype html html head meta(charset='utf-8') - title + title Cat Chat + link(href='public/stylesheets/style.css') body #chat - form#send-message(action='index.html', method='post') + form#send-message(action='/', method='post') input#message(type='text') input(type='submit') script(src='http://code.jquery.com/jquery-latest.min.js') @@ -18,7 +19,7 @@ html var $chat = $('#chat'); $messageForm.submit(function(event){ event.preventDefault(); - socket.emit('send message', messageBox.val()); + socket.emit('send message', $messageBox.val()); $messageBox.val(''); }); socket.on('new message', function(){ From 4403937ddef1335481856f7db2079b53c0b37380 Mon Sep 17 00:00:00 2001 From: Rose Hip Date: Wed, 7 Dec 2016 14:00:43 -0800 Subject: [PATCH 05/18] deleted old dependencies and files; added new package.json and dependencies --- app.js | 56 ---------------------- bin/www | 90 ------------------------------------ package.json | 11 +---- public/stylesheets/style.css | 12 ----- routes/index.js | 10 ---- routes/users.js | 9 ---- views/error.pug | 5 -- views/index.pug | 28 ----------- 8 files changed, 1 insertion(+), 220 deletions(-) delete mode 100644 app.js delete mode 100755 bin/www delete mode 100644 public/stylesheets/style.css delete mode 100644 routes/index.js delete mode 100644 routes/users.js delete mode 100644 views/error.pug delete mode 100644 views/index.pug diff --git a/app.js b/app.js deleted file mode 100644 index e3c25ca..0000000 --- a/app.js +++ /dev/null @@ -1,56 +0,0 @@ -var express = require('express'); -var path = require('path'); -var favicon = require('serve-favicon'); -var logger = require('morgan'); -var cookieParser = require('cookie-parser'); -var bodyParser = require('body-parser'); - -var index = require('./routes/index'); -var users = require('./routes/users'); - -var app = express(); -var server = require('http').createServer(app); -var io = require('socket.io').listen(server); - -server.listen(8000); - - -// view engine setup -app.set('views', path.join(__dirname, 'views')); -app.set('view engine', 'pug'); - -io.sockets.on('connection', function(socket){ - socket.on('send-message', function(data){ - io.sockets.emit('new message', data); - }); -}); -// uncomment after placing your favicon in /public -//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); -app.use(logger('dev')); -app.use(bodyParser.json()); -app.use(bodyParser.urlencoded({ extended: false })); -app.use(cookieParser()); -app.use(express.static(path.join(__dirname, 'public'))); - -app.use('/', index); -app.use('/users', users); - -// catch 404 and forward to error handler -app.use(function(req, res, next) { - var err = new Error('Not Found'); - err.status = 404; - next(err); -}); - -// error handler -app.use(function(err, req, res, next) { - // set locals, only providing error in development - res.locals.message = err.message; - res.locals.error = req.app.get('env') === 'development' ? err : {}; - - // render the error page - res.status(err.status || 500); - res.render('error'); -}); - -module.exports = app; diff --git a/bin/www b/bin/www deleted file mode 100755 index d1decbc..0000000 --- a/bin/www +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/env node - -/** - * Module dependencies. - */ - -var app = require('../app'); -var debug = require('debug')('cat-chat:server'); -var http = require('http'); - -/** - * Get port from environment and store in Express. - */ - -var port = normalizePort(process.env.PORT || '3000'); -app.set('port', port); - -/** - * Create HTTP server. - */ - -var server = http.createServer(app); - -/** - * Listen on provided port, on all network interfaces. - */ - -server.listen(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/package.json b/package.json index f4d2db6..003a843 100644 --- a/package.json +++ b/package.json @@ -1,19 +1,10 @@ { "name": "cat-chat", - "version": "0.0.0", + "version": "0.0.1", "private": true, - "scripts": { - "start": "nodemon ./bin/www" - }, "dependencies": { - "body-parser": "~1.15.2", - "cookie-parser": "~1.4.3", - "debug": "~2.2.0", "express": "~4.14.0", - "morgan": "~1.7.0", "nodemon": "~1.11.0", - "pug": "^2.0.0-beta6", - "serve-favicon": "~2.3.0", "socket.io": "~1.7.1" } } diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css deleted file mode 100644 index 3ae824f..0000000 --- a/public/stylesheets/style.css +++ /dev/null @@ -1,12 +0,0 @@ -body { - padding: 50px; - font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; -} - -a { - color: #00B7FF; -} -#chat { -height: 300px; -color: red; -} diff --git a/routes/index.js b/routes/index.js deleted file mode 100644 index d0a85ba..0000000 --- a/routes/index.js +++ /dev/null @@ -1,10 +0,0 @@ -var express = require('express'); -var router = express.Router(); - -/* GET home page. */ -router.get('/', function(req, res, next) { - res.render('index', { title: 'Express' }); -}); - - -module.exports = router; diff --git a/routes/users.js b/routes/users.js deleted file mode 100644 index 623e430..0000000 --- a/routes/users.js +++ /dev/null @@ -1,9 +0,0 @@ -var express = require('express'); -var router = express.Router(); - -/* GET users listing. */ -router.get('/', function(req, res, next) { - res.send('respond with a resource'); -}); - -module.exports = router; diff --git a/views/error.pug b/views/error.pug deleted file mode 100644 index 4acb4f0..0000000 --- a/views/error.pug +++ /dev/null @@ -1,5 +0,0 @@ -doctype html -html - head - body - h1 This is an error page. diff --git a/views/index.pug b/views/index.pug deleted file mode 100644 index 2878fbc..0000000 --- a/views/index.pug +++ /dev/null @@ -1,28 +0,0 @@ -doctype html -html - head - meta(charset='utf-8') - title Cat Chat - link(href='public/stylesheets/style.css') - body - #chat - form#send-message(action='/', method='post') - input#message(type='text') - input(type='submit') - script(src='http://code.jquery.com/jquery-latest.min.js') - script(src='/socket.io/socket.io.js') - script. - $(document).ready(function(){ - var socket = io.connect(); - var $form = $('#send-message'); - var $messageBox = $('#message'); - var $chat = $('#chat'); - $messageForm.submit(function(event){ - event.preventDefault(); - socket.emit('send message', $messageBox.val()); - $messageBox.val(''); - }); - socket.on('new message', function(){ - $chat.append(data + "
"); - }); - }); From 611c963fb3d8b2cb15614986bdb8753ee686c5c7 Mon Sep 17 00:00:00 2001 From: Rose Hip Date: Wed, 7 Dec 2016 14:23:01 -0800 Subject: [PATCH 06/18] added html elements and first scripts to send message to server --- app.js | 10 ++++++++++ index.html | 33 +++++++++++++++++++++++++++++++++ npm-debug.log | 24 ++++++++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 app.js create mode 100644 index.html create mode 100644 npm-debug.log diff --git a/app.js b/app.js new file mode 100644 index 0000000..19f8e19 --- /dev/null +++ b/app.js @@ -0,0 +1,10 @@ +var express = require('express'), + app = express(), + server = require('http').createServer(app), + io = require('socket.io').listen(server); + + server.listen(3000); + + app.get('/', function(request, response){ + response.sendfile(__dirname + '/index.html'); + }); diff --git a/index.html b/index.html new file mode 100644 index 0000000..20944d1 --- /dev/null +++ b/index.html @@ -0,0 +1,33 @@ + + + + + + + +
+
+ + +
+ + + + + + + diff --git a/npm-debug.log b/npm-debug.log new file mode 100644 index 0000000..cce8c52 --- /dev/null +++ b/npm-debug.log @@ -0,0 +1,24 @@ +0 info it worked if it ends with ok +1 verbose cli [ '/usr/local/bin/node', '/usr/local/bin/npm', 'start' ] +2 info using npm@3.10.10 +3 info using node@v7.2.1 +4 verbose stack Error: missing script: start +4 verbose stack at run (/usr/local/lib/node_modules/npm/lib/run-script.js:151:19) +4 verbose stack at /usr/local/lib/node_modules/npm/lib/run-script.js:61:5 +4 verbose stack at /usr/local/lib/node_modules/npm/node_modules/read-package-json/read-json.js:356:5 +4 verbose stack at checkBinReferences_ (/usr/local/lib/node_modules/npm/node_modules/read-package-json/read-json.js:320:45) +4 verbose stack at final (/usr/local/lib/node_modules/npm/node_modules/read-package-json/read-json.js:354:3) +4 verbose stack at then (/usr/local/lib/node_modules/npm/node_modules/read-package-json/read-json.js:124:5) +4 verbose stack at /usr/local/lib/node_modules/npm/node_modules/read-package-json/read-json.js:311:12 +4 verbose stack at /usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:78:16 +4 verbose stack at tryToString (fs.js:425:3) +4 verbose stack at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:412:12) +5 verbose cwd /Users/rosehip/projects/cat-chat +6 error Darwin 15.6.0 +7 error argv "/usr/local/bin/node" "/usr/local/bin/npm" "start" +8 error node v7.2.1 +9 error npm v3.10.10 +10 error missing script: start +11 error If you need help, you may report this error at: +11 error +12 verbose exit [ 1, true ] From 88186ad6dd0bae977b214baa7ba6d7ea683689ee Mon Sep 17 00:00:00 2001 From: Rose Hip Date: Wed, 7 Dec 2016 16:04:35 -0800 Subject: [PATCH 07/18] fixed render to HTML issue; added css styles to index.html --- app.js | 18 +++++++++----- index.html | 67 ++++++++++++++++++++++++++++++++++++++++++++------- npm-debug.log | 32 +++++++++++++++--------- package.json | 3 +++ styles.css | 39 ++++++++++++++++++++++++++++++ 5 files changed, 132 insertions(+), 27 deletions(-) create mode 100644 styles.css diff --git a/app.js b/app.js index 19f8e19..d7e2eed 100644 --- a/app.js +++ b/app.js @@ -1,10 +1,16 @@ -var express = require('express'), - app = express(), - server = require('http').createServer(app), - io = require('socket.io').listen(server); +var express = require('express'); +var app = express(); +var server = require('http').createServer(app); +var io = require('socket.io').listen(server); - server.listen(3000); + server.listen(5000); app.get('/', function(request, response){ - response.sendfile(__dirname + '/index.html'); + response.sendFile(__dirname + '/index.html'); + }); + + io.sockets.on('connection', function(socket){ + socket.on('send message', function(data) { + io.sockets.emit('new message', data); + }); }); diff --git a/index.html b/index.html index 20944d1..ef8f8d6 100644 --- a/index.html +++ b/index.html @@ -2,31 +2,80 @@ - + Simple Chat + + -
+
    +
  • +
- - + +
- - + + diff --git a/npm-debug.log b/npm-debug.log index cce8c52..bde740e 100644 --- a/npm-debug.log +++ b/npm-debug.log @@ -2,14 +2,13 @@ 1 verbose cli [ '/usr/local/bin/node', '/usr/local/bin/npm', 'start' ] 2 info using npm@3.10.10 3 info using node@v7.2.1 -4 verbose stack Error: missing script: start -4 verbose stack at run (/usr/local/lib/node_modules/npm/lib/run-script.js:151:19) -4 verbose stack at /usr/local/lib/node_modules/npm/lib/run-script.js:61:5 -4 verbose stack at /usr/local/lib/node_modules/npm/node_modules/read-package-json/read-json.js:356:5 -4 verbose stack at checkBinReferences_ (/usr/local/lib/node_modules/npm/node_modules/read-package-json/read-json.js:320:45) -4 verbose stack at final (/usr/local/lib/node_modules/npm/node_modules/read-package-json/read-json.js:354:3) -4 verbose stack at then (/usr/local/lib/node_modules/npm/node_modules/read-package-json/read-json.js:124:5) -4 verbose stack at /usr/local/lib/node_modules/npm/node_modules/read-package-json/read-json.js:311:12 +4 verbose stack Error: Failed to parse json +4 verbose stack Unexpected token 'd' at 8:4 +4 verbose stack "dependencies": { +4 verbose stack ^ +4 verbose stack at parseError (/usr/local/lib/node_modules/npm/node_modules/read-package-json/read-json.js:390:11) +4 verbose stack at parseJson (/usr/local/lib/node_modules/npm/node_modules/read-package-json/read-json.js:79:23) +4 verbose stack at /usr/local/lib/node_modules/npm/node_modules/read-package-json/read-json.js:48:5 4 verbose stack at /usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:78:16 4 verbose stack at tryToString (fs.js:425:3) 4 verbose stack at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:412:12) @@ -18,7 +17,16 @@ 7 error argv "/usr/local/bin/node" "/usr/local/bin/npm" "start" 8 error node v7.2.1 9 error npm v3.10.10 -10 error missing script: start -11 error If you need help, you may report this error at: -11 error -12 verbose exit [ 1, true ] +10 error file /Users/rosehip/projects/cat-chat/package.json +11 error code EJSONPARSE +12 error Failed to parse json +12 error Unexpected token 'd' at 8:4 +12 error "dependencies": { +12 error ^ +13 error File: /Users/rosehip/projects/cat-chat/package.json +14 error Failed to parse package.json data. +14 error package.json must be actual JSON, not just JavaScript. +14 error +14 error This is not a bug in npm. +14 error Tell the package author to fix their package.json file. JSON.parse +15 verbose exit [ 1, true ] diff --git a/package.json b/package.json index 003a843..71818c2 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,9 @@ "name": "cat-chat", "version": "0.0.1", "private": true, + "scripts": { + "start": "node app.js" + }, "dependencies": { "express": "~4.14.0", "nodemon": "~1.11.0", diff --git a/styles.css b/styles.css new file mode 100644 index 0000000..e25c83d --- /dev/null +++ b/styles.css @@ -0,0 +1,39 @@ +* { +margin: 0; +padding: 0; +box-sizing: border-box; +} +body { +font: 13px Helvetica, Arial; +} +#send-message { +background: #000; +padding: 3px; +position: fixed; +bottom: 0; +width: 100%; +} +#message { +border: 0; +padding: 10px; +width: 90%; +margin-right: .5%; +} +#form-button { +width: 9%; +background: rgb(130, 224, 255); +border: none; +padding: 10px; +} +#message { +list-style-type: none; +margin: 0; +padding: 0; +} +#messages li { +padding: 5px 10px; +margin: 50px; +} +#messages li:nth-last-child(odd) { +background: #EEE; +} From e9cf1451c7417a362a3ef351c5e0211a4105a07f Mon Sep 17 00:00:00 2001 From: Rose Hip Date: Wed, 7 Dec 2016 17:30:28 -0800 Subject: [PATCH 08/18] deleted css file --- styles.css | 39 --------------------------------------- 1 file changed, 39 deletions(-) delete mode 100644 styles.css diff --git a/styles.css b/styles.css deleted file mode 100644 index e25c83d..0000000 --- a/styles.css +++ /dev/null @@ -1,39 +0,0 @@ -* { -margin: 0; -padding: 0; -box-sizing: border-box; -} -body { -font: 13px Helvetica, Arial; -} -#send-message { -background: #000; -padding: 3px; -position: fixed; -bottom: 0; -width: 100%; -} -#message { -border: 0; -padding: 10px; -width: 90%; -margin-right: .5%; -} -#form-button { -width: 9%; -background: rgb(130, 224, 255); -border: none; -padding: 10px; -} -#message { -list-style-type: none; -margin: 0; -padding: 0; -} -#messages li { -padding: 5px 10px; -margin: 50px; -} -#messages li:nth-last-child(odd) { -background: #EEE; -} From 8e1ba8b680a6b86a6d9c348cb0450c084468708f Mon Sep 17 00:00:00 2001 From: lizzkats Date: Wed, 7 Dec 2016 18:01:01 -0800 Subject: [PATCH 09/18] Adding username functionality --- app.js | 5 +++++ index.html | 47 ++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 45 insertions(+), 7 deletions(-) diff --git a/app.js b/app.js index d7e2eed..ffd1d60 100644 --- a/app.js +++ b/app.js @@ -3,6 +3,8 @@ var app = express(); var server = require('http').createServer(app); var io = require('socket.io').listen(server); +var nicknames = []; + server.listen(5000); app.get('/', function(request, response){ @@ -10,6 +12,9 @@ var io = require('socket.io').listen(server); }); io.sockets.on('connection', function(socket){ + socket.on('new user', function(data, callback){ + //8:35 + }); socket.on('send message', function(data) { io.sockets.emit('new message', data); }); diff --git a/index.html b/index.html index ef8f8d6..9383584 100644 --- a/index.html +++ b/index.html @@ -35,6 +35,14 @@ list-style-type: none; margin: 0; padding: 0; + } + #content-wrap{ + display: none; + } + #chat-wrap { + float: left; + border: 1px solid #000; + } /*#messages li { padding: 5px 10px; @@ -47,13 +55,28 @@ -
    -
  • -
-
- - -
+
+

Enter a Username:

+

+
+ + +
+
+
+
+
    +
  • +
+
+ + +
+
+
+ +
+
@@ -61,11 +84,21 @@ @@ -83,33 +85,48 @@ diff --git a/npm-debug.log b/npm-debug.log deleted file mode 100644 index bde740e..0000000 --- a/npm-debug.log +++ /dev/null @@ -1,32 +0,0 @@ -0 info it worked if it ends with ok -1 verbose cli [ '/usr/local/bin/node', '/usr/local/bin/npm', 'start' ] -2 info using npm@3.10.10 -3 info using node@v7.2.1 -4 verbose stack Error: Failed to parse json -4 verbose stack Unexpected token 'd' at 8:4 -4 verbose stack "dependencies": { -4 verbose stack ^ -4 verbose stack at parseError (/usr/local/lib/node_modules/npm/node_modules/read-package-json/read-json.js:390:11) -4 verbose stack at parseJson (/usr/local/lib/node_modules/npm/node_modules/read-package-json/read-json.js:79:23) -4 verbose stack at /usr/local/lib/node_modules/npm/node_modules/read-package-json/read-json.js:48:5 -4 verbose stack at /usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:78:16 -4 verbose stack at tryToString (fs.js:425:3) -4 verbose stack at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:412:12) -5 verbose cwd /Users/rosehip/projects/cat-chat -6 error Darwin 15.6.0 -7 error argv "/usr/local/bin/node" "/usr/local/bin/npm" "start" -8 error node v7.2.1 -9 error npm v3.10.10 -10 error file /Users/rosehip/projects/cat-chat/package.json -11 error code EJSONPARSE -12 error Failed to parse json -12 error Unexpected token 'd' at 8:4 -12 error "dependencies": { -12 error ^ -13 error File: /Users/rosehip/projects/cat-chat/package.json -14 error Failed to parse package.json data. -14 error package.json must be actual JSON, not just JavaScript. -14 error -14 error This is not a bug in npm. -14 error Tell the package author to fix their package.json file. JSON.parse -15 verbose exit [ 1, true ] From d1ca50d5e319e7c0d8b8dfe3bb8b4fb1c9e6b239 Mon Sep 17 00:00:00 2001 From: lizzkats Date: Thu, 8 Dec 2016 11:23:19 -0800 Subject: [PATCH 11/18] Adds some styling --- app.js | 43 +++++++++++++++++-------------- index.html | 46 +++++++++++++++++++++++---------- public/styles.css | 65 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 121 insertions(+), 33 deletions(-) create mode 100644 public/styles.css diff --git a/app.js b/app.js index 0b9eaa7..421cd4e 100644 --- a/app.js +++ b/app.js @@ -2,27 +2,32 @@ var express = require('express'); var app = express(); var server = require('http').createServer(app); var io = require('socket.io').listen(server); - var nicknames = []; - server.listen(5000); - app.get('/', function(request, response){ - response.sendFile(__dirname + '/index.html'); - }); +server.listen(5000); - io.sockets.on('connection', function(socket){ - socket.on('new user', function(data, callback){ - if (nicknames.indexOf(data) != -1) { - callback(false); - } else { - callback(true); - socket.nickname = data; - nicknames.push(socket.nickname); - io.sockets.emit('usernames', nicknames); - } - }); - socket.on('send message', function(data) { - io.sockets.emit('new message', data); - }); + +app.get('/', function(request, response){ + response.sendFile(__dirname + '/index.html'); +}); + +// app.use(express.static('public')) +// +// app.use('/static', express.static(path.join(__dirname, 'public'))) + +io.sockets.on('connection', function(socket){ + socket.on('new user', function(data, callback){ + if (nicknames.indexOf(data) != -1) { + callback(false); + } else { + callback(true); + socket.nickname = data; + nicknames.push(socket.nickname); + io.sockets.emit('usernames', nicknames); + } +}); + socket.on('send message', function(data) { + io.sockets.emit('new message', data); }); +}); diff --git a/index.html b/index.html index e510a59..d58cd3b 100644 --- a/index.html +++ b/index.html @@ -3,21 +3,19 @@ Simple Chat + -
@@ -72,14 +88,16 @@
-
- - -
+
+
+ + +
+
diff --git a/public/styles.css b/public/styles.css new file mode 100644 index 0000000..b0039f1 --- /dev/null +++ b/public/styles.css @@ -0,0 +1,65 @@ +* { +margin: 0; +padding: 0; +box-sizing: border-box; +} +body { +font: 13px Helvetica, Arial; +} +ul { + list-style: none; +} +#send-message { +border: 1px solid red; +padding: 3px; +} +#message { +border: 0; +padding: 10px; +width: 90%; +margin-right: .5%; +} +#form-button { +width: 9%; +background: rgb(130, 224, 255); +border: none; +padding: 10px; +} +#message { +list-style-type: none; +} +#chat-wrap { + display: none; +} +#chat-wrap, #users { + margin: 0 auto; + display: inline-block; + width: 49%; + border: 1px solid red; + padding: 30px; +} +#users { + float: right; + +} +#content-wrap { + margin: 0 auto; + padding: 30px; + display: block; + border: 1px solid #000; + width: 100%; +} +#message-wrap { + clear: both; + width: 100%; + position: fixed; + bottom: 0; + margin: 0 auto; +} +/*#messages li { +padding: 5px 10px; +margin: 50px; +} +#messages li:nth-last-child(odd) { +background: #EEE; +}*/ From 214cf8d721817904142bd6126220eda2835d0955 Mon Sep 17 00:00:00 2001 From: lizzkats Date: Thu, 8 Dec 2016 14:02:25 -0800 Subject: [PATCH 12/18] username functionality --- app.js | 12 ++++++++++-- index.html | 3 ++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app.js b/app.js index 421cd4e..68602d5 100644 --- a/app.js +++ b/app.js @@ -24,10 +24,18 @@ io.sockets.on('connection', function(socket){ callback(true); socket.nickname = data; nicknames.push(socket.nickname); - io.sockets.emit('usernames', nicknames); + updateNicknames(); } }); +function updateNicknames() { + io.sockets.emit('usernames', nicknames); +} +socket.on('disconnect', function(data) { + if(!socket.nickname) return; + nicknames.splice(nicknames.indexOf(socket.nickname), 1); + updateNicknames(); +}) socket.on('send message', function(data) { - io.sockets.emit('new message', data); + io.sockets.emit('new message', {msg: data, nick: socket.nickname}); }); }); diff --git a/index.html b/index.html index d58cd3b..4bf4408 100644 --- a/index.html +++ b/index.html @@ -141,9 +141,10 @@ }); socket.on('new message', function(data) { - $chat.append(data + '
'); + $chat.append('' + data.nick + ': ' + data.msg + '
'); }); + }); //Document ready close From 756793b706947f76729484ce45a946534cc4d37d Mon Sep 17 00:00:00 2001 From: Rose Hip Date: Thu, 8 Dec 2016 14:17:43 -0800 Subject: [PATCH 13/18] restored post lunch branches --- index.html | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/index.html b/index.html index 4bf4408..285ee25 100644 --- a/index.html +++ b/index.html @@ -7,6 +7,7 @@ + + -
+
+
+

Simple Chat Room

+
+

Enter a Username:

-
-
-
+ + @@ -119,7 +243,8 @@ socket.emit('new user', $nickBox.val(), function(data){ if(data){ $('#nick-wrap').hide(); - $('#content-wrap').removeClass(); + $('#content-wrap').removeClass('hidden'); + $('#message-wrap').removeClass('hidden'); } else { $nickError.html('That username is already taken! Try again.'); } From de18f1fea0d61c59f9f9646e2adfc75d77739f6f Mon Sep 17 00:00:00 2001 From: Rose Hip Date: Thu, 8 Dec 2016 17:50:18 -0800 Subject: [PATCH 15/18] minor css fixes --- index.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.html b/index.html index db21acf..227d1c5 100644 --- a/index.html +++ b/index.html @@ -94,6 +94,8 @@ } p, li { font-size: 1em; + padding: 1%; + line-height: 1.5; } #nick-wrap { position: fixed; From 2b283840349af80fb66269f1ffaad14e3794721c Mon Sep 17 00:00:00 2001 From: Rose Hip Date: Fri, 9 Dec 2016 08:45:00 -0800 Subject: [PATCH 16/18] add css styles details to make app feel lighter --- img-noise-361x370.png | Bin 0 -> 119628 bytes index.html | 51 ++++++++++++++++++++++++------------------ 2 files changed, 29 insertions(+), 22 deletions(-) create mode 100644 img-noise-361x370.png diff --git a/img-noise-361x370.png b/img-noise-361x370.png new file mode 100644 index 0000000000000000000000000000000000000000..4291bee9bde17a7e88020d3f2a2677a9bd945ea4 GIT binary patch literal 119628 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

Ie6<*8>OyM#MpG~8Cy-P}p+|F?4&H%7-6;Oe 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

%jNvg(ph|>*dzogDJ}EF;2Pk+B|4{Iu-lA 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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html index 227d1c5..54ac1f7 100644 --- a/index.html +++ b/index.html @@ -64,7 +64,8 @@ html { font-family: 'Roboto','Noto Sans', sans-serif; background-color: #00BCD4; - color: white; + color: #F0FDFF; + font-weight: lighter; } ul { @@ -73,17 +74,18 @@ .top-banner { background-color: #00BCD4; padding: 25px; + margin-bottom: 40px; text-align: center; width: 100%; - -webkit-box-shadow: 6px 7px 21px -6px rgba(0,0,0,0.76); - -moz-box-shadow: 6px 7px 21px -6px rgba(0,0,0,0.76); - box-shadow: 6px 7px 21px -6px rgba(0,0,0,0.76); + -webkit-box-shadow: 6px 7px 21px -6px rgba(255,255,255,0.76); + -moz-box-shadow: 6px 7px 21px -6px rgba(255,255,255,0.76); + box-shadow: 6px 7px 21px -6px rgba(255,255,255,0.76); } .title { font-family: 'Roboto', sans-serif; font-weight: 900; - color: white; + color: #F0FDFF; text-shadow: 2px 2px #0097A7; } h1 { @@ -96,11 +98,12 @@ font-size: 1em; padding: 1%; line-height: 1.5; + } #nick-wrap { - position: fixed; - bottom: 50%; - right: 33%; + position: absolute; + top: 50%; + right: 30%; } #nickname { padding: 5px; @@ -108,23 +111,26 @@ } #message { border: 0; - padding: 1%; + padding: 2%; width: 90%; margin-left: 1%; list-style-type: none; - -webkit-box-shadow: 6px 7px 21px -6px rgba(0,0,0,0.76); - -moz-box-shadow: 6px 7px 21px -6px rgba(0,0,0,0.76); - box-shadow: 6px 7px 21px -6px rgba(0,0,0,0.76); + -webkit-box-shadow: 6px 7px 21px -6px rgba(255,255,255,0.76); + -moz-box-shadow: 6px 7px 21px -6px rgba(255,255,255,0.76); + box-shadow: 6px 7px 21px -6px rgba(255,255,255,0.76); margin-bottom: 2%; } - #form-button { + .form-button { + border-radius: 50%; width: 8%; border: none; padding: 10px; - -webkit-box-shadow: 6px 7px 21px -6px rgba(0,0,0,0.76); - -moz-box-shadow: 6px 7px 21px -6px rgba(0,0,0,0.76); - box-shadow: 6px 7px 21px -6px rgba(0,0,0,0.76); - background-color: rgba(255,255,255, .2); + padding-right: 50px; + text-align: center; + -webkit-box-shadow: 6px 7px 21px -6px rgba(255,255,255,0.76); + -moz-box-shadow: 6px 7px 21px -6px rgba(255,255,255,0.76); + box-shadow: 6px 7px 21px -6px rgba(255,255,255,0.76); + background-color: rgba(255,255,255,0.76); margin-bottom: 2%; } #chat-wrap { @@ -139,9 +145,9 @@ width: 49%; padding: 30px; background-color: rgba(255,255,255, .2); - -webkit-box-shadow: 6px 7px 21px -6px rgba(0,0,0,0.76); - -moz-box-shadow: 6px 7px 21px -6px rgba(0,0,0,0.76); - box-shadow: 6px 7px 21px -6px rgba(0,0,0,0.76); + -webkit-box-shadow: 6px 7px 21px -6px rgba(255,255,255,0.76); + -moz-box-shadow: 6px 7px 21px -6px rgba(255,255,255,0.76); + box-shadow: 6px 7px 21px -6px rgba(255,255,255,0.76); } #users { float: right; @@ -159,6 +165,7 @@ bottom: 0; margin: 0 auto; width: 100%; + padding: 30px; } .hidden { visibility: hidden; @@ -195,7 +202,7 @@

Simple Chat Room

- +
@@ -222,7 +229,7 @@

Users

From 89f5b6f198e3e08b27f5ab41781bc4d96c9b11ad Mon Sep 17 00:00:00 2001 From: drA Date: Fri, 9 Dec 2016 08:47:26 -0800 Subject: [PATCH 17/18] Update README.md --- README.md | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 46b46e8..937e828 100644 --- a/README.md +++ b/README.md @@ -1 +1,56 @@ -# cat-chat \ No newline at end of file +# Gruesome-Lynx chat-room-app + +## Description + +Build a simple, live, multi-user chat room - that's it! + +Building this app will require use of HTML, CSS, JavaScript, homebrew/npm, Node.js, and other technologies or libraries (i.e. jQuery, Bootstrap, etc.) as needed. Developers will also have the opportunity to explore ["material design"](https://material.google.com/#) principles to make what could be a visually boring task more interesting. + + +## Context + +Chat rooms are ubiquitous to online community building projects. If that is your sort of thing, chances are that you will want to build a chat room at some point in the near future. This project asks you to build your first, simple, live chat room for multiple users, and includes a number of stretch goals to allow you to make it more fancy (such as allowing users to log in, storing chat histories, creating chat threads, etc.), as allowed by time and experience. + +Inspiration for this project can be found in [this tutorial](http://www.oreilly.com/pub/e/2266) by Peter Cooper. + + +## Specifications + +- [ ] Include a text input area and a chat window in a simple yet appealing User Inerface. +- [ ] Use of material design principles to make chat room "feel" good. +- [ ] Build Node.js server( and install dependencies, using brew and/or npm) . +- [ ] Type message into a text box. +- [ ] On enter/return, message is sent to chat window (and text input box is cleared). +- [ ] Chat window displays multi-user's messages in real time using [websockets](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API). +- [ ] Attach user info (like a name) to each message; in order to do this, developers will need to ask for and save a user's name, or assign user a handle or number. + + +## Stretch Goals +- [ ] Deploy using Heroku. +- [ ] Store chat histories for later retrieval (create persistence layer) . +- [ ] Enable users to search chat histories. +- [ ] Create chat threads. +- [ ] Enable user to chat privately with any other user. +- [ ] Enable users to log in (using Github oAuth, for example). + + +### Required + +_Do not remove these specs - they are required for all goals_. + +- [ ] The artifact produced is properly licensed, preferably with the [MIT license][mit-license]. + +## Quality Rubric + +- More than one user is able to chat back and forth using this web app: 50 point value +- Creative use of two dimensional space to make chat room "feel" good (e.g., through material design principles): 25 point value +- Readable, DRY Code: 25 point value + +--- + + + +Creative Commons License +
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. + +[mit-license]: https://opensource.org/licenses/MIT From e1e56c29d8717e0afa12ce0fa0cd212f7722139e Mon Sep 17 00:00:00 2001 From: drA Date: Fri, 9 Dec 2016 08:48:34 -0800 Subject: [PATCH 18/18] Update README.md --- README.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 937e828..31c6566 100644 --- a/README.md +++ b/README.md @@ -16,20 +16,19 @@ Inspiration for this project can be found in [this tutorial](http://www.oreilly. ## Specifications -- [ ] Include a text input area and a chat window in a simple yet appealing User Inerface. -- [ ] Use of material design principles to make chat room "feel" good. -- [ ] Build Node.js server( and install dependencies, using brew and/or npm) . -- [ ] Type message into a text box. -- [ ] On enter/return, message is sent to chat window (and text input box is cleared). -- [ ] Chat window displays multi-user's messages in real time using [websockets](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API). -- [ ] Attach user info (like a name) to each message; in order to do this, developers will need to ask for and save a user's name, or assign user a handle or number. +- [x] Include a text input area and a chat window in a simple yet appealing User Inerface. +- [x] Use of material design principles to make chat room "feel" good. +- [x] Build Node.js server( and install dependencies, using brew and/or npm) . +- [x] Type message into a text box. +- [x] On enter/return, message is sent to chat window (and text input box is cleared). +- [x] Chat window displays multi-user's messages in real time using [websockets](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API). +- [x] Attach user info (like a name) to each message; in order to do this, developers will need to ask for and save a user's name, or assign user a handle or number. ## Stretch Goals - [ ] Deploy using Heroku. - [ ] Store chat histories for later retrieval (create persistence layer) . - [ ] Enable users to search chat histories. -- [ ] Create chat threads. - [ ] Enable user to chat privately with any other user. - [ ] Enable users to log in (using Github oAuth, for example).