Escolar Documentos
Profissional Documentos
Cultura Documentos
Contents ........................................................................................................................................................ 1
Your Guides ................................................................................................................................................... 2
Presentation Resources ................................................................................................................................ 2
Examples ....................................................................................................................................................... 2
Building a Team............................................................................................................................................. 3
A Yoda ....................................................................................................................................................... 3
Some Padawans ........................................................................................................................................ 3
A Protocol Droid........................................................................................................................................ 3
A Qui-Gon Jinn .......................................................................................................................................... 3
Project Tips.................................................................................................................................................... 4
Divide and Conquer .................................................................................................................................. 4
Organize Requirements ............................................................................................................................ 4
Delegate but Update ................................................................................................................................. 4
Go With What You Know .......................................................................................................................... 4
Project Requirements ................................................................................................................................... 5
Project Examples ........................................................................................................................................... 5
Code Teaching Tool ................................................................................................................................... 5
Random Movie Picker ............................................................................................................................... 5
My Ship! .................................................................................................................................................... 5
Community CLI .......................................................................................................................................... 5
Test Database................................................................................................................................................ 6
Users ......................................................................................................................................................... 6
Widgets ..................................................................................................................................................... 6
Resources ...................................................................................................................................................... 7
Great Tutorials .......................................................................................................................................... 7
Server Libraries ......................................................................................................................................... 7
Complete Web Solutions .......................................................................................................................... 7
Database Storage ...................................................................................................................................... 7
Front-End Helpers ..................................................................................................................................... 7
Templates.................................................................................................................................................. 7
Your Guides
Richard Key
Matt Hernandez
Software Craftsman
7 years XP (1 Node.js)
Favorite Pony: Applejack
@fiveisprime
Presentation Resources
Presentation Slides: Google Presentation
Examples GitHub Repository: https://github.com/BusyRich/goingnode
Node.js & MongoDB Hosting: https://modulus.io/
Examples
The examples in the GitHub repository are organized into branches that correspond to
the various examples in the presentation. You can checkout each branch to view and
use the corresponding example.
Hello World
branch helloworld
Mongoose
Express
branch mongo
branch express
Express Views
branch views
All Together
branch master
Building a Team
Good teams are comprised of a mix of skill levels, backgrounds, and ultimately
opinions. These differences create a unique combination of ideas that can solve
problems in a very interesting way. In a way you want a sort of Fellowship of the Web
that can handle a project from all its fronts.
A Yoda
A veteran is required to bring experience to the team, one who knows all
the angels of a project, from server to client. They should not only be able
to come up with tested solutions, but will also help teach and guide those
less experienced members. They are the Yoda or Gandalf of the group.
Some Padawans
On the other side of the coin, it is also good to have one or two novices to
balance out the long developed processes of the veteran. Novices are going
to have a new outlook, a different perspective of technology and
development, which the veteran may have never needed or learned. These
are the Padawans or Hobbits of the group.
A Protocol Droid
Most minds do not think in terms of data, theories, and algorithms. This is
why it is crucial to strive to have that kind of mind in your group. A data guru
who understands the structure of data, how data links together, and more
importantly how to efficiently get all the data needed for a specific use case.
They are the C-3PO or Aragorn of the group.
A Qui-Gon Jinn
It is also important to have someone that understands how to put together
an understandable interface. They understand what people expect from
certain features and how those interactions play out. They are empathetic
to the end user and are not afraid to give input on what will make things
easier for the ultimate use for the product. They are the Qui-Gon Jinn or
Arwen of the group.
Even though these are different lines of approaching a project and often require
different experiences to learn, one team member can fill more than one role. It is also
possible that a couple members can pool their resources to fill a gap in the group. The
key is building a team to fill all these roles, even if all the member do not fit exactly one
of these needs.
Project Tips
Divide and Conquer
This is more than a cheesy adage to describe teamwork. It is a great way to approach
the project as a whole. Instead of thinking of one large system, think in modules, small
tools and sub-systems that communicate and work together to form the larger system.
However, they are also self-contained, which can be replaced with upgrade or rethought
pieces. This is crucial for larger systems.
This also allows easier delegation of tasks because each module can be developed
relatively in parallel. As long as a standardized communication method is agreed upon,
the possibilities are only limited by the number of hands you have to build with.
Organize Requirements
Any self-respecting project will need some defined use cases, technical requirements,
and time tables. In the case of a small, single day project, this takes the form of not a
large document of specifically outlined requirements, but a simple verbal
communication. Never-the-less, it is key to nail down these initial thoughts and organize
them into tasks that need to be done.
Project Requirements
All projects should, at least, follow these loose guidelines to help maximize learning
about Node.js.
Project Examples
These are some cool ideas that you can use for inspiration
My Ship!
In a game where your ship is falling apart faster than one person can repair, you have to
look to a team of friends to help keep your ship running until it can make it to the next
port. Splitting up into roles, each team member is responsible for a piece of the ship
assigned by the captain, taking the form of a mini-game you have to complete. This
could be the engine room, this could be the med-bay, and it could even be the cargo
hold. Half the fun is figuring out what skills your location will require.
Community CLI
Whats more fun than a command line interface? A command line interface where
everyone gets to mess with everyone else. Less of a game and more of a run social
hangout, the community CLI is simply an interface where every command run effects all
connected piers, instead of just yours.
Test Database
Some examples and your application will require connection to a MongoDB database.
In the GitHub repository there is a database dump with the following collections seeded
with test data to help get your data on. The mongorestore command can be used to
import the data.
Users
Good ol user data.
Field
id
username
firstName
lastName
age
email
Data Type
number
string
string
string
number
string
Example
123456
megaawesomedude22
John
Doe
26
awesome@example.com
Widgets
A generalized item that can be used for lots of things.
Field
id
name
description
category
attributes
owner
Data Type
number
string
string
string
object
objectId
Example
434563
Super Widget
Some super widget.
areas
{attrOne:234,attrTwo:important}
ObjectId("52615850f5751af021000001"),
Resources
Node.js Docs
The History of Node.js
Great Tutorials
Server Libraries
Beginner's Guide
Express
Hapi
Strata
Database Storage
Sails
MongoDB
Meteor
Redis
Geddy
Front-End Helpers
Templates
Backbone
EJS
Knockout
Handlebars
AngularJS
HAML