top-meta icon indicating copy to clipboard operation
top-meta copied to clipboard

Node Refresh

Open twalton83 opened this issue 3 years ago • 4 comments

Title Author Date
NodeJS Course Module Refresh Tatiana Walton 1.23.22

Node Refresh

Summary

The NodeJS course has a majority of its content in the form of a code-along tutorial (Express Library from MDN). There are also some gaps or weaker sections (such as the authentication/authorization sections) and the REST API -> React frontend sections. This course should be refreshed to bring content in house and emphasize view engines less while adding more projects and content that rely on a REST API backend and React frontend. We should not get rid of view engines entirely because of their importance in other stacks.

Motivation

The motivation is to help bring parity between the RoR path and the NodeJS path, and help alleviate common issues seen in the help channels that are rooted in following the MDN code along for the majority of the course. The expected outcome is that learners have a stronger understanding of the MERN stack.

Suggested implementation

  • Removal of MDN Express Library
  • In house content to replace the above tutorial
    • Express basics (routing)
    • Mongoose lesson
    • Combining Express and Mongoose for CRUD
    • MVC pattern
  • Additional projects that leverage a React frontend and Node API
    • API project leveraging outside API (Like in RoR)
    • Authentication and passing JWT/cookies back and forth between frontend and backend
  • Expand upon authentication solutions (OAuth)
  • Expand upon testing with another project
  • Mailers? (Found in RoR, not NodeJS)
  • Retain final project and other content not explicitly mentioned here

Drawbacks

Are there any drawbacks to this proposal? consider the following:

  • This could consume some time depending on how deep we go
  • We might need a small team of individuals well versed in Node to help get this out in a timely manner

Alternatives

I think the content as it stands right now (not in house) is the alternative.

Additional

twalton83 avatar Jan 23 '22 20:01 twalton83

Some suggestions:

  • Serialization
  • Streams/Buffers (more complicated data types)
  • deeper dive into frequently used built-in libraries
  • Redis?
  • ~~Nodemailer~~ already mentioned
  • ESM, maybe at least as an additional resource? Example
  • ~~OAuth~~ already mentioned
  • Image hosting/Cloud storage
  • Serverless/FaaS/Lambdas (this is becoming a hot topic from what I read)
  • When redoing the CRUD tutorial (mdn replacement), let's stick with one templating language instead of giving options. It was exceptionally difficult to do the tutorial using a language I liked better than pug.
  • Perhaps a lesson on very basic architecture, or rather, how to conceptualize a full stack application in something like Notion.

fortypercenttitanium avatar Jan 23 '22 21:01 fortypercenttitanium

Project ideas:

  • Custom middleware, such as a logger using fs.
  • Custom error handler using nodemailer

fortypercenttitanium avatar Jan 23 '22 21:01 fortypercenttitanium

Serverless/FaaS/Lambdas (this is becoming a hot topic from what I read)

I'm only against this because the goal here is parity and bringing things in house, rather than expansion.

The rest is agreeable to me.

twalton83 avatar Jan 24 '22 04:01 twalton83

  • More elaboration on data sanitation, XSS, SQL injection, etc. The current tutorial does a poor job explaining what exactly we are trying to prevent when sanitizing data.

fortypercenttitanium avatar Jan 29 '22 01:01 fortypercenttitanium