Welcome and Introductions

Week One

Wednesday, January 20 Video

  1. Welcome & introductions
  2. Course policies
  3. Course calendar

Shaping and Sketching; System-Design Fundamentals and Strategies

Week Two

Monday, January 25 Video

  1. Introduce Project One
  2. Lo-fi prototyping and shaping
  3. Fat-marker sketches

Wednesday, January 27 Video

  1. Refining your systems-design thinking
  2. Determining architecturally significant requirements
  3. Establishing project boundaries
  4. Arriving at narrowly defined problems

One-on-One Conferences; Web Standards Refresher

Week Three

Monday, February 1

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

Wednesday, February 3 Video

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

Working Remotely in Teams; Frontend Prototyping System Architecture

Week Four

Monday, February 8 Video

  1. Grooming a Git-centric development environment
  2. Refresher: Git remotes and pull requests; enforcing code reviews
  3. Working on feature branches

Wednesday, February 10 Video

  1. Keeping feature branches up to date with git rebase
  2. Properly squashing and merging commits in a PR
  3. Components of frontend prototyping
  4. Generating self-signed certificates for HTTPS (Let’s Encrypt docs)
  5. Visual regression testing with BackstopJS

More Prototyping; Refining and Scaffolding System Architecture

Week Five

Monday, February 15 Video

  1. Inspecting API data and supplementing the documentation yourself
  2. From sketches to frontend prototypes
  3. Determining architecturally significant system features via frontend prototyping

Wednesday, February 17 Video

  1. Emergency Library Education
  2. Prototyping with asynchronous JavaScript functions and mock APIs

Frameworks and Dependencies; Web Scraping

Week Six

Monday, February 22 Video

  1. Software as a Service (SaaS) architecture
  2. API-first design
  3. Framework selection: starting from No
  4. Abbreviated tour of an example framework (ExpressJS)
  5. Tracking dependencies (manifests, semantic versioning)

Wednesday, February 24 Video

  1. Microservices
  2. Scraping data from HTML
  3. Spending plenty of time determining and sketching data structures

Code Quality and Documentation

Week Seven

Monday, March 1 Video

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

Wednesday, March 3 Video

  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

Automated Testing

Week Eight

Monday, March 8 Video

  1. Evaluating testing frameworks; Mocha
  2. Beginning to write tests
  3. Integrating tests into Git workflows

Wednesday, March 10

  1. No class. University COVID Study Day.

Catch-Up and Work Week

Week Nine

Monday, March 15 Video

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

Wednesday, March 17

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

Data Structures & Stores; Configuring, Securing, and Seeding Databases

Week Ten

Monday, March 22 Video

  1. Flat-file storage; applications and use cases
  2. Relational databases (SQL and friends)
  3. Applications and use cases

Wednesday, March 24 Video

  1. Introduce Project Three
  2. Implementing SQL-style databases: SQLite example
  3. Seeding SQL-style databases

Database Leftovers; Shifting from Alphas to Betas

Week Eleven

Monday, March 29 Video

  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 31 Video

  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

Readying for Production: Interconnection, Configuration, Security

Week Twelve

Monday, April 5 Video

  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, April 7 Video

  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

Remaining Server Configuration; Work Week

Week Thirteen

Monday, April 12 Video

  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 14

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

Test-Driven Refactoring

Week Fourteen

Monday, April 19 Video

  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 21 Video

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

Deployment and Monitoring; CI/CD

Week Fifteen

Monday, April 26 Video

  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 28 Video

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

Work Week

Week Sixteen

Monday, May 3

  1. Catch-up day or new topics
  2. Open Q&A

Wednesday, May 5

  1. Open Q&A