O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Web Application Development with MEAN

Book Description

Unlock the power of the MEAN stack by creating attractive and real-world projects

About This Book

  • Learn about the different components that comprise a MEAN application to construct a fully functional MEAN application using the best third-party modules
  • A step-by-step guide to developing the MEAN stack components from scratch to achieve maximum flexibility when building an e-commerce application
  • Build optimum end-to-end web applications using the MEAN stack

Who This Book Is For

This learning path is for web developers who are experienced in developing applications using JavaScript. This course is for developers who are interested in learning how to build modern and multiple web applications using MongoDB, Express, AngularJS, and Node.js.

What You Will Learn

  • Build modern, end-to-end web applications by employing the full-stack web development solution of MEAN
  • Connect your Express application to MongoDB and use a Mongoose model and build a complex application from start to finish in MongoDB
  • Employ AngularJS to build responsive UI components
  • Implement multiple authentication strategies such as OAuth, JsonWebToken, and Sessions
  • Enhance your website’s usability with social logins such as Facebook, Twitter, and Google
  • Secure your app by creating SSL certificates and run payment platforms in a live environment
  • Implement a chat application from scratch using Socket.IO
  • Create distributed applications and use the power of server-side rendering in your applications
  • Extend a project with a real-time bidding system using WebSockets

In Detail

The MEAN stack is a collection of the most popular modern tools for web development. This course will help you to build a custom e-commerce app along with several other applications. You will progress to creating several applications with MEAN.

The first module in this course will provide you with the skills you need to successfully create, maintain, and test a MEAN application. Starting with MEAN core frameworks, this course will explain each framework key concepts of MongoDB, Express, AngularJS, and Node.js. We will walk through the different tools and frameworks that will help expedite your daily development cycles.

After this, the next module will show you how to create your own e-commerce application using the MEAN stack. It takes you step by step through the parallel process of learning and building to develop a production-ready, high-quality e-commerce site from scratch. It also shows you how to manage user authentication and authorization, check multiple payment platforms, add a product search and navigation feature, deploy a production-ready e-commerce site, and finally add your own high-quality feature to the site.

The final step in this course will enable you to build a better foundation for your AngularJS apps. You’ll learn how to build complex real-life applications with the MEAN stack and a few more advanced projects. You will become familiar with WebSockets, build real-time web applications, create auto-destructing entities, and see how to work with monetary data in Mongo. You will also find out how to a build real-time e-commerce application.

This learning path combines some of the best that Packt has to offer in one complete, curated package. It includes content from the following Packt products:

  • MEAN Web Development by Amos Haviv
  • Building an E-Commerce Application with MEAN by Adrian Mejia
  • MEAN Blueprints by Robert Onodi

Style and approach

This course will begin with the introduction to MEAN, gradually progressing with building applications in each framework. Each transition is well explained, and each chapter begins with the required background knowledge.

Downloading the example code for this book. You can download the example code files for all Packt books you have purchased from your account at http://www.PacktPub.com. If you purchased this book elsewhere, you can visit http://www.PacktPub.com/support and register to have the code file.

Table of Contents

  1. Web Application Development with MEAN
    1. Table of Contents
    2. Web Application Development with MEAN
    3. Web Application Development with MEAN
    4. Credits
    5. Preface
      1. What this learning path covers
      2. What you need for this learning path
      3. Who this learning path is for
      4. Reader feedback
      5. Customer support
        1. Downloading the example code
        2. Errata
        3. Piracy
        4. Questions
    6. 1. Module 1
      1. 1. Introduction to MEAN
        1. Three-tier web application development
        2. The evolution of JavaScript
        3. Introducing MEAN
        4. Installing MongoDB
          1. Installing MongoDB on Windows
            1. Running MongoDB manually
            2. Running MongoDB as a Windows Service
          2. Installing MongoDB on Mac OS X and Linux
            1. Installing MongoDB from binaries
            2. Install MongoDB using a package manager
          3. Using the MongoDB shell
        5. Installing Node.js
          1. Installing Node.js on Windows
          2. Installing Node.js on Mac OS X
          3. Installing Node.js on Linux
          4. Running Node.js
        6. Introducing NPM
          1. Using NPM
            1. The installation process of NPM
              1. Installing a package using NPM
              2. Removing a package using NPM
              3. Updating a package using NPM
            2. Managing dependencies using the package.json file
              1. Creating a package.json file
              2. Installing the package.json dependencies
              3. Updating the package.json file
        7. Summary
      2. 2. Getting Started with Node.js
        1. Introduction to Node.js
          1. JavaScript event-driven programming
          2. Node.js event-driven programming
        2. JavaScript closures
        3. Node modules
          1. CommonJS modules
          2. Node.js core modules
          3. Node.js third-party modules
          4. Node.js file modules
          5. Node.js folder modules
        4. Developing Node.js web applications
          1. Meet the Connect module
            1. Connect middleware
            2. Understanding the order of Connect middleware
            3. Mounting Connect middleware
        5. Summary
      3. 3. Building an Express Web Application
        1. Introduction to Express
        2. Installing Express
        3. Creating your first Express application
        4. The application, request, and response objects
          1. The application object
          2. The request object
          3. The response object
        5. External middleware
        6. Implementing the MVC pattern
          1. Application folder structure
            1. Horizontal folder structure
            2. Vertical folder structure
            3. File-naming conventions
            4. Implementing the horizontal folder structure
              1. Handling request routing
              2. Adding the routing file
        7. Configuring an Express application
          1. Environment configuration files
        8. Rendering views
          1. Configuring the view system
          2. Rendering EJS views
        9. Serving static files
        10. Configuring sessions
        11. Summary
      4. 4. Introduction to MongoDB
        1. Introduction to NoSQL
        2. Introducing MongoDB
        3. Key features of MongoDB
          1. The BSON format
          2. MongoDB ad hoc queries
          3. MongoDB indexing
          4. MongoDB replica set
          5. MongoDB sharding
        4. MongoDB shell
        5. MongoDB databases
        6. MongoDB collections
        7. MongoDB CRUD operations
          1. Creating a new document
            1. Creating a document using insert()
            2. Creating a document using update()
            3. Creating a document using save()
          2. Reading documents
            1. Finding all the collection documents
            2. Using an equality statement
            3. Using query operators
            4. Building AND/OR queries
          3. Updating existing documents
            1. Updating documents using update()
            2. Updating documents using save()
          4. Deleting documents
            1. Deleting all documents
              1. Deleting multiple documents
              2. Deleting a single document
        8. Summary
      5. 5. Introduction to Mongoose
        1. Introducing Mongoose
          1. Installing Mongoose
          2. Connecting to MongoDB
        2. Understanding Mongoose schemas
          1. Creating the user schema and model
          2. Registering the User model
          3. Creating new users using save()
          4. Finding multiple user documents using find()
            1. Advanced querying using find()
          5. Reading a single user document using findOne()
          6. Updating an existing user document
          7. Deleting an existing user document
        3. Extending your Mongoose schema
          1. Defining default values
          2. Using schema modifiers
            1. Predefined modifiers
            2. Custom setter modifiers
            3. Custom getter modifiers
          3. Adding virtual attributes
          4. Optimizing queries using indexes
        4. Defining custom model methods
          1. Defining custom static methods
          2. Defining custom instance methods
        5. Model validation
          1. Predefined validators
          2. Custom validators
        6. Using Mongoose middleware
          1. Using pre middleware
          2. Using post middleware
        7. Using Mongoose DBRef
        8. Summary
      6. 6. Managing User Authentication Using Passport
        1. Introducing Passport
          1. Installing Passport
          2. Configuring Passport
        2. Understanding Passport strategies
          1. Using Passport's local strategy
            1. Installing Passport's local strategy module
            2. Configuring Passport's local strategy
          2. Adapting the User model
          3. Creating the authentication views
          4. Modifying the user controller
            1. Displaying flash error messages
              1. Installing the Connect-Flash module
              2. Configuring Connect-Flash module
              3. Using Connect-Flash module
          5. Wiring the user's routes
        3. Understanding Passport OAuth strategies
          1. Setting up OAuth strategies
            1. Handling OAuth user creation
            2. Using Passport's Facebook strategy
              1. Installing Passport's Facebook strategy
              2. Configuring Passport's Facebook strategy
              3. Wiring Passport's Facebook strategy routes
            3. Using Passport's Twitter strategy
              1. Installing Passport's Twitter strategy
              2. Configuring Passport's Twitter strategy
              3. Wiring Passport's Twitter strategy routes
            4. Using Passport's Google strategy
              1. Installing Passport's Google strategy
              2. Configuring Passport's Google strategy
              3. Wiring Passport's Google strategy routes
        4. Summary
      7. 7. Introduction to AngularJS
        1. Introducing AngularJS
        2. Key concepts of AngularJS
          1. The core module of AngularJS
            1. The angular global object
          2. AngularJS modules
            1. Application modules
            2. External modules
            3. Third-party modules
          3. Two-way data binding
          4. Dependency injection
            1. Dependency injection in AngularJS
          5. AngularJS directives
            1. Core directives
            2. Custom directives
          6. Bootstrapping an AngularJS application
            1. Automatic bootstrap
            2. Manual bootstrap
        3. Installing AngularJS
          1. Meeting the Bower dependencies manager
          2. Configuring the Bower dependencies manager
          3. Installing AngularJS using Bower
          4. Configuring AngularJS
        4. Structuring an AngularJS application
        5. Bootstrapping your AngularJS application
        6. AngularJS MVC entities
          1. AngularJS views
          2. AngularJS controllers and scopes
        7. AngularJS routing
          1. Installing the ngRoute module
          2. Configuring the URL scheme
          3. AngularJS application routes
        8. AngularJS services
          1. AngularJS prebundled services
          2. Creating AngularJS services
          3. Using AngularJS services
        9. Managing AngularJS authentication
          1. Rendering the user object
          2. Adding the Authentication service
          3. Using the Authentication service
        10. Summary
      8. 8. Creating a MEAN CRUD Module
        1. Introducing CRUD modules
        2. Setting up the Express components
          1. Creating the Mongoose model
          2. Setting up the Express controller
            1. The error handling method of the Express controller
            2. The create() method of the Express controller
            3. The list() method of the Express controller
            4. The read() middleware of the Express controller
            5. The update() method of the Express controller
            6. The delete() method of the Express controller
            7. Implementing an authentication middleware
            8. Implementing an authorization middleware
          3. Wiring the Express routes
          4. Configuring the Express application
        3. Introducing the ngResource module
          1. Installing the ngResource module
          2. Using the $resource service
        4. Implementing the AngularJS MVC module
          1. Creating the AngularJS module service
          2. Setting up the AngularJS module controller
            1. The create() method of the AngularJS controller
            2. The find() and findOne() methods of the AngularJS controller
            3. The update() method of the AngularJS controller
            4. The delete() method of the AngularJS controller
          3. Implementing the AngularJS module views
            1. The create-article view
            2. The view-article view
            3. The edit-article view
            4. The list-articles view
          4. Wiring the AngularJS module routes
        5. Finalizing your module implementation
        6. Summary
      9. 9. Adding Real-time Functionality Using Socket.io
        1. Introducing WebSockets
        2. Introducing Socket.io
          1. The Socket.io server object
            1. Socket.io handshaking
            2. The Socket.io configuration middleware
          2. The Socket.io client object
          3. Socket.io events
            1. Handling events
            2. Emitting events
          4. Socket.io namespaces
            1. Socket.io server namespaces
            2. Socket.io client namespaces
          5. Socket.io rooms
            1. Joining and leaving rooms
            2. Emitting events to rooms
        3. Installing Socket.io
          1. Configuring the Socket.io server
          2. Configuring the Socket.io session
            1. Installing the connect-mongo and cookie-parser modules
            2. Configuring the connect-mongo module
            3. Configuring the Socket.io session
        4. Building a Socket.io chat
          1. Setting the event handlers of the chat server
          2. Creating the Socket service
          3. Creating the chat controller
          4. Creating the chat view
          5. Adding chat routes
          6. Finalizing the chat implementation
        5. Summary
      10. 10. Testing MEAN Applications
        1. Introducing JavaScript testing
          1. TDD, BDD, and unit testing
          2. Test frameworks
          3. Assertion libraries
          4. Test runners
        2. Testing your Express application
          1. Introducing Mocha
          2. Introducing Should.js
          3. Introducing SuperTest
          4. Installing Mocha
          5. Installing the Should.js and SuperTest modules
          6. Configuring your test environment
          7. Writing your first Mocha test
            1. Testing the Express model
            2. Testing the Express controller
          8. Running your Mocha test
        3. Testing your AngularJS application
          1. Introducing the Jasmine framework
          2. AngularJS unit tests
            1. Introducing Karma test runner
            2. Installing the Karma command-line tool
            3. Installing Karma's dependencies
            4. Configuring the Karma test runner
            5. Mocking AngularJS components
              1. Introducing ngMock
              2. Installing ngMock
            6. Writing AngularJS unit tests
              1. Testing modules
              2. Testing controllers
              3. Testing services
              4. Testing routes
              5. Testing directives
              6. Testing filters
            7. Writing your first unit test
            8. Running your AngularJS unit tests
          3. AngularJS E2E tests
            1. Introducing the Protractor test runner
            2. Installing the Protractor test runner
            3. Configuring the Protractor test runner
            4. Writing your first E2E test
            5. Running your AngularJS E2E tests
        4. Summary
      11. 11. Automating and Debugging MEAN Applications
        1. Introducing the Grunt task runner
          1. Installing the Grunt task runner
          2. Configuring Grunt
            1. Running your application using Grunt
            2. Testing your application using Grunt
            3. Linting your application using Grunt
            4. Watching file changes using Grunt
        2. Debugging Express with node-inspector
          1. Installing node-inspector's grunt task
          2. Configuring node-inspector's grunt task
          3. Running the debug grunt task
        3. Debugging AngularJS with Batarang
          1. Using Batarang
            1. Batarang Models
            2. Batarang Performance
            3. Batarang Dependencies
            4. Batarang options
        4. Summary
    7. 2. Module 2
      1. 1. Getting Started with the MEAN Stack
        1. Introducing the MEAN stack
          1. NodeJS
          2. ExpressJS
          3. MongoDB
          4. AngularJS
        2. Installing the MEAN component
          1. Installing NodeJS
          2. Installing ExpressJS
          3. Installing MongoDB
          4. Installing AngularJS tools
          5. The AngularJS debugger
        3. Understanding the project structure
          1. The file structure
          2. Components
            1. Testing
            2. Tools
            3. Package managers
            4. Bower packages
        4. Previewing the final e-commerce app
          1. Homepage
          2. Marketplace
          3. Backoffice
        5. Understanding the requirements for e-commerce applications
          1. Minimum Viable Product for an e-commerce site
          2. Defining the requirements
        6. Summary
      2. 2. Building an Amazing Store Frontend with AngularJS
        1. Understanding AngularJS and the client directory structure
          1. Client-side structure
          2. Directives
          3. Modules
          4. Routing with AngularUI router
          5. Controllers and scopes
          6. Templates
        2. Laying out the e-commerce MVP
          1. Products
          2. Factories and services
            1. Creating the products factory
          3. Creating the marketplace
          4. Filters
        3. CRUD-ing products with AngularJS
          1. Services
          2. Controllers
          3. Routes
          4. Templates
            1. Partial forms
            2. Product New
            3. Product edit
            4. The product view
            5. The product list
          5. Styling the main page
        4. Summary
      3. 3. Building a Flexible Database with MongoDB
        1. Understanding MongoDB
          1. MongoDB daemons and CLI
          2. Mapping SQL knowledge to MongoDB
            1. Basics concepts
            2. Queries
            3. Aggregators
        2. CRUDing with Mongoose
          1. Schemas
          2. Create
          3. Read
          4. Update
          5. Delete
        3. Exploring a few advanced features in Mongoose
          1. Instance methods
          2. The static methods
          3. Virtuals
          4. Validations
            1. Built-in validations
            2. Custom validations
          5. Middleware
        4. Reviewing models and server-side structure
          1. The server folder
          2. Current Mongoose models
          3. CommonJS Modules
          4. The user model
        5. Summary
      4. 4. Creating a RESTful API with NodeJS and ExpressJS
        1. Getting started with REST
        2. Scaffolding RESTful APIs
        3. Bootstrapping ExpressJS
        4. Understanding routes in ExpressJS
        5. Testing, TDD, BDD, and NodeJS
        6. Creating the product model
          1. Testing the products model
          2. Product model implementation
        7. Implementing the Product API
          1. Testing the API
            1. Index action tests
            2. Show action tests
            3. Creating action tests
            4. Deleting action tests
          2. Product controller
        8. Summary
      5. 5. Wiring AngularJS with ExpressJS REST API
        1. Implementing a RESTful product service
          1. Building the marketplace
        2. Wiring the product controller with new RESTful methods
        3. Uploading product images
          1. Uploading files in Angular
          2. Handling file upload on Node
          3. Seeding products
        4. Testing RESTful APIs in AngularJS
          1. Unit testing
            1. ngMock
            2. Setting up testing
          2. Understanding the Services tests
          3. Testing all $resource methods
          4. Testing the Product Controller
        5. End-to-end testing
          1. Cleaning the database on each e2e run
        6. Summary
      6. 6. Managing User Authentication and Authorization
        1. Getting started with authentication strategies
          1. Session-based authentication
          2. Token-based authentication – using JWT
          3. OAuth authentication
        2. Understanding client-side authentication
          1. Authentication management
          2. The signing up process
        3. Understanding server-side authentication
          1. Authentication with PassportJS
          2. Initializing PassportJS
          3. The user model
          4. Authentication strategies and routes
            1. Local authentication
          5. End-to-end tests for local authentication
        4. Authenticating with Facebook, Google, and Twitter
          1. Facebook
          2. Twitter
          3. Google
        5. Summary
      7. 7. Checking Out Products and Accepting Payment
        1. Setting up the shopping cart
          1. Installing ngCart
          2. Making use of ngCart directives
            1. Add/remove to cart
            2. The cart's summary
        2. The checkout page and Braintree integration
        3. Setting up Braintree endpoint and authentication
          1. The API keys
          2. Gateway
          3. Controller
          4. Router
        4. Creating an order
          1. Modifying the order model
          2. Testing the order model
          3. Using the sandbox account
        5. Summary
      8. 8. Adding Search and Navigation
        1. Adding search to the navigation bar
        2. Adding product categories
          1. Adding the sidebar
          2. Improving product models and controllers
          3. Catalog controller and routes
          4. The catalog model
          5. Seeding products and categories
        3. Implementing the search and navigation functionality
          1. Adding custom $resource methods
          2. Setting up routes and controllers
        4. Wrapping it up
          1. How navigation works on the client side
          2. How search works on the client side
        5. Summary
      9. 9. Deploying a Production-ready e-Commerce App
        1. Building for production
          1. Application environments
          2. Optimizations for production environments
        2. Scaling web applications
          1. Scaling out vertically – one server
          2. Scaling out horizontally – multiple servers
        3. Deploying the application to the cloud
          1. Platform as a Service
            1. Heroku
          2. Virtual Private Servers and Cloud Servers
            1. Digital Ocean
        4. Deploying applications in a multi-server environment
          1. Setting up the app server – NodeJS application
          2. Setting up web server – Nginx server
        5. Performing stress tests
          1. HTTP benchmarking tools
            1. ApacheBench
          2. Benchmarking Heroku deployment
          3. Benchmarking VPS multi-server deployment
        6. Production architecture for scaling NodeJS
          1. Phase 0 – one server
          2. Phase 1 – multiple application instances in one server
          3. Phase 2 – multiple servers
          4. Phase 3 – Micro-services
        7. Next steps on security
        8. Summary
      10. 10. Adding Your Own Features with High Quality
        1. Planning a new feature
          1. Wire framing
          2. Implementing the solution
            1. The HTML page
        2. Testing the new feature
          1. AngularJS testing
        3. Features backlog
        4. Deploying a new version of the app
          1. Zero-downtime deployments
          2. Setting up the zero-downtime production server
          3. Getting started with Capistrano
            1. Installing Capistrano
            2. Understanding Capistrano
          4. Preparing the server
            1. Setting up Capistrano variables
          5. Capistrano tasks
            1. Adding new tasks
            2. Preparing Nginx
            3. Load balancing
            4. Static file server
            5. WebSockets
        5. Summary
    8. 3. Module 3
      1. 1. Contact Manager
        1. Setting up the base application
          1. Folder structure
          2. Server-side package.json
          3. The first application file
          4. Creating the Express configuration file
          5. Setting up mocha for testing
          6. Setting up Mongoose
        2. Managing contacts
          1. Creating the contact mongoose schema
          2. Describing the contact route
            1. Creating a contact
            2. Getting contacts
            3. Getting a contact by ID
            4. Updating a contact
            5. Removing a contact
            6. Running our tests
          3. Implementing the contact routes
            1. Adding all endpoints
            2. Finding a contact by ID
            3. Getting contact information
            4. Updating a contact
            5. Removing a contact
          4. Running the contact test
        3. Securing your application routes
          1. Describing the password helper
          2. Implementing the password helper
          3. Creating the user Mongoose schema
            1. Describing the authentication method from the user model
            2. Implementing the authentication method
          4. Authentication routes
            1. Describing the authentication routes
            2. Integrating Passport
            3. Implementing the authentication routes
          5. Restricting access to contacts routes
        4. Integrating Angular 2 into our application
        5. Granting access to our application
          1. AuthService
          2. User sign-in component
          3. Custom HTTP service
        6. The Contact module
          1. Contact service
          2. Contact component
          3. List contacts component
          4. Creating a contact component
          5. Editing an existing contact
        7. Finishing touch
        8. Summary
      2. 2. Expense Tracker
        1. Setting up the base application
          1. Installing the dependencies
          2. Creating the base configuration files
          3. Creating the main server.js file
        2. Setting up the user section
          1. Describing the user model
          2. Implementing the user model
        3. Authenticating users
          1. Describing the authentication strategies
          2. Implementing the token generation
          3. Persisting tokens in MongoDB
          4. Authentication using HTTP Basic
          5. Adding authentication routes
          6. Verifying users using bearer authentication
            1. Bearer strategy
            2. Protecting resources using tokens
        4. Tracking expenses
          1. Monetary values
          2. The category model
          3. Categories routes
            1. Getting the category by ID
            2. Creating a category
            3. Getting one and all categories
            4. Updating and deleting a category
          4. Defining the expense model
          5. Describing the expense module functionality
          6. CRUD operations for expenses
            1. Create expense
            2. Get expense by ID
            3. Get one expense
            4. Get all expenses
            5. Update expense
            6. Delete expense
          7. Getting the expense balance
        5. Implementing the Angular client application
          1. Bootstrapping the project
        6. Registering users
          1. The auth service
          2. Register component
        7. Sign-in-user component
        8. Common functionalities
          1. Custom HTTP service
          2. Using a single export file
        9. The categories module
          1. Category service
          2. The categories component
          3. Create a new category
          4. List all categories
          5. The category component
        10. The expenses module
          1. Expense service
          2. Filter expenses
          3. Add a new expense
          4. List expenses
          5. Display balance
          6. Expenses component
        11. Summary
      3. 3. Job Board
        1. Setting up the base application
        2. Modifying the user backend
          1. Modifying the user model
          2. An authorization policy
        3. The company backend module
          1. The company model
          2. The company controller
            1. Creating a company
            2. Getting a company by ID
            3. Getting all companies
            4. Updating a company
            5. Adding a company member
            6. Removing a company member
          3. Company routes
        4. The job backend module
          1. The job model
          2. Job controller
            1. Adding a new job for a company
            2. Finding a job by ID
            3. Getting all jobs
            4. Updating a specific job
          3. Job routes
            1. Getting one and all jobs
            2. Creating a route
            3. Updating a route
        5. Job applications
          1. The application model
          2. Controller logic
            1. Applying for a job
            2. Finding a given application by ID
            3. Getting all job applications
            4. Updating an application
            5. Removing an application from a job
        6. Creating a new company
          1. The company service
          2. Creating a company component
        7. Displaying companies
        8. The job module
          1. The job service
          2. The job base component
          3. The jobs component
          4. The job list component
          5. Job details
          6. Adding new jobs
        9. Company details
        10. User profile
          1. Profile backend
          2. Synchronizing profile data
          3. Editing profile data
          4. The profile block component
          5. Extra models
        11. Summary
      4. 4. Chat Application
        1. Setting up the base application
        2. Modifying the user model
        3. The message history data model
          1. The thread schema
          2. The message schema
        4. Thread backend
          1. Thread controller
          2. Defining routes
          3. Message controller
        5. Backend chat service
          1. Chat service implementation
          2. Instant messaging module
        6. Bootstrapping the Angular app
          1. The boot file
          2. App component
        7. Custom data types
          1. User type
          2. Thread type
          3. Message type
        8. Application services
          1. User service
          2. The thread service
          3. The message service
        9. The chat component
        10. The user list component
        11. Displaying threads
          1. Thread component
          2. Thread list component
        12. Messaging
          1. Sending messages
          2. The message component
          3. The message list component
        13. Summary
      5. 5. E-commerce Application
        1. Setting up the base application
        2. Data modeling
          1. Custom money data type
          2. The product model
          3. The order model
          4. The inventory model
        3. The core Service Layer
          1. The product catalog
          2. The inventory manager
          3. Shopping cart
        4. The Auth micro app
          1. Defining the class
          2. The controller
        5. Exposing an API
          1. The Api class
          2. Product controller
          3. Product router
        6. Shared resources
        7. The admin section
          1. The admin micro app
          2. Changing the auth module
          3. Products administration
            1. The product service
            2. List products
            3. The main product component
            4. Add and edit a product
          4. Order handling
            1. Retrieving orders
            2. View and update orders
        8. Building the Storefront
          1. Storefront micro app
          2. Storefront pages
            1. Main layout
            2. List products
        9. Summary
      6. 6. Auction Application
        1. Setting up the base app
        2. What we are building
        3. Data modeling
          1. Auction
          2. Bidder
        4. Auction backend
          1. The Mediator
          2. Auction manager
          3. Auctioneer
          4. Using the service from controller
          5. Accessing data from the e-commerce API
          6. E-commerce client service
        5. Frontend services
          1. Auction service
          2. The socket service
          3. The bid service
          4. The bidder service
        6. The Auction module
          1. The base component
          2. The auction list
          3. The detail page
        7. The bid module
          1. Listing bids
          2. The bid component
        8. Summary
    9. A. Bibliography
    10. Index