[Eduonix] Learn Nodejs by building 10 projects [2015, ENG]:
http://www.eduonix.com/courses/Web-Development/Learn-Nodejs-by-building-10-Projects-From-Scratch
If you will register on udemy.com and click on "Start Free Preview", аfter some period you can receive (by email) big discount on this course.
I'm working on Linux with node version:
$ node -v
v0.10.41
nodemailer
002 Express Jade Template Setup
# npm install -g express
# npm install -g express-generator
$ express express-websit
$ cd express-website/
$ inpm install
$ npm install --save nodemailer
$ npm start
http://localhost:3000/
http://getbootstrap.com/getting-started/#download
http://getbootstrap.com/examples/starter-template/
http://html2jade.aaron-powell.com/
003 Page Routes Views
004 Nodemailer Setup
To send emails you should be logged in gmail
002 MongoDB Install Setup
$ mongo
> use nodeauth
> db.createCollection('users');
> show collections
> show dbs
> db.users.insert({name:"Brad Traversy",email:"brad@techguywebsolutions.com", username:"devuser1",password:"1234"});
> db.users.insert({name:"John Doe",email:"john@techguywebsolutions.com", username:"devuser2",password:"1234"});
> db.users.find();
> db.users.find().pretty();
> db.users.update({username:"devuser1"},{$set:{email:"devuser1@gmail.com"}});
003 Application Middleware Setup
$ mikdir -p nodeauth
$ cd nodeauth
$ npm install --save mongodb
$ npm install --save mongoose
$ npm install --save connect-flash
$ npm install --save express-validator
$ npm install --save express-session
$ npm install --save express-messages
$ npm install --save passport
$ npm install --save passport-local
$ npm install --save passport-http
$ npm install --save multer@0.1.8
$ npm install
$ npm start
004 Views Layouts Part A
005 Views and Layouts Part B
006 User Registration PART-A
007 User Registration PART-B
$ mongo
> use nodeauth
> db.users.find().pretty();
> db.users.remove({})
008 Password Encryption with Bcrypt
Installation componetns for windows (Open SSL)
$ npm install --save node-gyp
$ npm install --save bcrypt
009 User Authentication with Passport
010 Logout Access Control Part A
011 Logout Access Control Part B
002 Modules, Middleware Template Part A
$ express nodeblog
$ cd nodeblog/
$ npm install --save mongodb
$ npm install --save monk
$ npm install --save connect-flash
$ npm install --save express-validator
$ npm install --save express-session
$ npm install --save express-messages
$ npm install --save multer@0.1.8
$ npm install --save moment
$ npm install
$ mkdir public/images/uploads
$ mongo
> use nodeblog
> db.createCollection('posts');
> db.createCollection('categories');
$ npm start
003 Modules, Middleware Template Part B
004 Homepage Blog Posts Part A
$ mongo
> use nodeblog
> db.posts.insert({title:"Blog Post One", category: "Technology", author:"Brad Traversy", body:"This is the body", date: ISODate()})
> db.posts.insert({title:"Blog Post Two", category: "Fasion", author:"John Doe", body:"This is the body for a fasion post", date: ISODate()})
> db.posts.find().pretty()
$ npm start
005 Homepage Blog Posts Part B
$ npm start
006 Adding Posts PART -A
007 Adding Posts PART -B
$ mongo
> use nodeblog
> db.categories.insert({title:"Technology"})
> db.categories.insert({title:"Fasion"})
Web Text Editor - http://ckeditor.com/ (Version 4.5.3)
$ npm start
008 Adding Categories
$ npm start
009 View Posts By Category
$ mongo
> use nodeblog
> db.posts.remove({})
$ npm start
010 Single Posts Comments Part A
$ npm start
011 Single Posts Comments Part B
$ npm start
002 MongoLab Drywall Setup Part A
mongolab.com
create new database: comevents
create a new user: user1
# npm install -g grunt-cli
https://github.com/jedireza/drywall/
$ git clone https://github.com/jedireza/drywall/ comevents
$ cd comevents/
$ npm install
$ cp config.example.js config.js
$ vi config.js
$ grunt
003 MongoLab Drywall Setup Part B
$ mongo ds027744.mongolab.com:27744/comevents -u user1 -p user1
rs-ds027744:PRIMARY> use comevents
db.admingroups.insert({ _id: 'root', name: 'Root' });
db.admins.insert({ name: {first: 'Root', last: 'Admin', full: 'Root Admin'}, groups: ['root'] });
var rootAdmin = db.admins.findOne();
db.users.save({ username: 'root', isActive: 'yes', email: 'your@email.addy', roles: {admin: rootAdmin._id} });
var rootUser = db.users.findOne();
rootAdmin.user = { id: rootUser._id, name: rootUser.username };
db.admins.save(rootAdmin);
db.users.update({email:'your@email.addy'}, {$set: {email:'your_email@gmail.com'}})
reset password by link:
http://localhost:3000/login/forgot/
004 Event Schema Frontend Display Part A
005 Event Schema Frontend Display Part B
$ mongo ds027744.mongolab.com:27744/comevents -u user1 -p user1
rs-ds027744:PRIMARY> use comevents
rs-ds027744:PRIMARY> show collections
rs-ds027744:PRIMARY> db.createCollection('events');
rs-ds027744:PRIMARY> db.events.insert({name:'Event One', description:'This is the description', date:new Date('July 04,2015'), venu: 'Venu One', startTime:'2:00pm', endTime:'5:00pm', username:'brad'})
rs-ds027744:PRIMARY> db.events.find().pretty();
{
"_id" : ObjectId("560fbefca828926163531a0f"),
"name" : "Event One",
"description" : "This is the description",
"date" : ISODate("2015-07-04T00:00:00Z"),
"venu" : "Venu One",
"startTime" : "2:00pm",
"endTime" : "5:00pm",
"username" : "brad"
}
$ grunt
006 Details Page Adding Events
007 Details Page Adding Events Part B
$ npm install --save connect-flash
$ npm install --save express-messages
$ grunt
008 Edit and Delete Events
009 Edit and Delete Events Part B
$ grunt
Kraken Framework
MongoDB with Mongoose
Dust Templates
Custom Templating
PayPal Integration
002 Kraken Setup
krakenjs.com
# npm install -g yo generator-kraken bower grunt-cli
$ yo kraken
? Name: TekBooks
? Description: Simple shopping cart
? Author: Brad Traversy
? Template library? Dust (via Makara 2)
I recommend do not chose i18n support for this project!
? Include i18n support? Yes
? Front end package manager ? Bower
? CSS preprocessor library? LESS
? JavaScript library? RequireJS
$ cd TekBooks/
$ npm install --save mongodb
$ npm install --save mongoose
$ npm install --save connect-flash
$ npm install --save express-messages
$ npm start
http://localhost:8000/
Foundation
Download Complete
003 Frontend Routes Templates Part A
$ npm start
004 Frontend Routes Templates Part B
005 Frontend Routes Templates Part C
$ npm start
006 Database Model
$ mongo
> use takbooks
> db.createCollection('books');
> db.createCollection('categories');
> db.books.insert({title:"Professional Node.js", description:"Node.js is a powerful and popular new Framework for writing scalable network programs using JavaScript.", category:"NodeJS", author:"Pedro Teixeira", publisher: "Wiley", price:"21.56", cover:"node1.jpg"});
> db.books.insert({title:"Node.js Blueprints", description:"A straightforward, practical guide containing ste-by-tep tutorials that will push your Node.js programming skills to the next level. If you are a web developer", category:"NodeJS", author:"Krasimir Tsonev", publisher: "Packt Publishing", price:"54.79", cover:"node2.jpg"});
007 Display Data From MongoDB Part A
008 Display Data From MongoDB Part B
$ mongo
> use tekbooks
> db.categories.insert({name:"NodeJS"});
009 Admin CRUD Part A
Now we could add new books
http://localhost:8000/manage/books/add
010 Admin CRUD Part B
011 Shopping Cart Part A
$ npm start
012 Shopping Cart Part B
Errors:
- Flash Messages is not Show
- When i tryind to add book without name or price, i get exception: uncaughtException Can't set headers after they are sent.
- Summ total in order is not working.
002 ChatIO User Interface
003 Sending Chat Messages
$ npm install
$ node app
004 Adding Usernames
$ node app
005 App Hosting With Heroku
skipped
Apache Cassandra
002 Install Cassandra Setup Keyspace
Template:
http://www.free-css-templates.com/preview/Simple/
Apache Cassandra (DataStax Community Edition)
http://www.planetcassandra.org/cassandra/
# cqlsh
cqlsh> create KEYSPACE testdb WITH REPLICATION = {'class':'SimpleStrategy', 'replication_factor':3};
cqlsh> describe KEYSPACES;
cqlsh> USE testdb;
cqlsh:testdb> CREATE TABLE users(id uuid, name text, email text, username text, PRIMARY KEY(id, name, email, username));
cqlsh:testdb> DESCRIBE TABLE USERS;
cqlsh:testdb> INSERT INTO users(id, name, email, username) VALUES(now(), 'Brad Traversy', 'techguyinfo@gmail.com', 'techguy');
cqlsh:testdb> Select name from users;
003 FindaDoc User Interface
004 Create App With Layout Part A
# cqlsh
CREATE KEYSPACE findadoc WITH REPLICATION = {'class':'SimpleStrategy', 'replication_factor':3};
CREATE TABLE findadoc.doctors(doc_id uuid, full_name text, category text, practice_name text, street_address text, city text, state text, zip text, new_patients boolean, graduation_year int, PRIMARY KEY(doc_id, full_name, category, city, state));
DESCRIBE KEYSPACES;
DESCRIBE KEYSPACE findadoc;
USE findadoc;
CREATE TABLE categories(cat_id uuid, name text, PRIMARY KEY(cat_id, name));
INSERT INTO categories(cat_id, name) VALUES (now(), 'General');
INSERT INTO categories(cat_id, name) VALUES (now(), 'Neurologist');
INSERT INTO categories(cat_id, name) VALUES (now(), 'Dentist');
INSERT INTO doctors(doc_id, full_name, category, practice_name, street_address, city, state, zip, new_patients, graduation_year) VALUES (now(), 'Thomas Smith MD', 'General', 'Family Medical', '50 Main st', 'Saugus', 'MA', '01906', true, 1997);
INSERT INTO doctors(doc_id, full_name, category, practice_name, street_address, city, state, zip, new_patients, graduation_year) VALUES (now(), 'James Walsh MD', 'General', 'Mass Medical', '10 Congress st', 'Amesbury', 'MA', '01913', true, 1997);
SELECT * FROM doctors;
SELECT * FROM categories;
$ express
$ npm install
$ npm install --save cassandra-driver
$ npm install --save express-session
$ npm install --save express-messages
$ npm install --save connect-flash
005 Create App With Layout Part B
$ npm start
006 Reading From Cassandra Part A
$ npm start
007 Reading From Cassandra Part B
# cqlsh
USE findadoc;
CREATE INDEX on doctors(category);
CREATE INDEX on doctors(state);
$ npm start
008 Search Insert
$ npm start
ERRORS:
flash-messages not works
We can't delete and edit doctors and categories
MySQL
002 MySQL Install App Setup
http://startbootstrap.com/template-overviews/freelancer/
CREATE DATABASE portfolio;
CREATE TABLE `portfolio`.`projects` ( `id` INT(11) NOT NULL AUTO_INCREMENT , `title` VARCHAR(255) NOT NULL , `description` TEXT NOT NULL , `service` VARCHAR(255) NOT NULL , `client` VARCHAR(255) NOT NULL , `image` VARCHAR(255) NOT NULL , `date` DATE NOT NULL , PRIMARY KEY (`id`) ) ENGINE = InnoDB;
INSERT INTO `portfolio`.`projects` (`id`, `title`, `description`, `service`, `client`, `image`, `date`) VALUES (NULL, 'Project1', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed volutpat tincidunt congue. Etiam vel diam pulvinar, commodo lacus vitae, ullamcorper ante. In hendrerit, lacus a mollis molestie, enim arcu pharetra arcu, sit amet lacinia metus odio ac lacus. Proin eu ligula eu mi vehicula accumsan.', 'Web Development', 'client One', '1.jpg', '2015-10-11');
INSERT INTO `portfolio`.`projects` (`id`, `title`, `description`, `service`, `client`, `image`, `date`) VALUES (NULL, 'Project Two', 'Vivamus eu tortor a enim porttitor mollis non a quam. Mauris non mi placerat magna hendrerit sollicitudin eget non ipsum. Quisque quis scelerisque dolor, sit amet dictum sem. ', 'Web Development', 'client Two', '2.jpg', '2015-10-01');
$ express
$ npm install
$ npm install --save mysql
$ npm install --save express-session
$ npm install --save express-messages
$ npm install --save connect-flash
$ npm install --save multer@0.1.8
$ npm install --save moment
$ npm install --save express-validator
$ npm start
localhost:3000
003 S3 - Frontend Project Display Part A
Covert html to Jade:
http://html2jade.aaron-powell.com/
004 S3 - Frontend Project Display Part B
$ npm start
005 Create Backend Add Projects Part A
http://getbootstrap.com/examples/starter-template/
006 Create Backend Add Projects Part B
$ npm start
007 Project Edit Delete
$ npm start
kickstart Frontend Framework
MongoDB
Handlebars Templating
Async
002 App Kickstart Setup Part A
$ express
$ npm install
$ npm install --save bcryptjs
$ npm install --save passport
$ npm install --save passport-http
$ npm install --save passport-local
$ npm install --save mongodb
$ npm install --save mongoose
$ npm install --save handlebars
$ npm install --save express-session
$ npm install --save express-messages
$ npm install --save express-handlebars
$ npm install --save connect-flash
$ npm install --save express-validator
$ mongo
$ use elearn
$ db.createCollection('users');
$ db.createCollection('students');
$ db.createCollection('instructors');
$ db.createCollection('classes');
$ show collections
003 App Kickstart Setup Part B
$ npm start
localhost:3000
http://www.99lime.com/elements/
004 Fetching Classes - Basics Part A
$ mongo
$ use elearn
$ db.classes.insert({title:'HTML 101', description:'Description 1', instructor:'Brad Traversy'});
$ db.classes.insert({title:'Intro to PHP', description:'Description 2', instructor:'John Doe'});
005 Fetching Classes - Basics Part B
$ npm start
006 Fetching Classes - Final Features
$ npm start
007 Registration Login - Basics Part A
$ npm start
008 Registration Login - Basics Part B
$ npm install --save async
009 Registration Login - Final Features
$ npm start
010 Student Class Registrations
$ npm start
011 Instructor Access
$ npm start
012 Class Lessons Part A
$ npm start
013 Class Lessons Part B
$ npm start