Clone the project at https://github.com/flaviocopes/node-course-project-newsletter and implement the following coding challenges.

  • Design a nicer page to be sent when another user tries to reach /admin. You can use another browser to test it, or your browser in incognito/private mode.
  • Add the option to edit the emails subject
  • Right now when a user presses “Send”, the email is sent as-is. Filter and validate the email body in the /send POST endpoint. Require at least 10 characters and remove any script tag.
  • When sending the email, there is no direct feedback. The user can click the button twice or more. Immediately mark it as disabled, and show a spinner.
  • Add an indication of how many emails were sent, and how many remain. Consider the use of web sockets for this.
  • Disallow duplicates in email submission, send a custom error message from Node to the frontend, and display an “email already registered” message to the user.
  • Handle double opt-in for forms. Send an email when a new email is entered, with a confirmation link.
  • Acknowledge and fix the problem with CSRF and JWT. Reference this blog post Where to Store JWTs - Cookies vs HTML5 Web Storage

…see you on December 4 for the full course launch!