Tired of building Todo apps? Want to know what it's like to build a real-world application from start to finish?
In this course, you will build a secure and production-ready fullstack typing application from start to finish. Along the way, you will learn core concepts of developing modern web applications like modern React, authentication and authorization, API creation with Serverless Functions, and continuous integration. By then end of this course, you will have the knowledge you need to build amazing applications to share with the world!
Here's what you will learn.
- Modern React including Hooks and the Context API
- Source Control with Git/Github
- CSS in JSS using Styled Components
- Store Data using the Airtable API
- Secure applications using JSON Web Tokens
- Build and Deploy Serverless Functions in Netlify
- Create a Light/Dark Mode
- Deploy to Netlify using Continuous Integration
- welcome to the course
- what we will cover
- links to resources used in the class
- use
create-react-app
to generate starter project - remove unnecessary boilerplate code
- create repository in Github
- connect local code to Github repo
- install React Router
- create page components for Home, Game, Game Over, and High Scores
- create the Navbar component
- what are styled components
- benefits vs downsides to styled components
- create global CSS
- create Main and Container components
- create Styled Copmonents for Navbar
- create StyledLink component
- create Accent component
- create Styled Components for title
- create Styled Component for CTA
- position Heads Up Display (HUD) for score and timer
- style HUD and random character
- add bold styled in global styled
- what are React Hooks
- why are they useful
- use
useState
to track the user's score - use
setInterval
to tsimulate increase in score
- use
useEffect
to start timer - use
setInterval
inside ofuseEffect
- add the logic to update timer
- navigate to GameOver page when timer expires
- add event listener for
keyup
- unregistering event listeners in
useEffect
- use
useState
to track and update user's score as they play the game - update user's score based on keyboard input
- display random character
- what is React Context
- why it's useful/why we need it
- store user's score in a
ScoreContext
after completing a game - display user's score in Game Over page
- prevent users from navigating directly to Game Over page
- sign up
- what is Airtable
- why we are using it here
- create a workspace and base (link an excel doc)
- explore the Airtable API with postman
- what are serverless functions
- why we are using them here
- create a new website in Netlify connected to your repository
- create local netlify.toml file for configuration
- explore the netlify dashboard
- install
netlify dev
to run site and functions locally - create Hello World GET endpoint
- connect local code to site in Netlify
Helpful tools - json viewer in Chrome
- create new GET endpoint
- implement endpoint for retrieving high scores Airtable
Resources
- use
dotenv
package to store private credentials - store Airtable credentials in environment variables
- create fetch Data hook
- call serverless function for high score data
- create new POST endpoint
- implement functionality for saving a score to Airtable
Helpful tools - postman
- create an Airtable utils file to share code from
- attempt to save the user's high score when the game is finished
- display message for whether or not the user got a high score
- why do we need authentication/authorization
- what is Auth0 and how does it help
- sign up for free account
- create tenant and application for our project
- create React Hook to interact with Auth0 for authentication
- implement login/logout functionality
- create ButtonLink component
- make username a required field when registering with Auth0
- what is an Identity Token
- display username in navbar (where to put it)
- what are JSON Web Tokens
- what are access tokens
- when are they used and why
- what is an Access Token
- configure Auth0 Client to retrieve Access Token
- update Fetch request to include Access Token
- create API application in Auth0
- parse Access Token in save high score serverless function
- use jwks-rsa and jsonwebtoken packages to validate access Token
- create css variables for background color, text color, and accent
- create dark and light theme objects that we will swap between
- pass theme to ThemeProvider
- update CSS Variables based on theme
- create React Context for tracking the user's theme
- add toggle theme button to Navbar
- update them on button press
- add ability to save user's theme in local storage
- create button link and linkButton
- create loader styled component
- environment variables
- auth0 callback urls
- next steps and ideas for additional features
- course summary and what we accomplished