/M101X-mongodb-MEAN-stack

M101X: Introduction to MongoDB using the MEAN Stack (edX) course materials and homeworks

Primary LanguageJavaScript

M101X-mongodb-mean-stack

Welcome to M101x, Introduction to MongoDB using the MEAN Stack!

Want to be a full-stack JavaScript engineer? This computer science course will give you a broad introduction to several of the most popular web and mobile app development toolkits, including MongoDB, ExpressJS, AngularJS, and Node.js. Together, these tools are called the “MEAN stack.”

This course will teach you the basic concepts of the MEAN stack while walking you through building a shopping cart application. This online store will enable users to search for products, add them to their cart, and check out using Stripe, an online payment processor. You’ll build your own REST API (Representational State Transfer Application Programming Interface) server from scratch using solid MongoDB schema design principles, as well as a web application using AngularJS and a hybrid mobile application using the Ionic framework.

When you complete the course, you will receive a discount to MongoDB Professional Certification, enabling you to demonstrate your skills, show recruiters and hiring managers your expertise, and earn a spot in the MongoDB Certified Professional Finder.

No prior experience with any of the MEAN stack technologies needed. The only prerequisite is a basic knowledge of the JavaScript programming language.

Prerequisites

Please note that this is an advanced course with the following prerequisites:

  • Experience writing front- and back-end software
  • Basic knowledge of web application architecture
  • Knowledge of JavaScript fundamentals, including callbacks
  • Experience working with SQL or NoSQL databases

Schedule

Part 1: Introduction to MongoDB and NodeJS

  • Starting a standalone mongod and connecting with shell
  • package.json: installing dependencies with npm
  • Connecting to mongodb with NodeJS
  • Inserts and queries using the NodeJS driver
  • NodeJS concurrency and event loop fundamentals
  • require() basics
  • Using mocha for testing
  • package.json: npm run-script
  • Running mocha tests with gulp

Part 2: MongoDB schema design

  • Overview of retail application
  • Introduction to mongoose
  • Schema design principle: store what you query for
  • Schema design principle: principle of least cardinality
  • MongoDB indexes
  • Retail application schema: product
  • Retail application schema: category
  • Retail application schema: user and cart
  • Advanced mongoose features: virtuals
  • Advanced mongoose features: custom setters + sorting by currency

Part 3: NodeJS REST APIs with Express

  • What is a REST API?
  • Introduction to express
  • Dependency injection in NodeJS + ExpressJS
  • API-level TDD
  • Product API
  • Category API
  • Cart API
  • Integrating facebook oauth on the server-side
  • Integrating Stripe for payments
  • Integrating MongoDB Text Search
  • Integrating OpenExchangeRates

Part 4: Building an AngularJS client

  • Introduction: browserify and gulp-browserify
  • What is a single page app?
  • AngularJS philosophy and why it matters
  • Controllers
  • Services
  • Client-side routing
  • Facebook oauth token authentication
  • Category view
  • Product view
  • Cart view

Part 5: Hybrid Mobile Apps with Ionic

  • Introduction to hybrid mobile apps
  • What is the Ionic framework?
  • Code sharing between web client and Ionic app
  • Ionic UI components
  • Routing in Ionic
  • Category view
  • Product view
  • Cart view