Issue Tracker - Quality Assurance Projects - freeCodeCamp
Channel: Ganesh H
Date: 2020-08-19

This is a full walkthrough for the Issue Tracker project on freeCodeCamp. After setting up a database connection and a mongoose model, we implement some express routes to read, write, modify and delete issue documents, testing our app with some functional tests.

Link to Project : https://www.freecodecamp.org/learn/quality-assurance/quality-assurance-projects/issue-tracker
Written Guide: https://www.notion.so/ganeshh123/Issue-Tracker-fc642bfab7144f5d9bfbd030195a0e60

Full Playlist for this course : https://www.youtube.com/playlist?list=PLhGp6N0DI_1THkXF3kT2kVnN8pR4HCbGp
All Writen Guides for this course : https://www.notion.so/ganeshh123/2362de926605419faadb16f295b772c6
All My Tutorials can be found at : https://www.notion.so/Tutorials-Ganesh-H-293ea420d34a464f9a1907e0405b5f26

00:00 - Introduction
04:04 - Database Connection
08:42 - Test 1 - Prevent cross site scripting (XSS) attacks
10:35 - Creating the Issue Model
14:20 - Test 2 - I can POST /api/issues/{projectname} with form data containing required issue_title, issue_text, created_by, and optional assigned_to and status_text
21:00 - Test 3 - The object saved (and returned) will include all of those fields (blank for optional no input) and also include created_on(date/time), updated_on(date/time), open(boolean, true for open, false for closed), and _id
29:54 - Test 4 - I can PUT /api/issues/{projectname} with a id and any fields in the object with a value to object said object. Returned will be 'successfully updated' or 'could not update '+id. This should always update updated_on. If no fields are sent return 'no updated field sent'
41:22 - Test 5 - I can DELETE /api/issues/{projectname} with a id to completely delete an issue. If no _id is sent return 'id error', success: 'deleted '+id, failed: 'could not delete '+id
45:55 - Test 6 - I can GET /api/issues/{projectname} for an array of all issues on that specific project with all the information for each issue as was returned when posted
49:34 - Test 7 - I can filter my get request by also passing along any field and value in the query(ie. /api/issues/{project}?open=false). I can pass along as many fields/values as I want
55:46 - Test 8 - All 11 functional tests are complete and passing
58:02 - Styling & Final Touches

-————————————————————————————————————-
Node.js is an open-source, cross-platform, JavaScript runtime environment that executes JavaScript code outside a web browser. Node.js lets developers use JavaScript to write command line tools and for server-side scripting—running scripts server-side to produce dynamic web page content before the page is sent to the user's web browser. 

Express.js, or simply Express, is a web application framework for Node.js. It is designed for building web applications and APIs. It has been called the de facto standard server framework for Node.js. Express runs between the server created by Node.js and the frontend pages of a web application. Express also handles an application's routing.

Chai is an assertion library, similar to Node's built-in assert. It makes testing much easier by giving you lots of assertions you can run against your code.

HelmetJS is a type of middleware for Express-based applications that automatically sets HTTP headers to prevent sensitive information from unintentionally being passed between the server and client. While HelmetJS does not account for all situations, it does include support for common ones like Content Security Policy, XSS Filtering, and HTTP Strict Transport Security, among others. HelmetJS can be installed on an Express project from npm, after which each layer of protection can be configured to best fit the project.

freeCodeCamp (also referred to as “Free Code Camp”) is a non-profit organization that consists of an interactive learning web platform, an online community forum, chat rooms, online publications and local organizations that intend to make learning web development accessible to anyone. Beginning with tutorials that introduce students to HTML, CSS and JavaScript, students progress to project assignments that they complete either alone or in pairs. Upon completion of all project tasks, students are partnered with other nonprofits to build web applications, giving the students practical development experience.

Thanks for Watching!