Part 1: Get acquainted with AngularJS
	Chapter 1: Hello AngularJS
		1.1 Advantages of using AngularJS
		1.2 The AngularJS big picture
		1.3 Build your first AngularJS application
			1.3.1 The module
			1.3.2 Views and controllers
			1.3.3 Services
			1.3.4 Directives
		1.4 Summary
	Chapter 2: Structuring your AngularJS application
		2.1 Hello Angello
		2.2 AngularJS application structure
		2.3 Laying the Angello foundation
		2.4 Basic routes and navigation
		2.5 A few best practices
		2.6 Summary
Part 2: Make something with AngularJS
	Chapter 3: Views and controllers
		3.1 The big picture
		3.2 What is an AngularJS view?
		3.3 What is an AngularJS controller?
			3.3.1 The digest cycle
			3.3.2 Controller as syntax
			3.3.3 AngularJS events
		3.4 Properties and expressions
			3.4.1 Display stories with ngRepeat
			3.4.2 Filters
			3.4.3 Expressions
		3.5 Best practices and testing
		3.6 Summary
	Chapter 4: Models and services
		4.1 What are models and services?
			4.1.1 Hello services
			4.1.2 The service lifecycle
			4.1.3 The different types of services
		4.2 Models with $http
			4.2.1 What is $http?
			4.2.2 Create your first model
			4.2.3 $http convenience methods
		4.3 Promises
			4.3.1 What are promises?
			4.3.2 Promises in action
			4.3.3 $http.success and $http.error
			4.3.4 Elegant sequencing with promises
		4.4 $http interceptors
			4.4.1 Why intercept?
			4.4.2 Interceptors in action
		4.5 Service decorators
			4.5.1 Why decorate?
			4.5.2 Enhanced logging
		4.6 Testing consideration
			4.6.1 Testing a service
			4.6.2 Using $httpBackend to mock server calls
			4.6.3 Best practices
		4.7 Summary
	Chapter 5: Directives
		5.1 Introduction to directives
			5.1.1 What are directives?
			5.1.2 Why we need directives
			5.1.3 Why we want directives
		5.2 Directives 101: a quick foundation
			5.2.1 The user story directive
		5.3 A more advanced feature
			5.3.1 The drag-and-drop feature
			5.3.2 Use the drag-container directive
			5.3.3 Build the controller
			5.3.4 Create the drop-container directive
			5.3.5 Use the drop-container directive
			5.3.6 Build the controller
			5.3.7 Create the drop-target directive
			5.3.8 Use the drop-target directive
			5.3.9 Build the controller
			5.3.10 Create the $dragging service
			5.3.11 Update the StoryboardCtrl
		5.4 Integrating with third-party libraries again!
			5.4.1 Install Flot
			5.4.2 Build the directive
			5.4.3 Use the directive
			5.4.4 Massage our data
			5.4.5 It’s time we had the “isolated scope talk”
			5.4.6 Grand finale: breathe life into Flot
		5.5 Testing a directive
		5.6 Best practices
		5.7 Summary
	Chapter 6: Animations
		6.1 Intro to animations
			6.1.1 How AngularJS handles animations
			6.1.2 The animation-naming convention
			6.1.3 Animations enable!
		6.2 CSS transitions
			6.2.1 Define the base transition
			6.2.2 Define the ng-enter transitions
			6.2.3 Define the ng-leave transitions
			6.2.4 Making it move
		6.3 CSS animations
			6.3.1 Define the base animation classes
			6.3.2 Define the animation keyframes
			6.3.3 Make it move
		6.4 JavaScript animations
			6.4.1 Defining the JavaScript animation
			6.4.2 The JavaScript animation events
			6.4.3 The JavaScript animation class
			6.4.4 TweenMax
			6.4.5 Making it move
		6.5 Testing
		6.6 Best practices
		6.7 Summary
	Chapter 7: Structuring your site with routes
		7.1 The components of AngularJS routes
		7.2 How to create routes in AngularJS
			7.2.1 Create your first route with ngRoute and ngView
			7.2.2 Add ngView
			7.2.3 Set up your route with $routeProvider
			7.2.4 Set up route navigation
			7.2.5 Review
		7.3 Using parameters with routes
			7.3.1 Review
		7.4 Using resolve with routes
			7.4.1 Review
		7.5 Route events
			7.5.1 Review
		7.6 Testing
		7.7 Best practices
		7.8 Summary
	Chapter 8: Forms and validations
		8.1 The big picture: AngularJS form validation
			8.1.1 Extending HTML form elements
			8.1.2 Adding validations
			8.1.3 Form validation and CSS
			8.1.4 Form validation, $setPristine, and $setUntouched
		8.2 Testing
		8.3 Best practices
		8.4 Summary
appendix A: Setting up Karma
	Setting up Karma
	Install Node.js and Node Package Manager (npm)
	Install packages
	Initialize Karma
	Use Karma
appendix B: Setting up a Node.js server
	Setting up a Node.js server
	Install Node.js (with Node Package Manager, a.k.a. npm) and MongoDB
	Initialize the repo
	Update EndpointConfigService.js
	A note about Auth0
appendix C: Setting up a Firebase server
	Setting up a Firebase server
	Set up an account with Firebase
	Create your first app
	Bootstrap your Firebase app to Angello
	A note about Auth0
appendix D: Running the app
	Running the app
	Get the code
	Start the server
	View the app