joerez / WEB-1-RESTful-and-Resourceful-MVC-Architecture

Learn the fundamentals of the web in Express.js

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Full-Stack-JS-1

Prerequisites (8 hours)

  1. Product College Prework CS & Web Sections

Course Overview

The web is a very fun place to build things! There is no quicker and more readily available way to share information and enter into commerce than the internet, and there's no faster way than to build a website and web server.

In this course the goal will be to explore the major patterns that make up the web and websites. Instead of being bogged down with questions like "what framework/language is the best?" we will just focus on JavaScript and NodeJS and use this enormously popular framework to learn these web patterns that are repeated in every language and framework. For example, any web framework or language will be able to do authentication. We will use the bcrypt-js npm module to encrypt passwords for authentication. In Ruby on Rails you would use the bcrypt ruby gem, and in Python or Django you would use the bcrypt package, and in Elixir you would use the comeonin library (which uses bcrypt under the hood!). Once you have mastered the patterns and major paradigms of the web, you can easily grab another framework in another language and be a success.

The web is becoming ever more JavaScripty. Initially the red-headed stepchild of the internet world, JavaScript has now risen to being, by many metrics, the fastest growing language on the web. Now with the invention of NodeJS, you can write your client and your server in JS creating interesting synergies and benefits across a stack and within a development team. Also with the emergence of tools like React Native, Ionic, Johnny-Five, and many others, JavaScript is becoming a versatile tool across many platforms even outside of the desktop and mobile web browsers.

Competencies & Objectives

  1. Master the foundational tags of semantic HTML.
  2. Master the use of CSS selectors and foundational properties.
  3. Master the fundamentals of JavaScript.
  4. Master the MVC architecture for web server development.
  5. Compare and contrast outside-in and inside-out development processes
  6. Master ExpressJS and extend it by installing, initializing, and using its various middleware packages.
  7. Master and memorize RESTful routes and routing and in general describe the importance of Resourceful web architecture.
  8. Master server-side templating using HandlebarsJS.
  9. Master responding to JSON requests.
  10. Compare and contrast web endpoints responding with HTML templates or JSON data.
  11. Utilize a NoSQL database (in this case MongoDB).
  12. Describe the usefulness of an Object Document Mapper (ODM) (or Object Relationship Mapper ORM).
  13. Master Resource-oriented development of a 0, 1, and a 2 resource application.

Lessons

  1. How this curriculum works. Paradigm-based. Best Practices - Review Competencies - Web Server & Web Framework
  2. REST, URLs, HTTP(S) - Giphy Search App Tutorial
  3. Errors and Debugging - Review of Giphy App Solution - Commenting pseudocode for each step
  4. RESTful & Resourceful Routing (naming conventions for paths, variables, methods) - Start Project Portfolio Tutorial
  5. Document-based Databases, MongoDB Command Line, & RESTful Routing - Index
  6. RESTful Routing - New, Create - demo and work time
  7. Product Planning - User Narratives, Wireframes, Entity Relationship Diagram (ERD)
  8. RESTful Routing - Edit, Update, Delete - demo and work time, Express Middleware
  9. People's Choice Day - Promises? Moment.js? dotenv?
  10. Testing RESTful Routes - Final date to Pick Projects
  11. RESTful APIs & Service Oriented Architecture
  12. Bootstrap - the Grid, Typography, Forms, and Buttons
  13. People's Choice Day
  14. Deploy to Heroku - start custom project work
  15. Project Work & Code Reviews
  16. Project Work & Code Reviews
  17. Project Work & Code Reviews
  18. Project Presentations

Projects

  1. Giphy Search App tutorial. - Done Solo
  2. Rotten Potatoes - Done in Pairs
  3. JavaScript Concentration Game - Optional - Done in Pairs or Solo
  4. An Original Project - Follow the Spec Requirements - Done in Pairs or Solo

Vocabulary & Conventions

  1. The Request-Response Cycle
  2. MVC - Model View Controller
  3. RESTful Routes
  4. Web Server
  5. Web Framework
  6. HTTP
  7. HTTP Action Verbs - PUT, POST, GET, DELETE, PATCH
  8. CRUD
  9. API
  10. JSON
  11. CDN
  12. REPL
  13. Semantic HTML
  14. Document-based database, NoSQL database
  15. Server-side templating
  16. Subtemplate
  17. URL Endpoint, Route, Webhook
  18. Components of a URL - subdomain, domain, top level domain, path, and query string
  19. Automated Testing
  20. Test Driven Development
  21. Assertions
  22. Paradigms, Patterns
  23. Pseudocode

Best Practices

  1. Convention over Configuration (CoC)
  2. Separation of Concerns (SoC)
  3. Outside-in development (User-Centered Development)

Resources

  1. Engineering is Awesome with David Xiang (Youtube)

Evaluation

In order to pass this course, you must

  1. Have fewer than 2 unexcused absences.
  2. Complete 80% of basic challenges from each lesson.
  3. Be able to recall the meaning of all vocabulary and conventions.
  4. Complete the assigned tutorials.
  5. Complete an original project and ship it.
  6. Receive at least 1 code review from the instructor.

About

Learn the fundamentals of the web in Express.js