top-meta
top-meta copied to clipboard
Node Refresh
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
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.
Project ideas:
- Custom middleware, such as a logger using fs.
- Custom error handler using nodemailer
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.
- 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.