
Walk through building and testing React components, implement login flows with tokens and a logged-in user context, and use MSW to create testing utils for private cloud and public cloud.
Walks through building a Fastify Node.js app with PostgreSQL, covering environment variables, migrations, swagger docs, and schema-driven request parsing. Learn unit and integration testing with real database and dockerized development.
Learn to set up a Fastify Node.js application from download to running, including npm install, creating package.json, building a server, registering routes, and enabling logging.
Learn how to set up ESLint for Fastify Node.js, enable syntax checking, enforce code quality with the Airbnb style guide, prefer CommonJS require/export over import/export, and prepare for Prettier formatting.
Set up jest tests for a fastify node.js project, configure the test environment, and validate a basic 200 response with a simple json body.
Push a fastify project to GitHub, configure git ignore, create and connect a repository, and automate a full development workflow with CI/CD, including static code analysis, build, and deployment.
Learn to install and plug in the jest eslint plugin, add it to your project dependencies, and run commands to ensure no errors and proper linting in your fullstack setup.
Install the OpenJDK JDK to run the task for this JavaScript project, then configure JAVA_HOME, download from OpenJDK downloads, and install the appropriate Windows or Mac 64-bit package.
Batect allows you to define your development tasks (building, running, testing, linting and more) in terms of one or more Docker containers, run those tasks quickly and consistently everywhere, and easily share them with your team.
Develop a fastify plugin to apply postgresql migrations on app startup, with production gating, logging, and reporting of applied migrations, and register the plugin to manage the database.
Set up a Postgres container with Batect in a fastify app workflow; configure environment vars, define dependencies, run migrations, and verify database accessibility from the app.
Create and test the first fastify post route by wiring environment-aware config, validating env vars, defining a root-level post handler, inserting data into Postgres, and validating responses with Postman.
Learn to persist a PostgreSQL database by mounting a host volume to a Docker container, map data directories, restart the services, and verify data retention.
Learn how to set up a Fastify post route integration test using docker containers, a dedicated test database, and isolated test data to verify 201 created responses.
learn to run get route integration tests against a real postgres environment, balance end-to-end and unit tests, and verify a 200 response for a get request.
Discover how to define a JSON schema for a product object with id, name, and price, detailing properties, types, and required fields to validate data and describe outputs.
Define a request body schema with JSON schema, enforce required fields like title, and validate nested objects; extend with a response schema to support Swagger generation.
Set up Swagger in a Fastify project, register the Swagger plugin, and auto generate API documentation with endpoints and models you can test in the browser.
Configure a Batect task for continuous integration by adding scripts, running tests in the correct mode, and integrating migrations, environment variables, and open-handle detection to ensure reliable CI workflows.
Deploy a fastify app to Heroku using a docker container, including creating a dockerfile, building the image, logging into the Heroku container registry, and pushing the image to deploy manually.
Demonstrates setting up continuous deployment with GitHub Actions, building and pushing a Docker image to a registry, and deploying to Heroku using environment variables and secrets.
Create a user API with a user table migration script and schema, defining id, first name, middle name, last name, password, email, created_at, updated_at, and tests.
Understand optimistic locking as a concurrency control method using version checks to prevent stale updates. The lecture shows detecting outdated copies, fetching the latest record, and discarding conflicting changes.
Develop a user repository with test-driven development by writing tests for saving a user and returning a user id, handling required fields and errors in a PostgreSQL-backed database.
Design a user service with get user by id and save user functions, using a mocked repository for unit testing in isolation under TDD.
Fix failing tests by ensuring created at and updated at are set and correctly updated, and monitor the pipeline to confirm everything turns green.
Learn to implement integration tests for user endpoints by combining service, repository, and database layers, validating real-data flows beyond standalone unit tests.
Test user endpoints end-to-end with Postman, creating a user via post request and verifying retrieval from the database, while adopting TDD and integrating pipelines for a green build.
Build a job service with save and get jobs using TDD, mock the job repository, and format dates with moment to return transformed job data.
Learn test-driven development of a job posting route in a fastify node app, with a post handler, mock job service, and tests for valid payloads and a future expiry date.
Implement a job post route with TDD, define a post body schema, validate required fields, and use a pre handler to enforce a future expiry date.
Discover how to write a tdd test for the job get route, using a mock service message and validating limit and offset via a query parameter schema.
Set up a fullstack React application by creating a boilerplate project, installing dependencies, and rendering a React component into the root element; learn to deploy on Heroku via GitHub actions.
Install Material UI, icons, skeleton loader, and the Roboto font to style the React app, then build a reusable layout and a header component that renders children.
Learn how Redux manages application state by dispatching actions with a type and payload, which reducers use to produce a new state and trigger UI updates.
Build a Redux Toolkit job feature with a slice and thunks to fetch jobs via axios, manage loading, succeeded, and failed states, and expose selectors for the job data.
Integrate a job slice into a React Redux app by wiring the store, provider, and dispatch, and use selectors, useEffect, and filters to fetch and render jobs.
Understand how browser security blocks cross-origin requests and why the CORS issue matters. Learn to resolve it by registering a CORS declaration and installing a small package.
Develop a React job loading skeleton using Material UI skeletons to display title, description, and date placeholders during pending requests, mirroring a job list item.
Learn to implement a load more button in a React job listing page, using limit and offset, fetch more jobs, show a loading skeleton, and disable the button when appropriate.
Learn to test a job container by mocking API calls with msw and defining rest handlers. Configure server with before all and after each to simulate loading and verify loader.
Learn to write unit tests for a React job list using MSW to mock API responses, generate snapshots, and verify content with getByText.
Learn to write load more (pagination) test cases by simulating limit and offset requests, validating responses, updating snapshots, and verifying button enablement during data loading.
Deploy a React app to Heroku manually by building a container image, pushing to the Heroku container registry, and serving the built app with a Node.js server.
Configure and deploy a React app to Heroku using GitHub Actions by managing tokens, secrets, and environment variables, building, pushing Docker images, and enabling automatic deployment.
Explore how json web tokens enable stateless authentication by issuing a token after user login, attaching it to requests, and validating it with a server secret key.
Implement a fastify login endpoint that accepts email and password, authenticates the user, returns a JWT token with the user payload, and handles login errors.
Learn how to secure the jobs endpoints by adding an authentication layer using JWT tokens, verifying authorization headers, and enforcing token validity to access create and list endpoints.
Implement bearer token authentication and structure payloads as objects. Verify through tests, commit changes, and prepare for adding user login functionality in the next lecture.
Design and test a react login container with email and password fields, a login button, and validations for required fields, email format, and password length using React Testing Library.
Test the login flow by sending email and password to the server, saving the token in local storage, and redirecting to the job listings via MSW mocks.
Learn how to implement axios interceptors in React to attach a JWT from local storage to requests, decode it to set the current user, and render children after loading completes.
Implement a Material UI snackbar to display login errors using alert and severity, wiring state and on close handlers, and customize position with anchor origin for top center.
Develop and wire a register route using React Router DOM by creating a register container and related components, exposing them for use, and verifying the new route.
Master register form validation in React using a validation schema and Formik to enforce required fields, valid email, and minimum password length, with error messaging and tests.
Build a user reducer with Redux Toolkit to handle registration form submission using Axios to call the endpoint, manage pending/fulfilled/error states, store user data and id, and navigate on success.
Display the currently logged-in user in the header and provide a logout link using the user context, icons, and history-based navigation. Protect listing routes by redirecting unauthenticated users to login.
Fix a failing test by ensuring msw intercepts requests and provides mock responses to stabilize tests against the back end in a fullstack react fastify node postgres tdd course.
Create a public route in a React app for login and register pages, render the public cloud component, and redirect authenticated users away from login or register while passing props.
If you know the basics of Javascript, NodeJS and React, the next thing to do is learn how to setup enterprise level application and how to do test driven development and how to write clean code and What is the ideal workflow for developing full stack application.
Why am I focusing on Test driven development ?
Because TDD is a way to develop highly usable software. Following the TDD process, a developer must focus on the test cases before actually coding anything. ... As a result, the developer is more interested in the interface than in the implementation—and that leads to more usable software
In this course we will learn various things as mentioned below:
How to setup actual enterprise level workflow with CI/CD using Github Actions and deploy both application to Heroku and locally we will connect NodeJS application with Postgresql docker container and on prod we will connect with Postrgresql.
How to deploy both frontend and backend on server.
How to maintain different environment like DEV,PROD.
How to maintain database migration script and apply on Postgresql
How to document rest api with swagger.
How to write Unit and Integration testcases for NodeJS application.
How to write Unit testcases for Redux side.
How to write Unite testcases for React.
How to secure application with JWT
Learn How to setup Jwt based authentication with NodeJS and React
The most important thing that we will learn during this course would be test driven development with NodeJS and React & redux and while developing application we will learn best practice for frontend side and backend side.
Last and not least we will write production level code not less than that.