Week One

Node.js Fundamentals

Agendas

Monday, January 10

  1. Online class.
  2. Welcome & introductions
  3. Course policies
  4. Course calendar

Wednesday, January 12

  1. Online class.
  2. Professional development for life: Learning with intention
  3. Git as a learning tool
  4. Node.js fundamentals
Week Two

JavaScript Refresher; Node.js and Networking

Agendas

Monday, January 17

  1. No class. Martin Luther King, Jr. holiday

Wednesday, January 19

  1. Online class.
  2. JavaScript refresher (questions)
  3. Asynchronous JavaScript
  4. Node.js project organization
  5. Networking in Node.js
  6. Fetching external resources
Week Three

Node.js and Data Stores

Agendas

Monday, January 24

  1. Node.js and the file system

Wednesday, January 26

  1. Node.js and databases
Week Four

Shaping and Sketching; System-Design Fundamentals and Strategies

Agendas

Monday, January 31

  1. Introduce Project One
  2. Lo-fi prototyping and shaping
  3. Fat-marker sketches
  4. Refining your systems-design thinking

Wednesday, February 2

  1. Determining architecturally significant requirements
  2. Establishing project boundaries
  3. Arriving at narrowly defined problems
Week Five

Web Standards Refresher; ExpressJS-backed Frontend Prototyping

Agendas

Monday, February 7

  1. An all-too-brief refresher on web standards: semantic HTML, progressive enhancement (CSS & JS)

Wednesday, February 9

  1. Introduce Project Two
  2. Components of frontend prototyping
  3. Generating self-signed certificates for HTTPS (Let’s Encrypt docs)
  4. Visual regression testing with BackstopJS
Week Six

One-on-One Conferences; Working Remotely in Teams

Agendas

Monday, February 14

  1. No class. Individual Project One remote consultations with instructor.

Wednesday, February 16

  1. Grooming a Git-centric development environment
  2. Refresher: Git remotes and pull requests; enforcing code reviews
  3. Working on feature branches
  4. Keeping feature branches up to date with git rebase
  5. Properly squashing and merging commits in a PR
Week Seven

Code Quality and Documentation

Agendas

Monday, February 21

  1. Introduce ITMD 567–only Project Five
  2. Emergency library education
  3. Working with JSDoc
  4. Integrating JSDoc output with GitHub Pages

Wednesday, February 23

  1. Including CLI tools in project setup (package.json, the npx command)
  2. Linting with eslint
  3. Stolley’s opinionated eslint configs
  4. Training your nose for “code smell”
  5. Isolating business logic
Week Eight

Automated Testing

Agendas

Monday, February 28

  1. Evaluating testing frameworks; Mocha
  2. Beginning to write tests

Wednesday, March 2

  1. Integrating tests into Git workflows
Week Nine

Catch-Up and Work Week

Agendas

Monday, March 7

  1. Working with environment variables
  2. Doing releases through Git and GitHub
  3. Open Q&A

Wednesday, March 9

  1. NO CLASS. Work day.
  2. Stolley available for help and questions on Basecamp, etc.
Week Ten

Spring Break

Agendas

Monday, March 14

  1. No class.

Wednesday, March 16

  1. No class.
Week Eleven

Database Leftovers; Shifting from Alphas to Betas

Agendas

Monday, March 21

  1. Document-based databases (NoSQL and friends)
  2. Applications and use cases
  3. Implementing document-style databases: MongoDB example
  4. Configuration and connection: what to commit, what to obscure (ENV variables)
  5. Seeding NoSQL-style databases (MongoDB example)

Wednesday, March 23

  1. Developing a production mindset
  2. Thinking about betas and production readiness
  3. Review request: organization (repos, code, etc.)
  4. Review request: progressive enhancement in web apps
Week Twelve

Readying for Production: Interconnection, Configuration, Security

Agendas

Monday, March 28

  1. Server setup and security (Linode example)
  2. Key-based authentication over SSH
  3. Basic firewall (ufw)
  4. Basic testing to ensure server security

Wednesday, March 30

  1. Setting up a shell and Git on the server
  2. Selecting a web server
  3. Using Git to manage configuration files
  4. Basic Nginx configuration
Week Thirteen

Remaining Server Configuration; Work Week

Agendas

Monday, April 4

  1. Researching and implementing an Nginx server-block configuration
  2. Basic git-based deployment with post-receive hooks
  3. Setting up https with Certbot

Wednesday, April 6

  1. No class. Stolley available for questions.
  2. Team conferences Thursday April 15
Week Fourteen

Test-Driven Refactoring

Agendas

Monday, April 11

  1. Introduce Project Four
  2. Refresher on NODE_ENV values
  3. Building tests into the Git lifecycle with hooks; watch the supplemental video

Wednesday, April 13

  1. Testing with databases, especially setup and tear-down
  2. Refresher: progressive enhancement in an app setting
  3. Web API example: localStorage
Week Fifteen

Deployment and Monitoring; CI/CD

Agendas

Monday, April 18

  1. Git-based deployment strategies (custom scripts)
  2. Nginx proxying
  3. Deployment packages and libraries
  4. Robust deployment with pm2
  5. Simple use of pm2 to start, monitor, and keep an app running

Wednesday, April 20

  1. Using TravisCI on GitHub
  2. Including a TravisCI status image in your README file (or elsewhere)
  3. Nginx caching
Week Sixteen

Work Week

Agendas

Monday, April 25

  1. No class.
  2. Stolley available for one-on-one help

Wednesday, April 27

  1. No class.
  2. Stolley available for one-on-one help

Course Information

Instructor