
Welcome to the course. We have a lot to cover and a lot to learn. This video will give you the overview about the course, tools used in the course , and the requirements for this course.
This video covers all the tools we will be using for this course
This video covers the details of the project we will be creating, otherwise known as requirements.
In this video, we will setup our NodeJS project using the node package manager and then add our GitHub repository to our project and add our project to the GitHub repository.
In this video, we will review the Server/Listener/Router design pattern and create our first module the server.
In this video, we will create our second module of our design pattern, the request listener.
In this video, we create our last module of our design pattern, the router.
In this video, we will install MongoDB as a Docker Container. Use the following command in your terminal to install: docker run -d --name NodeJS_FS_MongoDB -p 27017:27017 mongo:latest
In this video, we will explore the Mongoose library. We will write our first model and connect to MongoDB.
In this video, we write our database functionality and explore our requirements for registering a user.
In this video, we explore Test Driven Development and write our first Unit Test.
In this video, we will write unit test against our asynchronous database functions
In this video, we will finish the registration route, encrypt our password and save the user to the database
In this video, we will cover the requirements and functionality for the login route.
In this video, we will use a different approach to create our login functionality in our route. We will create our jsonwebtoken for authorization.
Command to create jwt secret is: require("crypto").randomBytes(64).toString('hex')
In this video. we will refactor our registration route into it's own service and instead of using thenables for our promises, we will use try/catch
In this video, we will write Postman Integration Tests for Login and Registration Backend. We will test the payload, status, and message. We will also write negative tests against our registration and login.
In this video, we will use our design pattern, (Server/Listener/Router), to create a frontend
In this video, we will go to startbootstrap.com and pick our template for our frontend. We will break out the single page application into int's individual pages.
In this video, we will create our navigation and footer for our site
In this video, we will create our forms for the registration page and login page.
In this video, we will clean up our forms by adding spacing and making it appealing.
In this video, we tackle client validation. We will write our validation for the the registration page and use regex to test the values for validation.
Regex for this video:
firstName, lastName, city: !/^[A-Za-z]+$/
address: !/^[\d{1,5}\s\w.\s(\b\w*\b\s){1,2}\w*\.']+$/
state: !/(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])/
zipCode: !/^\d{5}$/
email: !/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/
password and confirm password: !/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$/
In this video, we will add the validation to our register post route and script our register.ejs to show any errors and/or messages
In this video, we will write the validation for the login, add the validation to our login post route and script the messages and errors into the login page
In this video, we will code a service to call the backend and post our registration form
In this video, we will call the backend to log our user in on the frontend
In this video, we will introduce sessions and the express-session. We will use session to add wanted data and control and navigation menu.
In this video ,we will add the functionality to logout and destroy our session.
In this video, we will unit test our frontend service.
In this video, we will install Jenkins in Docker. Configure Jenkins by adding NodeJS and Clover for our test reports. We will also add the backend project to Jenkins so we have stable builds.
The cli command to run jenkins in docker:
docker run --name NodeJS_FS_Jenkins -p 8080:8080 -p 50000:50000 -d -v jenkins_home:/var/jenkins_home jenkins:jenkins:lts
In this video, we will add our frontend project to Jenkins to monitor our build stability
In this video, we will create the book model, write our database functionality to get all the books and set up your service to call the database
In this video, we will write a new route to return to a user all the books titles and ids so they can create a drop down and use it to post an author
In this video, we will write the code to find a book by id. We will also move our hard coded messages into its own messages module and create a success template to avoid duplicating code.
In this video, we will save or post a book to the MongoDb database.
In this video, we will use Mongooses' update One method to update a collection in the database
In this video we will delete a book by Id from the database
In this video, we will write our Integration test for GET and GET by ID in Postman. We already wrote the test in the POST several videos ago.
In this video, we will write our final Integration Tests for PUT and DELETE
In this video, We will create the author model and all the CRUD methods for the database
In this video, we will save the author to the database
In this video, we create the Get Author route and Get Author By Id route
In this video, we will finish our CRUD operations on the Author and write our Patch and Delete routes
In this video, we write our Integration test for GET author and GET author by Id in Postman.
In this video, we write our Integration tests for PATCH and DELETING an author in Postman.
In this video, we will add authorization middleware to our book and author routes. If a user is not authorized then they do not have access to the CRUD operations on the Book and Author.
In this video, we will write our unit test for the books CRUD operations and mock them
In this video, we will write unit tests for our author database functionality
In this video, we will get introduced to SwaggerUi and write the documentation for the users routes
In this video, we continue our documentation and start the book documents. We will write the POST and GET book for the documentation
In this video, we continue our documentation, we will write the GET, PUT and DELETE book for the documentation
In this video, we will write the complete author SwaggerUi configuration.
In this video, we will refactor our router to use handler and templates
In this video, we will continue our refactoring. We will refactor the post routes into handlers
In this video, I realized we made a mistake and we will fix it and test it here
In this video, we will create our book router and book handler so we can get our book page to render
In this video, we setup our books service to use axios and call the backend to get all the books. We will then return those to our books page and display our books.
In this video, we will create our post book handler with the add book page and post our book to the backend to be saved. We will then add the book to our array of books and display them on our books page.
In this video, we will create our edit book webpage and write the code to render that page
In this video, we will update our book on the edit book page and send it to the backend to update the database. We will then call get books and get all the books and the updated one as well
In this video, we refactor our post and get books. We remove the books from the session and replace it with calls to the backend
In this video, we will create our delete book link on the books page. We will add the functionality when the link is clicked we call the backend to delete the book. We will call the backend again and get the remaining books
In this video, we noticed our message coming back for get books is wrong when there are no books. So, we add logic to send the correct message
In this video, we will write our unit test for the book service. Since the backend and axios have their own unit test, we can mock all our tests.
In this video, we will start our authors frontend work. We will call the backend to get all authors and render them on our authors page
In this video, we will write the functionality to delete an author from the backend and re-render the new authors.
In this video, we will render the edit author page. We will call get author by id and render the author on the page for updating
In this video, we will update author information on the backend and return the updated authors to our authors page.
In this video, we will add the author page to be rendered with titles of books. We will call the backend to get the ids and titles of the books so we can create a dropdown with those values
In this video, we will post an author to the backend and retrieve our new collection of authors
In this video, we will display our book information about our author on the authors page
In this video, we will create our error page which is a static 404 page
In this video, we will start unit testing our authors service. We will start with get all authors
In this video, we will finish unit testing the author service by testing post, get author by id, update author by id, delete author by id, and add the get book ids to our book service tests
In this video, we will look at what selenium testing is and demo our site
In this video, we install the chrome driver, and start coding. We will code so we can bring up our home page
In this video, we will test the registration page
In this video, we write the test for the login page
In this video, we will test going to the books pages and then going to the add book page.
In this video, we will test adding a book and saving it in the database
In this video, we will test clicking to the edit book page and updating the book information in the database.
In this video, we will render the authors page and then render the add author page
In this video, we will add an author and save it to the database
In this video, we will render the edit author page and then edit the author and update the database
In this video, we will delete an author and delete a book
In this video, we will render the about page and logout successfully
In this video, we will give a brief introduction to the Dockerfile. We will not use docker compose since those are more advanced docker practices.
In this video, we will clean up our backend project and run our tests in case anything changed and correct any changes. We will write our Dockerfile and .dockerignore file and deploy our project to docker.
In this video, we will write our Dockerfile and .dockerignore file and deploy the frontend to docker and test our app end to end.
In this video, we cleaned up our git repo, removed the .env file and confirmed our Jenkins builds are still stable
In this video, we will redeploy our backend project without the .env file
In this video, we will redeploy our frontend project without the .env file
In this video, we recap everything we did and wrap up our great bootcamp
94 videos and almost 24 hours of content to master the NodeJS Bootcamp
Learn to create a complete frontend and backend, (Full Stack), Bookstore projects using NodeJS, ExpressJs and the Node Design Pattern (Server/Listener/Router). We will modularize our application so we can reuse, extend and easily test our modules.
We will use bcrypt to encrypt passwords and use JSON Web Token for authorizing users to see certain pages on our site.
Use CRUD operations on MongoDB to persist books and authors. You will be introduced to Mongoose. A MongoDB client wrapper that add schema functionality, validation, and normalization to our non normalized database.
Take advantage of Jenkins for CI/CD tool to run our test and let us continually integrate our application and test seamlessly and with full confidence our codebase is solid and well tested.
We will use Swagger to create our documentation for our backend. Swagger tools takes the hard work out of generating and maintaining your API docs, ensuring your documentation stays up-to-date as your API evolves.
Test the frontend and backend using the Jest Testing framework that has a focus on simplicity. We will use Postman to create our integration tests for the backend. Postman assist in setting up automated API tests to test the different endpoints in your API will help catch bugs as quickly as possible.
Automated Selenium test for the frontend. Selenium has fast and easy onboarding. Works across all applications in the tech stack and finds bugs quickly with visual debugging.
Beginner experience, JavaScript experience preferred since we will be using ES6 syntax.
Calling all excited developers who are tired of creating Monolith applications or just frontend applications from some YouTuber who has no clue how to code correctly, then this course is for you.