├── readme.md ├── BJS ├── 17 - Scope - 375521681.md ├── 36 - Tabs - 375637559.md ├── 37 - BEDMAS - 375641401.md ├── 44 - Maps - 375664034.md ├── 45 - Arrays - 375665991.md ├── 18 - Hoisting - 375523766.md ├── 19 - Closures - 375524347.md ├── 42 - Objects - 375651444.md ├── 67 - Promises - 375827621.md ├── 78 - Modules - 375926026.md ├── 83 - Security - 375777421.md ├── 70 - Async Await - 375830382.md ├── 76 - Dad Jokes - 375922139.md ├── 33 - Etch-a-Sketch - 375563758.md ├── 16 - Debugging Tools - 375515412.md ├── 28 - The DOM - CARDIO - 375548924.md ├── 60 - The New Keyword - 375814494.md ├── 61 - The this Keyword - 375815225.md ├── 7 - Types - Strings - 375479513.md ├── 8 - Types - Numbers - 375483126.md ├── 9 - Types - Objects - 375484973.md ├── 13 - Functions - Custom - 375490580.md ├── 59 - Building a Slider - 375810901.md ├── 12 - Functions - Built in - 375488640.md ├── 34 - Click Outside Modal - 375570811.md ├── 41 - Intervals and Timers - 375649960.md ├── 6 - Types - Introduction - 375479347.md ├── 65 - bind, call and apply - 375824844.md ├── 72 - Async Await Prompt UI - 375832620.md ├── 25 - The DOM - Creating HTML - 375540088.md ├── 29 - Events - Event Listener - 375553405.md ├── 3 - Running and Loading JS - 375471583.md ├── 4 - Variables and Statements - 375473287.md ├── 84 - Web Speech Colours Game - 375816951.md ├── 10 - Types - null and undefined - 375485398.md ├── 43 - Object Reference vs Values - 375653808.md ├── 56 - Sarcastic Text Generator - 375770658.md ├── 68 - Promises - Error Handling - 375828888.md ├── 71 - Async Await Error Handling - 375831618.md ├── 73 - Async Typer UI - two ways - 375835674.md ├── 79 - Currency Modules Refactor - 375922562.md ├── 80 - Dad Jokes Modules Refactor - 375823961.md ├── 21 - The DOM - Selecting Elements - 375526640.md ├── 58 - Building a Gallery Exercise - 375805123.md ├── 11 - Types - Booleans and Equality - 375486249.md ├── 23 - The DOM - Working with Classes - 375536865.md ├── 46 - Array Cardio - Static Methods - 375671123.md ├── 47 - Array Cardio - Instance Methods - 375674172.md ├── 50 - Looping and Iterating - Mapping - 375690567.md ├── 52 - Looping and Iterating - Reduce - 375696743.md ├── 55 - Face Detection and Censorship - 375731570.md ├── 82 - using open source npm packages - 375820314.md ├── 1 - Welcome and Course Methodologies - 375993924.md ├── 2 - Browser, Editor and Terminal Setup - 375470196.md ├── 66 - The Event Loop and Callback Hell - 375826300.md ├── 81 - Bundling and Building with Parcel - 375822581.md ├── 14 - Functions - Parameters and Arguments - 375494555.md ├── 15 - Different Ways to Declare Functions - 375500347.md ├── 26 - The DOM - HTML from Strings and XSS - 375545274.md ├── 20 - The DOM - Introduction to the document - 375526026.md ├── 49 - Looping and Iterating - Array .forEach - 375687421.md ├── 63 - Prototypes and Prototypal Inheritance - 375821499.md ├── 22 - The DOM - Element Properties and Methods - 375534527.md ├── 27 - The DOM - Traversing and Removing Nodes - 375547511.md ├── 31 - Events - Prevent Default and Form Events - 375560179.md ├── 35 - Scroll Events and Intersection Observer - 375574016.md ├── 39 - Coercion, Ternaries and Conditional Abuse - 375645285.md ├── 53 - Looping and Iterating - Reduce Exercise - 375700479.md ├── 64 - Prototype Refactor of the Slider Exercise - 375823234.md ├── 69 - Refactoring Callback Hell to Promise Land - 375829489.md ├── 62 - Prototype Refactor of the Gallery Exercise - 375816325.md ├── 24 - The DOM - Build in and Custom Data Attributes - 375538305.md ├── 32 - Events - Accesibility Gotchas and Keyboard Codes - 375561845.md ├── 30 - Events - targets, bubbling, propagation and capture - 375555793.md ├── 40 - Case Switch and Animating a Turtle with CSS Variables - 375646853.md ├── 48 - Array Cardio - Callback Methods and Function Generation - 375678133.md ├── 38 - Flow Control - If Statements, Function Returns, Truthy, Falsy - 375642037.md ├── 54 - Looping and Iterating - for, for in, for of and while Loops - 375729084.md ├── 57 - Shopping Form with Custom Events, Delegation and localstorage - 375774374.md ├── 51 - Looping and Iterating - Filter, Find and Higher Order Functions - 375694435.md ├── 85 - Audio Visualization - 375797239.md ├── 74 - Ajax and APIs - 375839333.md ├── 75 - CORS and Recipes - 375840774.md ├── 5 - Code Quality Tooling with Prettier and ESLint - 375475807.md └── 77 - Currency Converter - 375929658.md ├── ES6 ├── 61 - Sets - 174357607.md ├── 64 - Maps - 174357606.md ├── 34 - Promises - 174357569.md ├── 63 - WeakSets - 174357608.md ├── 0 - Getting Setup - 175171462.md ├── 2 - let VS const - 174357529.md ├── 22 - The for of loop - 174357559.md ├── 29 - Spread Exercise - 174357563.md ├── 42 - ESLint Plugins - 174357581.md ├── 17 - New String Methods - 174357553.md ├── 38 - All About Symbols - 174357580.md ├── 4 - Temporal Dead Zone - 174357535.md ├── 58 - What are Proxies? - 174357604.md ├── 1 - var Scoping Refresher - 174357530.md ├── 18 - Destructuring Objects - 174357547.md ├── 19 - Destructuring Arrays - 174357554.md ├── 30 - More Spread Examples - 174357557.md ├── 52 - Say Hello to Classes - 174357599.md ├── 59 - Another Proxy Example - 174357602.md ├── 73 - 73 - Class Properties - 235537401.md ├── 33 - Object Literal Upgrades - 174357571.md ├── 40 - Airbnb ESLint Settings - 174357585.md ├── 55 - Introducing Generators - 174357596.md ├── 11 - Arrow Functions Exercises - 174357541.md ├── 14 - Tagged Template Literals - 174357549.md ├── 15 - Tagged Templates Exercise - 174357550.md ├── 23 - The for of Loop in Action - 174357558.md ├── 24 - Using for of with Objects - 174357567.md ├── 27 - Array .some() and .every() - 174357562.md ├── 31 - Spreading into a function - 174357566.md ├── 35 - Building your own Promises - 174357575.md ├── 46 - Creating your own Modules - 174357578.md ├── 47 - More ES6 Module Practice - 174357597.md ├── 74 - 74 - padStart and padEnd - 235537442.md ├── 8 - Arrow Functions and `this` - 174357538.md ├── 9 - Default Function Arguments - 174357537.md ├── 25 - Array.from() and Array.of() - 174357564.md ├── 28 - Spread Operator Introduction - 174357560.md ├── 39 - Getting Started with ESLint - 174357583.md ├── 6 - Arrow Functions Introduction - 174357534.md ├── 69 - 69 - All About Async + Await - 235570912.md ├── 7 - More Arrow Function Examples - 174357536.md ├── 12 - Template Strings Introduction - 174357539.md ├── 26 - Array. find() and .findIndex() - 174357565.md ├── 3 - let and const in the Real World - 174357531.md ├── 37 - Working with Multiple Promises - 174357579.md ├── 41 - Line and File Specific Settings - 174357586.md ├── 49 - All About Babel + npm scripts - 174357587.md ├── 5 - Is var Dead? What should I use? - 174357532.md ├── 51 - Prototypal Inheritance Review - 174357598.md ├── 57 - Looping Generators with for of - 174357601.md ├── 62 - Understanding Sets with Brunch - 174357609.md ├── 65 - Map Metadata with DOM Node Keys - 174357610.md ├── 66 - WeakMap and Garbage Collection - 174357611.md ├── 75 - 75 - ES7 Exponential Operator - 235537482.md ├── 10 - When NOT to use an Arrow Function - 174357540.md ├── 36 - Chaining Promises + Flow Control - 174357570.md ├── 70 - 70 - Async + Await Error Handling - 235537238.md ├── 71 - 71 - Waiting on Multiple Promises - 235572700.md ├── 43 - ESLint inside Atom and Sublime Text - 174357592.md ├── 50 - Polyfilling ES6 for Older Browsers - 174357588.md ├── 53 - Extending Classes and using super() - 174357590.md ├── 60 - Using Proxies to combat silly errors - 174357605.md ├── 20 - Swapping Variables with Destructuring - 174357555.md ├── 56 - Using Generators for Ajax Flow Control - 174357603.md ├── 76 - 76 - Function Arguments Trailing Comma - 235537505.md ├── 67 - 67 - Async Await - Native Promises Review - 235537109.md ├── 68 - 68 - Async Await - Custom Promises Review - 235537188.md ├── 77 - 77 - Object.entries() and Object.values() - 235537539.md ├── 16 - Sanitizing User Data with Tagged Templates - 174357551.md ├── 72 - 72 - Promisifying Callback Based Functions - 235537346.md ├── 13 - Creating HTML fragments with Template Literals - 174357548.md ├── 45 - JavaScript Modules and WebPack 2 Tooling Setup - 174357593.md ├── 32 - The ...rest param in Functions and destructuring - 174357573.md ├── 44 - Only Allow ESLint Passing Code into your git repos - 174357591.md ├── 54 - Extending Arrays with Classes for Custom Collections - 174357600.md ├── 48 - Tool-Free Modules with SystemJS (+bonus BrowserSync setup) - 174357595.md └── 21 - Destructuring Functions - Multiple returns and named defaults - 174357556.md ├── MMD ├── 9 - Tables - 195944721.md ├── 8 - Code Blocks - 195944660.md ├── 10 - Github Treats - 195944762.md ├── 5 - Markdown Images - 195944458.md ├── 0 - Mastering Markdown - 195944168.md ├── 4 - Links in Markdown - 195944387.md ├── 3 - Headings in Markdown - 195944349.md ├── 2 - Paragraphs and Text Decoration - 195944298.md ├── 1 - Introduction to Markdown & The Tooling - 195944189.md ├── 7 - Line Breaks, Horizontal Rules and BlockQuotes - 195944583.md └── 6 - Lists — Ordered, Unorderd, Bullets and Nesting - 195944518.md ├── GAT ├── 1 - Welcome - 459450310.md ├── 8 - Typography - 455613187.md ├── 19 - Gatsby Images - 455649279.md ├── 7 - Global Styles - 455610629.md ├── 4 - Pages in Gatsby - 455603048.md ├── 10 - Styling our Layout - 455617685.md ├── 53 - Deploying to Vercel - 465518786.md ├── 18 - Learning Gatsby Queries - 455644419.md ├── 20 - Loading in Sample Data - 455651906.md ├── 35 - Styling our Order Form - 455865410.md ├── 9 - Styling the Nav and Logo - 455613892.md ├── 29 - Paginating Data in Gatsby - 455656644.md ├── 32 - Single Slicemaster Pages - 455688638.md ├── 33 - Gatsby SEO and Head Tags - 455843538.md ├── 6 - Creating Layouts in Gatsby - 455607781.md ├── 11 - Setting up our Headless CMS - 455620394.md ├── 13 - Creating Data Relationships - 455624835.md ├── 15 - Custom CMS Inputs in Sanity - 455630215.md ├── 37 - Calculating our Order Total - 455873951.md ├── 14 - Creating our Person Data Type - 455628540.md ├── 36 - Custom Hook for our Order Form - 455868155.md ├── 41 - Coding our Serverless Function - 455834986.md ├── 47 - Displaying the Home Page Data - 456279463.md ├── 52 - Making the Website Responsive - 457041115.md ├── 2 - Tooling and Starter File Setup - 455597472.md ├── 39 - An Intro to Serverless Functions - 455812210.md ├── 5 - Routing and Navigation in Gatsby - 455605006.md ├── 25 - Dynamically Creating Toppings Pages - 455687340.md ├── 28 - Querying and Displaying Pagination - 456266765.md ├── 3 - What is Gatsby? Why is it so awesome? - 455600314.md ├── 30 - Filtering the data based on Pagination - 455671737.md ├── 44 - Creating a one-off Store Settings Page - 456011274.md ├── 21 - Styling our Pizza Grid with CSS subgrid - 455653013.md ├── 31 - Creating a reusable Pagination Component - 455672817.md ├── 34 - Creating the Order page with Custom Hooks - 455854805.md ├── 42 - Setting Error, Loading and Success States - 455840083.md ├── 45 - Custom Hook for Client Side Data Fetching - 456273361.md ├── 23 - Dynamically creating pages with gatsby-node - 455674214.md ├── 43 - Creating a Honey Pot to defend against bots - 456012597.md ├── 24 - Templating and Styling our Single Pizza Page - 455685411.md ├── 46 - Creating a Skeleton Screen while Loading Items - 456293440.md ├── 48 - Building and Deploying our Headless Sanity CMS - 456014649.md ├── 51 - Hosting the Gatsby Website on your own server - 456013491.md ├── 22 - Static Queries and Building the Toppings Filter - 455654302.md ├── 27 - Querying, Displaying and Styling the Beers Page - 456259610.md ├── 40 - Modifying our Custom Hook to send the order data - 455827660.md ├── 12 - Creating the Toppings Content Type and custom previews - 455622892.md ├── 38 - Moving our Order State to React Context with a custom Provider - 455767865.md ├── 50 - Deploying to Netlify - 456285735.md ├── 17 - Sourcing Sanity Data and GraphQL Introduction - 455638997.md ├── 49 - Building our Gatsby Site - 456014184.md ├── 16 - An intro to gatsby-config and sourcing data - 455637135.md └── 26 - Sourcing Data from an external API - 455742585.md ├── GRID ├── 1 - Welcome! - 250689347.md ├── 10 - Placing Grid Items - 249543600.md ├── 22 - Recreating Codepen - 249565560.md ├── 24 - Responsive Website - 249566909.md ├── 4 - CSS Grid Dev Tools - 249540149.md ├── 9 - Sizing Grid Items - 249542741.md ├── 14 - Grid Template Areas - 249546128.md ├── 21 - Flexbox vs CSS Grid - 249564244.md ├── 3 - CSS Grid Fundamentals - 249539184.md ├── 12 - auto-fit and auto-fill - 249545030.md ├── 18 - Re-ordering Grid Items - 249559342.md ├── 20 - CSS Grid Image Gallery - 249560994.md ├── 25 - Full Bleed Blog Layout - 249569493.md ├── 15 - Naming Lines in CSS Grid - 249557306.md ├── 7 - Sizing tracks in CSS Grid - 249541847.md ├── 8 - CSS Grid repeat function - 249542534.md ├── 11 - Spanning and Placing Cardio - 249544410.md ├── 6 - CSS grid-auto-flow Explained - 249541416.md ├── 17 - CSS Grid Alignment + Centering - 249558283.md ├── 2 - Starter Files and Tooling Setup - 249523152.md ├── 19 - Nesting Grid with Album Layouts - 249559631.md ├── 13 - Using minmax() for Responsive Grids - 249545601.md ├── 16 - grid-auto-flow dense Block Fitting - 249557777.md ├── 23 - Bootstrappy Grid with CSS Variables - 249566457.md └── 5 - CSS Grid Implicit vs Explicit Tracks - 249540846.md ├── JS3 ├── 24 - Sticky Nav - 194128157.md ├── 0 - Getting Setup - 194837696.md ├── 2 - CSS + JS Clock - 194130581.md ├── 23 - Speech Synthesis - 194128242.md ├── 29 - Countdown Clock - 194158691.md ├── 6 - Ajax Type Ahead - 194130156.md ├── 1 - JavaScript Drum Kit - 194130650.md ├── 13 - Slide In on Scroll - 194129405.md ├── 22 - Follow Along Links - 194128366.md ├── 30 - Whack A Mole Game - 194158577.md ├── 31 - That's All Folks! - 194837819.md ├── 4 - Array Cardio Day 1 - 194130346.md ├── 7 - Array Cardio Day 2 - 194130101.md ├── 8 - Fun with HTML5 Canvas - 194129962.md ├── 11 - Custom HTML5 Video Player - 194129583.md ├── 20 - Native Speech Recognition - 194128445.md ├── 27 - Click and Drag to Scroll - 194158963.md ├── 28 - Video Speed Controller UI - 194158897.md ├── 5 - Flex Panels Image Gallery - 194130264.md ├── 26 - Stripe Follow Along Dropdown - 194127921.md ├── 9 - 14 Must Know Dev Tools Tricks - 194129876.md ├── 18 - Tally String Times with Reduce - 194128821.md ├── 15 - LocalStorage and Event Delegation - 194129092.md ├── 16 - CSS Text Shadow Mouse Move Effect - 194128990.md ├── 3 - Playing with CSS Variables and JS - 194130480.md ├── 12 - Key Sequence Detection (KONAMI CODE) - 194129539.md ├── 17 - Sorting Band Names without articles - 194128929.md ├── 14 - Object and Arrays - Reference VS Copy - 194129338.md ├── 10 - Hold Shift to Check Multiple Checkboxes - 194129765.md ├── 21 - Geolocation based Speedometer and Compass - 194128542.md ├── 25 - Event Capture, Propagation, Bubbling and Once - 194128073.md └── 19 - Unreal Webcam Fun - 194128614.md ├── NODE ├── 1 - Getting Setup - 214159115.md ├── 12 - Flash Messages - 214165070.md ├── 11 - Using Async Await - 214164254.md ├── 41 - Deployment Setup - 214217572.md ├── 42 - Deploying to Now - 214217928.md ├── 2 - Setting up Mongo DB - 214159376.md ├── 27 - Password Reset Flow - 214186411.md ├── 30 - Loading Sample Data - 214193231.md ├── 39 - Advanced Aggregation - 214214837.md ├── 23 - Creating User Accounts - 214181546.md ├── 4 - Core Concept - Routing - 214159919.md ├── 40 - Implementing Pagination - 214216572.md ├── 28 - Sending email with Nodejs - 214188808.md ├── 5 - Core Concept - Templating - 214160355.md ├── 9 - Creating our Store Model - 214162717.md ├── 17 - Quick Data Visualization Tip - 214225203.md ├── 21 - Custom MongoDB Aggregations - 214179977.md ├── 35 - Pushing User Data to our API - 214206479.md ├── 37 - Adding a Reviews Data Model - 214212385.md ├── 10 - Saving Stores and using Mixins - 214163339.md ├── 36 - Displaying our Hearted Stores - 214212107.md ├── 6 - Core Concept - Template Helpers - 214161014.md ├── 13 - Querying our Database for Stores - 214166044.md ├── 15 - Saving Lat and Lng for each store - 214209854.md ├── 32 - Creating an Ajax Search Interface - 214198175.md ├── 44 - Deploying to Digital Ocean Linux - 214228856.md ├── 14 - Creating an Editing Flow for Stores - 214166743.md ├── 26 - Creating a User Account Edit Screen - 214185452.md ├── 33 - Creating a Geospatial Ajax Endpoint - 214202476.md ├── 19 - Routing and Templating Single Stores - 214178105.md ├── 34 - Plotting Stores on a Custom Google Map - 214203627.md ├── 22 - Multiple Query Promises with Async:Await - 214226652.md ├── 24 - Saving Registered Users to the Database - 214184257.md ├── 3 - Starter Files and Environmental Variables - 214224634.md ├── 20 - Using Pre-Save hooks to make Unique Slugs - 214179244.md ├── 31 - JSON endpoints and creating MongoDB Indexes - 214195478.md ├── 18 - Uploading and Resizing Images with Middleware - 214175828.md ├── 7 - Core Concept - Controllers and the MVC Pattern - 214161517.md ├── 8 - Core Concept - Middleware and Error Handling - 214161758.md ├── 29 - Locking down our application with User Permissions - 214190892.md ├── 38 - Advanced Relationship Population - Displaying Our Reviews - 214213730.md ├── 25 - Virtual Fields, Login:Logout middleware and Protecting Routes - 214227510.md ├── 43 - Deploying to Heroku - 214218186.md └── 16 - Geocoding Data with Google Maps - 214175119.md ├── ARG ├── 28 - Updating Items - 507159238.md ├── 3 - An intro to Next - 505038201.md ├── 32 - Pagination Links - 507140422.md ├── 72 - Testing Basics - 626506339.md ├── 75 - Snapshot Testing - 626512269.md ├── 10 - Setting up MongoDB - 505023504.md ├── 30 - Deleting Products - 507150666.md ├── 80 - Pagination Testing - 626524771.md ├── 11 - An Intro to GraphQL - 505022525.md ├── 18 - Inserting Seed Data - 505866451.md ├── 60 - Displaying All Orders - 506716664.md ├── 74 - React Testing Library - 626508592.md ├── 2 - The Tech Stack Explained - 505039808.md ├── 16 - Uploading Product Images - 505014591.md ├── 19 - Setting up Apollo Client - 507123392.md ├── 21 - Fixing and Styling the Nav - 507238349.md ├── 33 - Pagination Dynamic Routing - 507135710.md ├── 36 - Querying The Current User - 506315852.md ├── 39 - Creating our Sign Up Flow - 506329557.md ├── 59 - Displaying a Single Order - 506707405.md ├── 67 - Cart and Order based Rules - 506802536.md ├── 69 - Product Image Permissions - 506807990.md ├── 8 - Visualizing Route Changes - 505028922.md ├── 37 - Creating a Sign In Component - 506318851.md ├── 64 - Permissions Access Functions - 506790883.md ├── 83 - Mocking 3rd Party Libraries - 626534601.md ├── 1 - Tooling and Starter Files Setup - 505041308.md ├── 14 - Adding Auth to our Application - 505017385.md ├── 15 - Creating our Products Data Type - 505016325.md ├── 38 - Creating a Sign Out Component - 506327491.md ├── 49 - Cart - Remove From Cart Button - 506365360.md ├── 52 - Setting Up our Stripe Checkout - 506377793.md ├── 76 - More on Testing Library Queries - 626514018.md ├── 77 - Mocking GraphQL Data Requests - 626514831.md ├── 78 - Updating Props and re-rendering - 626519247.md ├── 13 - Creating our first User data type - 505018706.md ├── 4 - Creating a Page Layout Component - 505035224.md ├── 61 - Roles and Permissions - A Primer - 506719578.md ├── 63 - Basic Access Control via Sessions - 506741781.md ├── 68 - User and Field Based Permissions - 506804934.md ├── 81 - Testing User Events and Mutations - 626528043.md ├── 82 - Testing Password Reset Component - 626532450.md ├── 24 - Creating Products via our Mutations - 507200475.md ├── 31 - Evicting Items from the Apollo Cache - 507148090.md ├── 40 - Password Reset - Requesting a Reset - 506335828.md ├── 42 - Password Reset - sending the email - 506342937.md ├── 47 - Cart - Adding Items To Cart in React - 506361801.md ├── 48 - Cart - Animating the Cart Cart Value - 506363289.md ├── 65 - More Flexible Rule Based Functions - 506796165.md ├── 70 - Creating a Gated Sign In Component - 506808502.md ├── 71 - Test Setup, Tooling and Methodology - 626506085.md ├── 5 - Creating our Header and Nav Components - 505034111.md ├── 58 - Finishing up the Checkout UI and Flow - 506643059.md ├── 6 - An Intro to Styled Components and CSS - 505032132.md ├── 23 - Hooking up our File input and Form Styles - 507212663.md ├── 34 - Adjusting our Query for Pagination Values - 507131824.md ├── 41 - Password Reset - Setting a new Password - 506337840.md ├── 50 - Cart - Evicting Cart Items from the Cache - 506366816.md ├── 54 - Creating our Order and OrderItem Data Types - 506383115.md ├── 7 - Global Styles, Typography and Layout Styles - 505030370.md ├── 79 - Testing Signed in and Signed out Nav States - 626521895.md ├── 25 - Refetching Queries after a Successful Mutation - 507193203.md ├── 44 - Cart - Displaying Items in a Custom Component - 506349040.md ├── 53 - Writing our Client Side Checkout Handler Logic - 506379635.md ├── 62 - Creating the Roles and Permissions Schema + UI - 506726776.md ├── 66 - Getting Meta - Roles based Roles and Hiding UI - 506800415.md ├── 17 - Creating two way data relationships in Keystone - 505013813.md ├── 45 - Cart - Using React Context for our Cart State - 506354039.md ├── 9 - Fixing Styled Components Flicker on Server Render - 505027401.md ├── 22 - A real good lesson in React Forms and Custom Hooks - 507222373.md ├── 35 - Custom Type Policies and Control over the Apollo Cache - 506301088.md ├── 43 - Cart - Creating the Data Type and Two Way Relationships - 506347966.md ├── 26 - Programmatically Changing the Page after product creation - 507191827.md ├── 20 - Fetching Data with hooks and Displaying it in our Front End - 507242509.md ├── 29 - Using useEffect to deal with a tricky loading state issue - 507156506.md ├── 56 - Linking up our Frontend to the custom backend checkout mutation - 506389380.md ├── 51 - Search - 506368795.md ├── 46 - Cart - Adding Items to Cart - 506360082.md ├── 57 - Creating our Order and OrderItems in our Mutation - 506639816.md ├── 55 - Custom Checkout Mutation with Stripe - 506384835.md ├── 27 - Displaying Single Items, Routing and SEO - 507174678.md ├── 12 - Setting up Keystone and Typescript - 505019829.md ├── 73 - Testing our formatMoney function - 626507510.md └── 84 - Keystone Upgrades.md ├── CLPU ├── 4 - Installing ZSH - 195974908.md ├── 2 - Command Line Basics - 195974652.md ├── 5 - Custom Terminal Colours - 195975031.md ├── 3 - Installing iTerm or Cygwin - 195974775.md ├── 7 - Discovering ZSH Features - 195975557.md ├── 8 - Advanced History with ZSH - 195975829.md ├── 6 - Custom ZSH Themes & Prompts - 195975225.md ├── 10 - Using z to jump to frecent folders - 195976114.md ├── 1 - Introduction to Command Line Power User - 195974613.md ├── 9 - Getting the most out of ZSH with Plugins - 195975908.md └── 11 - Better deletion of files & folders with trash - 195976374.md ├── RFB ├── 24 - Authentication - 257761785.md ├── 26 - Deploying to Now - 257763961.md ├── 13 - Understanding State - 257752755.md ├── 27 - Deploying to Netlify - 257764331.md ├── 4 - Writing HTML with JSX - 257749229.md ├── 15 - Displaying State with JSX - 257754566.md ├── 16 - Updating our Order State - 257755154.md ├── 21 - Removing Items from State - 257758978.md ├── 22 - Animating React Components - 257759438.md ├── 9 - Routing with React Router - 257751120.md ├── 10 - Helper and Utility Functions - 257751497.md ├── 3 - Creating our First Components - 257748880.md ├── 17 - Displaying Order State with JSX - 257755907.md ├── 25 - Building React for Production - 257763352.md ├── 28 - Deploying to an Apache Server - 257764517.md ├── 29 - Ejecting from create-react-app - 184595963.md ├── 7 - Passing Dynamic data with props - 257750327.md ├── 8 - Stateless Functional Components - 257750688.md ├── 23 - Component Validation with PropTypes - 257760776.md ├── 5 - Loading CSS into our React Application - 257749718.md ├── 19 - Persisting Order State with localstorage - 257757575.md ├── 2 - Thinking and Understanding React Components - 184581834.md ├── 20 - Bi-directional Data Flow and Live State Editing - 257758118.md ├── 6 - Creating our application layout with components - 257749884.md ├── 12 - Handling Events - 257752567.md ├── 11 - Events, Refs and this Binding - 257751801.md ├── 1 - Introduction, Tooling and Editor Setup - 257748004.md ├── 14 - Loading data into state onClick - 257754270.md └── 18 - Persisting our State with Firebase - 257756817.md ├── STPU ├── 2 - 02 - Bookmarking - 220668021.md ├── 10 - 10 - Emmet - HTML - 220668779.md ├── 12 - 12 - Emmet - CSS - 220669000.md ├── 6 - 06 - Code Folding - 220668365.md ├── 14 - 14 - Emmet - Filters - 220669093.md ├── 11 - 11 - Emmet - Tag Wrapping - 220668964.md ├── 3 - 03 - The Command Palette - 220668072.md ├── 13 - 13 - Emmet - Value Bumping - 220669066.md ├── 4 - 04 - Mastering Goto Anything - 220668143.md ├── 15 - 15 - Line Bubbling or Swapping - 220669130.md ├── 5 - 05 - Predictive Filename Typing - 220668329.md ├── 18 - 18 - Working with Multiple Carets - 220669398.md ├── 7 - 07 - Creating and Using Snippets - 220668523.md ├── 16 - 16 - Introduction to Panes and Groups - 220669154.md ├── 9 - 09 - Finding, Selecting and Replacing - 220668699.md ├── 19 - 19 - JavaScript Code Quality with JSHint - 220669431.md ├── 20 - 20 - Lint Any Language with Sublime Linter - 220669504.md ├── 17 - 17 - Mastering Panes and Groups with Origami - 220669196.md ├── 8 - 08 - Moving, Jumping, Selecting and Inserting - 220668642.md └── 1 - 01 - Sublime Text Settings - 220667759.md ├── WTF ├── 5 - Flexbox Ordering - 195968941.md ├── 17 - Flexbox Pricing Grid - 195971357.md ├── 2 - Introduction to Flexbox - 197920432.md ├── 19 - Flexbox single line form - 195971710.md ├── 4 - Wrapping elements with Flexbox - 197920688.md ├── 1 - Introduction to What The FlexBox - 195968908.md ├── 14 - Pure Flexbox navigation code along - 195970444.md ├── 3 - Working with Flexbox flex-direction - 195969097.md ├── 15 - Mobile content reordering with Flexbox - 195970711.md ├── 9 - Alignment and Centering with align-self - 195969522.md ├── 20 - Create a mobile app layout with Flexbox - 195971844.md ├── 7 - Alignment and Centering with align-items - 195969223.md ├── 8 - Alignment and Centering with align-content - 195969370.md ├── 13 - Cross Browser Flexbox Support and Autoprefixer! - 195970127.md ├── 10 - Understanding Flexbox sizing with the flex property - 195969588.md ├── 12 - How Flexbox's flex-basis and wrapping work together - 195969905.md ├── 18 - Flexbox Equal height columns and leftover elements - 195971544.md ├── 6 - Flexbox Alignment and Centering with justify-content - 197920518.md ├── 16 - Nesting Flexbox for vertical and horizontal centering with Flexbox - 195971003.md └── 11 - Finally understanding Flexbox flex-grow, flex-shrink and flex-basis - 195969692.md ├── RDX ├── 20 - Wrap Up and Next Steps - 195953444.md ├── 4 - Setting up React Router - 195950239.md ├── 5 - Creating our Redux Store - 195950346.md ├── 6 - All About Redux Actions - 195950493.md ├── 7 - All About Redux Reducers - 195950614.md ├── 16 - Redux Reducer Composition - 195952726.md ├── 19 - Learning Redux Dev Tools - 195953344.md ├── 12 - Updating State with Reducers - 195952051.md ├── 2 - App Layout + Component Setup - 195950019.md ├── 14 - Displaying and Adding Comments - 195952337.md ├── 1 - Setting Up Our Webpack Environment - 195949909.md ├── 15 - Updating Comment State in our Store - 195952448.md ├── 13 - Displaying the Single Photo Component - 195952221.md ├── 8 - Integrating our Store with React Router - 195950848.md ├── 10 - Accessing Dispatch and State with Redux - 195951530.md ├── 17 - Error Tracking and Insights with Sentry - 195952863.md ├── 18 - Hot Reloading Redux Reducers with webpack - 195953043.md ├── 3 - Creating our Single and PhotoGrid components - 195950169.md ├── 11 - Displaying Redux State inside our Components - 195951676.md └── 9 - Understanding The Reducer's Job and Dispatching Actions - 195951443.md ├── package.json ├── make-files.mjs └── .gitignore /readme.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /BJS/17 - Scope - 375521681.md: -------------------------------------------------------------------------------- 1 | # Scope -------------------------------------------------------------------------------- /BJS/36 - Tabs - 375637559.md: -------------------------------------------------------------------------------- 1 | # Tabs -------------------------------------------------------------------------------- /BJS/37 - BEDMAS - 375641401.md: -------------------------------------------------------------------------------- 1 | # BEDMAS -------------------------------------------------------------------------------- /BJS/44 - Maps - 375664034.md: -------------------------------------------------------------------------------- 1 | # Maps -------------------------------------------------------------------------------- /BJS/45 - Arrays - 375665991.md: -------------------------------------------------------------------------------- 1 | # Arrays -------------------------------------------------------------------------------- /ES6/61 - Sets - 174357607.md: -------------------------------------------------------------------------------- 1 | # Sets -------------------------------------------------------------------------------- /ES6/64 - Maps - 174357606.md: -------------------------------------------------------------------------------- 1 | # Maps -------------------------------------------------------------------------------- /MMD/9 - Tables - 195944721.md: -------------------------------------------------------------------------------- 1 | # Tables -------------------------------------------------------------------------------- /BJS/18 - Hoisting - 375523766.md: -------------------------------------------------------------------------------- 1 | # Hoisting -------------------------------------------------------------------------------- /BJS/19 - Closures - 375524347.md: -------------------------------------------------------------------------------- 1 | # Closures -------------------------------------------------------------------------------- /BJS/42 - Objects - 375651444.md: -------------------------------------------------------------------------------- 1 | # Objects -------------------------------------------------------------------------------- /BJS/67 - Promises - 375827621.md: -------------------------------------------------------------------------------- 1 | # Promises -------------------------------------------------------------------------------- /BJS/78 - Modules - 375926026.md: -------------------------------------------------------------------------------- 1 | # Modules -------------------------------------------------------------------------------- /BJS/83 - Security - 375777421.md: -------------------------------------------------------------------------------- 1 | # Security -------------------------------------------------------------------------------- /ES6/34 - Promises - 174357569.md: -------------------------------------------------------------------------------- 1 | # Promises -------------------------------------------------------------------------------- /ES6/63 - WeakSets - 174357608.md: -------------------------------------------------------------------------------- 1 | # WeakSets -------------------------------------------------------------------------------- /GAT/1 - Welcome - 459450310.md: -------------------------------------------------------------------------------- 1 | # Welcome -------------------------------------------------------------------------------- /GRID/1 - Welcome! - 250689347.md: -------------------------------------------------------------------------------- 1 | # Welcome! -------------------------------------------------------------------------------- /BJS/70 - Async Await - 375830382.md: -------------------------------------------------------------------------------- 1 | # Async Await -------------------------------------------------------------------------------- /BJS/76 - Dad Jokes - 375922139.md: -------------------------------------------------------------------------------- 1 | # Dad Jokes -------------------------------------------------------------------------------- /GAT/8 - Typography - 455613187.md: -------------------------------------------------------------------------------- 1 | # Typography -------------------------------------------------------------------------------- /JS3/24 - Sticky Nav - 194128157.md: -------------------------------------------------------------------------------- 1 | # Sticky Nav -------------------------------------------------------------------------------- /MMD/8 - Code Blocks - 195944660.md: -------------------------------------------------------------------------------- 1 | # Code Blocks -------------------------------------------------------------------------------- /BJS/33 - Etch-a-Sketch - 375563758.md: -------------------------------------------------------------------------------- 1 | # Etch-a-Sketch -------------------------------------------------------------------------------- /ES6/0 - Getting Setup - 175171462.md: -------------------------------------------------------------------------------- 1 | # Getting Setup -------------------------------------------------------------------------------- /ES6/2 - let VS const - 174357529.md: -------------------------------------------------------------------------------- 1 | # let VS const -------------------------------------------------------------------------------- /GAT/19 - Gatsby Images - 455649279.md: -------------------------------------------------------------------------------- 1 | # Gatsby Images -------------------------------------------------------------------------------- /GAT/7 - Global Styles - 455610629.md: -------------------------------------------------------------------------------- 1 | # Global Styles -------------------------------------------------------------------------------- /JS3/0 - Getting Setup - 194837696.md: -------------------------------------------------------------------------------- 1 | # Getting Setup -------------------------------------------------------------------------------- /JS3/2 - CSS + JS Clock - 194130581.md: -------------------------------------------------------------------------------- 1 | # CSS + JS Clock -------------------------------------------------------------------------------- /MMD/10 - Github Treats - 195944762.md: -------------------------------------------------------------------------------- 1 | # Github Treats -------------------------------------------------------------------------------- /NODE/1 - Getting Setup - 214159115.md: -------------------------------------------------------------------------------- 1 | # Getting Setup -------------------------------------------------------------------------------- /ARG/28 - Updating Items - 507159238.md: -------------------------------------------------------------------------------- 1 | # Updating Items -------------------------------------------------------------------------------- /ARG/3 - An intro to Next - 505038201.md: -------------------------------------------------------------------------------- 1 | # An intro to Next -------------------------------------------------------------------------------- /ARG/32 - Pagination Links - 507140422.md: -------------------------------------------------------------------------------- 1 | # Pagination Links -------------------------------------------------------------------------------- /ARG/72 - Testing Basics - 626506339.md: -------------------------------------------------------------------------------- 1 | # Testing Basics -------------------------------------------------------------------------------- /ARG/75 - Snapshot Testing - 626512269.md: -------------------------------------------------------------------------------- 1 | # Snapshot Testing -------------------------------------------------------------------------------- /BJS/16 - Debugging Tools - 375515412.md: -------------------------------------------------------------------------------- 1 | # Debugging Tools -------------------------------------------------------------------------------- /BJS/28 - The DOM - CARDIO - 375548924.md: -------------------------------------------------------------------------------- 1 | # The DOM - CARDIO -------------------------------------------------------------------------------- /BJS/60 - The New Keyword - 375814494.md: -------------------------------------------------------------------------------- 1 | # The New Keyword -------------------------------------------------------------------------------- /BJS/61 - The this Keyword - 375815225.md: -------------------------------------------------------------------------------- 1 | # The this Keyword -------------------------------------------------------------------------------- /BJS/7 - Types - Strings - 375479513.md: -------------------------------------------------------------------------------- 1 | # Types - Strings -------------------------------------------------------------------------------- /BJS/8 - Types - Numbers - 375483126.md: -------------------------------------------------------------------------------- 1 | # Types - Numbers -------------------------------------------------------------------------------- /BJS/9 - Types - Objects - 375484973.md: -------------------------------------------------------------------------------- 1 | # Types - Objects -------------------------------------------------------------------------------- /CLPU/4 - Installing ZSH - 195974908.md: -------------------------------------------------------------------------------- 1 | # Installing ZSH -------------------------------------------------------------------------------- /ES6/22 - The for of loop - 174357559.md: -------------------------------------------------------------------------------- 1 | # The for of loop -------------------------------------------------------------------------------- /ES6/29 - Spread Exercise - 174357563.md: -------------------------------------------------------------------------------- 1 | # Spread Exercise -------------------------------------------------------------------------------- /ES6/42 - ESLint Plugins - 174357581.md: -------------------------------------------------------------------------------- 1 | # ESLint Plugins -------------------------------------------------------------------------------- /GAT/4 - Pages in Gatsby - 455603048.md: -------------------------------------------------------------------------------- 1 | # Pages in Gatsby -------------------------------------------------------------------------------- /JS3/23 - Speech Synthesis - 194128242.md: -------------------------------------------------------------------------------- 1 | # Speech Synthesis -------------------------------------------------------------------------------- /JS3/29 - Countdown Clock - 194158691.md: -------------------------------------------------------------------------------- 1 | # Countdown Clock -------------------------------------------------------------------------------- /JS3/6 - Ajax Type Ahead - 194130156.md: -------------------------------------------------------------------------------- 1 | # Ajax Type Ahead -------------------------------------------------------------------------------- /MMD/5 - Markdown Images - 195944458.md: -------------------------------------------------------------------------------- 1 | # Markdown Images -------------------------------------------------------------------------------- /NODE/12 - Flash Messages - 214165070.md: -------------------------------------------------------------------------------- 1 | # Flash Messages -------------------------------------------------------------------------------- /RFB/24 - Authentication - 257761785.md: -------------------------------------------------------------------------------- 1 | # Authentication -------------------------------------------------------------------------------- /RFB/26 - Deploying to Now - 257763961.md: -------------------------------------------------------------------------------- 1 | # Deploying to Now -------------------------------------------------------------------------------- /STPU/2 - 02 - Bookmarking - 220668021.md: -------------------------------------------------------------------------------- 1 | # 02 - Bookmarking -------------------------------------------------------------------------------- /WTF/5 - Flexbox Ordering - 195968941.md: -------------------------------------------------------------------------------- 1 | # Flexbox Ordering -------------------------------------------------------------------------------- /ARG/10 - Setting up MongoDB - 505023504.md: -------------------------------------------------------------------------------- 1 | # Setting up MongoDB -------------------------------------------------------------------------------- /ARG/30 - Deleting Products - 507150666.md: -------------------------------------------------------------------------------- 1 | # Deleting Products -------------------------------------------------------------------------------- /ARG/80 - Pagination Testing - 626524771.md: -------------------------------------------------------------------------------- 1 | # Pagination Testing -------------------------------------------------------------------------------- /BJS/13 - Functions - Custom - 375490580.md: -------------------------------------------------------------------------------- 1 | # Functions - Custom -------------------------------------------------------------------------------- /BJS/59 - Building a Slider - 375810901.md: -------------------------------------------------------------------------------- 1 | # Building a Slider -------------------------------------------------------------------------------- /ES6/17 - New String Methods - 174357553.md: -------------------------------------------------------------------------------- 1 | # New String Methods -------------------------------------------------------------------------------- /ES6/38 - All About Symbols - 174357580.md: -------------------------------------------------------------------------------- 1 | # All About Symbols -------------------------------------------------------------------------------- /ES6/4 - Temporal Dead Zone - 174357535.md: -------------------------------------------------------------------------------- 1 | # Temporal Dead Zone -------------------------------------------------------------------------------- /ES6/58 - What are Proxies? - 174357604.md: -------------------------------------------------------------------------------- 1 | # What are Proxies? -------------------------------------------------------------------------------- /GAT/10 - Styling our Layout - 455617685.md: -------------------------------------------------------------------------------- 1 | # Styling our Layout -------------------------------------------------------------------------------- /GRID/10 - Placing Grid Items - 249543600.md: -------------------------------------------------------------------------------- 1 | # Placing Grid Items -------------------------------------------------------------------------------- /GRID/22 - Recreating Codepen - 249565560.md: -------------------------------------------------------------------------------- 1 | # Recreating Codepen -------------------------------------------------------------------------------- /GRID/24 - Responsive Website - 249566909.md: -------------------------------------------------------------------------------- 1 | # Responsive Website -------------------------------------------------------------------------------- /GRID/4 - CSS Grid Dev Tools - 249540149.md: -------------------------------------------------------------------------------- 1 | # CSS Grid Dev Tools -------------------------------------------------------------------------------- /GRID/9 - Sizing Grid Items - 249542741.md: -------------------------------------------------------------------------------- 1 | # Sizing Grid Items -------------------------------------------------------------------------------- /JS3/1 - JavaScript Drum Kit - 194130650.md: -------------------------------------------------------------------------------- 1 | # JavaScript Drum Kit -------------------------------------------------------------------------------- /JS3/13 - Slide In on Scroll - 194129405.md: -------------------------------------------------------------------------------- 1 | # Slide In on Scroll -------------------------------------------------------------------------------- /JS3/22 - Follow Along Links - 194128366.md: -------------------------------------------------------------------------------- 1 | # Follow Along Links -------------------------------------------------------------------------------- /JS3/30 - Whack A Mole Game - 194158577.md: -------------------------------------------------------------------------------- 1 | # Whack A Mole Game -------------------------------------------------------------------------------- /JS3/31 - That's All Folks! - 194837819.md: -------------------------------------------------------------------------------- 1 | # That's All Folks! -------------------------------------------------------------------------------- /JS3/4 - Array Cardio Day 1 - 194130346.md: -------------------------------------------------------------------------------- 1 | # Array Cardio Day 1 -------------------------------------------------------------------------------- /JS3/7 - Array Cardio Day 2 - 194130101.md: -------------------------------------------------------------------------------- 1 | # Array Cardio Day 2 -------------------------------------------------------------------------------- /MMD/0 - Mastering Markdown - 195944168.md: -------------------------------------------------------------------------------- 1 | # Mastering Markdown -------------------------------------------------------------------------------- /MMD/4 - Links in Markdown - 195944387.md: -------------------------------------------------------------------------------- 1 | # Links in Markdown -------------------------------------------------------------------------------- /NODE/11 - Using Async Await - 214164254.md: -------------------------------------------------------------------------------- 1 | # Using Async Await -------------------------------------------------------------------------------- /NODE/41 - Deployment Setup - 214217572.md: -------------------------------------------------------------------------------- 1 | # Deployment Setup -------------------------------------------------------------------------------- /NODE/42 - Deploying to Now - 214217928.md: -------------------------------------------------------------------------------- 1 | # Deploying to Now -------------------------------------------------------------------------------- /STPU/10 - 10 - Emmet - HTML - 220668779.md: -------------------------------------------------------------------------------- 1 | # 10 - Emmet - HTML -------------------------------------------------------------------------------- /STPU/12 - 12 - Emmet - CSS - 220669000.md: -------------------------------------------------------------------------------- 1 | # 12 - Emmet - CSS -------------------------------------------------------------------------------- /STPU/6 - 06 - Code Folding - 220668365.md: -------------------------------------------------------------------------------- 1 | # 06 - Code Folding -------------------------------------------------------------------------------- /ARG/11 - An Intro to GraphQL - 505022525.md: -------------------------------------------------------------------------------- 1 | # An Intro to GraphQL -------------------------------------------------------------------------------- /ARG/18 - Inserting Seed Data - 505866451.md: -------------------------------------------------------------------------------- 1 | # Inserting Seed Data -------------------------------------------------------------------------------- /ARG/60 - Displaying All Orders - 506716664.md: -------------------------------------------------------------------------------- 1 | # Displaying All Orders -------------------------------------------------------------------------------- /ARG/74 - React Testing Library - 626508592.md: -------------------------------------------------------------------------------- 1 | # React Testing Library -------------------------------------------------------------------------------- /BJS/12 - Functions - Built in - 375488640.md: -------------------------------------------------------------------------------- 1 | # Functions - Built in -------------------------------------------------------------------------------- /BJS/34 - Click Outside Modal - 375570811.md: -------------------------------------------------------------------------------- 1 | # Click Outside Modal -------------------------------------------------------------------------------- /BJS/41 - Intervals and Timers - 375649960.md: -------------------------------------------------------------------------------- 1 | # Intervals and Timers -------------------------------------------------------------------------------- /BJS/6 - Types - Introduction - 375479347.md: -------------------------------------------------------------------------------- 1 | # Types - Introduction -------------------------------------------------------------------------------- /BJS/65 - bind, call and apply - 375824844.md: -------------------------------------------------------------------------------- 1 | # bind, call and apply -------------------------------------------------------------------------------- /BJS/72 - Async Await Prompt UI - 375832620.md: -------------------------------------------------------------------------------- 1 | # Async Await Prompt UI -------------------------------------------------------------------------------- /CLPU/2 - Command Line Basics - 195974652.md: -------------------------------------------------------------------------------- 1 | # Command Line Basics -------------------------------------------------------------------------------- /ES6/1 - var Scoping Refresher - 174357530.md: -------------------------------------------------------------------------------- 1 | # var Scoping Refresher -------------------------------------------------------------------------------- /ES6/18 - Destructuring Objects - 174357547.md: -------------------------------------------------------------------------------- 1 | # Destructuring Objects -------------------------------------------------------------------------------- /ES6/19 - Destructuring Arrays - 174357554.md: -------------------------------------------------------------------------------- 1 | # Destructuring Arrays -------------------------------------------------------------------------------- /ES6/30 - More Spread Examples - 174357557.md: -------------------------------------------------------------------------------- 1 | # More Spread Examples -------------------------------------------------------------------------------- /ES6/52 - Say Hello to Classes - 174357599.md: -------------------------------------------------------------------------------- 1 | # Say Hello to Classes -------------------------------------------------------------------------------- /ES6/59 - Another Proxy Example - 174357602.md: -------------------------------------------------------------------------------- 1 | # Another Proxy Example -------------------------------------------------------------------------------- /ES6/73 - 73 - Class Properties - 235537401.md: -------------------------------------------------------------------------------- 1 | # 73 - Class Properties -------------------------------------------------------------------------------- /GAT/53 - Deploying to Vercel - 465518786.md: -------------------------------------------------------------------------------- 1 | # Deploying to Vercel -------------------------------------------------------------------------------- /GRID/14 - Grid Template Areas - 249546128.md: -------------------------------------------------------------------------------- 1 | # Grid Template Areas -------------------------------------------------------------------------------- /GRID/21 - Flexbox vs CSS Grid - 249564244.md: -------------------------------------------------------------------------------- 1 | # Flexbox vs CSS Grid -------------------------------------------------------------------------------- /GRID/3 - CSS Grid Fundamentals - 249539184.md: -------------------------------------------------------------------------------- 1 | # CSS Grid Fundamentals -------------------------------------------------------------------------------- /JS3/8 - Fun with HTML5 Canvas - 194129962.md: -------------------------------------------------------------------------------- 1 | # Fun with HTML5 Canvas -------------------------------------------------------------------------------- /MMD/3 - Headings in Markdown - 195944349.md: -------------------------------------------------------------------------------- 1 | # Headings in Markdown -------------------------------------------------------------------------------- /NODE/2 - Setting up Mongo DB - 214159376.md: -------------------------------------------------------------------------------- 1 | # Setting up Mongo DB -------------------------------------------------------------------------------- /NODE/27 - Password Reset Flow - 214186411.md: -------------------------------------------------------------------------------- 1 | # Password Reset Flow -------------------------------------------------------------------------------- /NODE/30 - Loading Sample Data - 214193231.md: -------------------------------------------------------------------------------- 1 | # Loading Sample Data -------------------------------------------------------------------------------- /NODE/39 - Advanced Aggregation - 214214837.md: -------------------------------------------------------------------------------- 1 | # Advanced Aggregation -------------------------------------------------------------------------------- /RFB/13 - Understanding State - 257752755.md: -------------------------------------------------------------------------------- 1 | # Understanding State -------------------------------------------------------------------------------- /RFB/27 - Deploying to Netlify - 257764331.md: -------------------------------------------------------------------------------- 1 | # Deploying to Netlify -------------------------------------------------------------------------------- /RFB/4 - Writing HTML with JSX - 257749229.md: -------------------------------------------------------------------------------- 1 | # Writing HTML with JSX -------------------------------------------------------------------------------- /STPU/14 - 14 - Emmet - Filters - 220669093.md: -------------------------------------------------------------------------------- 1 | # 14 - Emmet - Filters -------------------------------------------------------------------------------- /WTF/17 - Flexbox Pricing Grid - 195971357.md: -------------------------------------------------------------------------------- 1 | # Flexbox Pricing Grid -------------------------------------------------------------------------------- /ARG/2 - The Tech Stack Explained - 505039808.md: -------------------------------------------------------------------------------- 1 | # The Tech Stack Explained -------------------------------------------------------------------------------- /BJS/25 - The DOM - Creating HTML - 375540088.md: -------------------------------------------------------------------------------- 1 | # The DOM - Creating HTML -------------------------------------------------------------------------------- /BJS/29 - Events - Event Listener - 375553405.md: -------------------------------------------------------------------------------- 1 | # Events - Event Listener -------------------------------------------------------------------------------- /BJS/3 - Running and Loading JS - 375471583.md: -------------------------------------------------------------------------------- 1 | # Running and Loading JS -------------------------------------------------------------------------------- /BJS/4 - Variables and Statements - 375473287.md: -------------------------------------------------------------------------------- 1 | # Variables and Statements -------------------------------------------------------------------------------- /BJS/84 - Web Speech Colours Game - 375816951.md: -------------------------------------------------------------------------------- 1 | # Web Speech Colours Game -------------------------------------------------------------------------------- /CLPU/5 - Custom Terminal Colours - 195975031.md: -------------------------------------------------------------------------------- 1 | # Custom Terminal Colours -------------------------------------------------------------------------------- /ES6/33 - Object Literal Upgrades - 174357571.md: -------------------------------------------------------------------------------- 1 | # Object Literal Upgrades -------------------------------------------------------------------------------- /ES6/40 - Airbnb ESLint Settings - 174357585.md: -------------------------------------------------------------------------------- 1 | # Airbnb ESLint Settings -------------------------------------------------------------------------------- /ES6/55 - Introducing Generators - 174357596.md: -------------------------------------------------------------------------------- 1 | # Introducing Generators -------------------------------------------------------------------------------- /GAT/18 - Learning Gatsby Queries - 455644419.md: -------------------------------------------------------------------------------- 1 | # Learning Gatsby Queries -------------------------------------------------------------------------------- /GAT/20 - Loading in Sample Data - 455651906.md: -------------------------------------------------------------------------------- 1 | # Loading in Sample Data -------------------------------------------------------------------------------- /GAT/35 - Styling our Order Form - 455865410.md: -------------------------------------------------------------------------------- 1 | # Styling our Order Form -------------------------------------------------------------------------------- /GAT/9 - Styling the Nav and Logo - 455613892.md: -------------------------------------------------------------------------------- 1 | # Styling the Nav and Logo -------------------------------------------------------------------------------- /GRID/12 - auto-fit and auto-fill - 249545030.md: -------------------------------------------------------------------------------- 1 | # auto-fit and auto-fill -------------------------------------------------------------------------------- /GRID/18 - Re-ordering Grid Items - 249559342.md: -------------------------------------------------------------------------------- 1 | # Re-ordering Grid Items -------------------------------------------------------------------------------- /GRID/20 - CSS Grid Image Gallery - 249560994.md: -------------------------------------------------------------------------------- 1 | # CSS Grid Image Gallery -------------------------------------------------------------------------------- /GRID/25 - Full Bleed Blog Layout - 249569493.md: -------------------------------------------------------------------------------- 1 | # Full Bleed Blog Layout -------------------------------------------------------------------------------- /NODE/23 - Creating User Accounts - 214181546.md: -------------------------------------------------------------------------------- 1 | # Creating User Accounts -------------------------------------------------------------------------------- /NODE/4 - Core Concept - Routing - 214159919.md: -------------------------------------------------------------------------------- 1 | # Core Concept - Routing -------------------------------------------------------------------------------- /NODE/40 - Implementing Pagination - 214216572.md: -------------------------------------------------------------------------------- 1 | # Implementing Pagination -------------------------------------------------------------------------------- /RDX/20 - Wrap Up and Next Steps - 195953444.md: -------------------------------------------------------------------------------- 1 | # Wrap Up and Next Steps -------------------------------------------------------------------------------- /RDX/4 - Setting up React Router - 195950239.md: -------------------------------------------------------------------------------- 1 | # Setting up React Router -------------------------------------------------------------------------------- /RDX/5 - Creating our Redux Store - 195950346.md: -------------------------------------------------------------------------------- 1 | # Creating our Redux Store -------------------------------------------------------------------------------- /RDX/6 - All About Redux Actions - 195950493.md: -------------------------------------------------------------------------------- 1 | # All About Redux Actions -------------------------------------------------------------------------------- /RDX/7 - All About Redux Reducers - 195950614.md: -------------------------------------------------------------------------------- 1 | # All About Redux Reducers -------------------------------------------------------------------------------- /WTF/2 - Introduction to Flexbox - 197920432.md: -------------------------------------------------------------------------------- 1 | # Introduction to Flexbox -------------------------------------------------------------------------------- /ARG/16 - Uploading Product Images - 505014591.md: -------------------------------------------------------------------------------- 1 | # Uploading Product Images -------------------------------------------------------------------------------- /ARG/19 - Setting up Apollo Client - 507123392.md: -------------------------------------------------------------------------------- 1 | # Setting up Apollo Client -------------------------------------------------------------------------------- /ARG/21 - Fixing and Styling the Nav - 507238349.md: -------------------------------------------------------------------------------- 1 | # Fixing and Styling the Nav -------------------------------------------------------------------------------- /ARG/33 - Pagination Dynamic Routing - 507135710.md: -------------------------------------------------------------------------------- 1 | # Pagination Dynamic Routing -------------------------------------------------------------------------------- /ARG/36 - Querying The Current User - 506315852.md: -------------------------------------------------------------------------------- 1 | # Querying The Current User -------------------------------------------------------------------------------- /ARG/39 - Creating our Sign Up Flow - 506329557.md: -------------------------------------------------------------------------------- 1 | # Creating our Sign Up Flow -------------------------------------------------------------------------------- /ARG/59 - Displaying a Single Order - 506707405.md: -------------------------------------------------------------------------------- 1 | # Displaying a Single Order -------------------------------------------------------------------------------- /ARG/67 - Cart and Order based Rules - 506802536.md: -------------------------------------------------------------------------------- 1 | # Cart and Order based Rules -------------------------------------------------------------------------------- /ARG/69 - Product Image Permissions - 506807990.md: -------------------------------------------------------------------------------- 1 | # Product Image Permissions -------------------------------------------------------------------------------- /ARG/8 - Visualizing Route Changes - 505028922.md: -------------------------------------------------------------------------------- 1 | # Visualizing Route Changes -------------------------------------------------------------------------------- /BJS/10 - Types - null and undefined - 375485398.md: -------------------------------------------------------------------------------- 1 | # Types - null and undefined -------------------------------------------------------------------------------- /BJS/43 - Object Reference vs Values - 375653808.md: -------------------------------------------------------------------------------- 1 | # Object Reference vs Values -------------------------------------------------------------------------------- /BJS/56 - Sarcastic Text Generator - 375770658.md: -------------------------------------------------------------------------------- 1 | # Sarcastic Text Generator -------------------------------------------------------------------------------- /BJS/68 - Promises - Error Handling - 375828888.md: -------------------------------------------------------------------------------- 1 | # Promises - Error Handling -------------------------------------------------------------------------------- /BJS/71 - Async Await Error Handling - 375831618.md: -------------------------------------------------------------------------------- 1 | # Async Await Error Handling -------------------------------------------------------------------------------- /BJS/73 - Async Typer UI - two ways - 375835674.md: -------------------------------------------------------------------------------- 1 | # Async Typer UI - two ways -------------------------------------------------------------------------------- /BJS/79 - Currency Modules Refactor - 375922562.md: -------------------------------------------------------------------------------- 1 | # Currency Modules Refactor -------------------------------------------------------------------------------- /BJS/80 - Dad Jokes Modules Refactor - 375823961.md: -------------------------------------------------------------------------------- 1 | # Dad Jokes Modules Refactor -------------------------------------------------------------------------------- /CLPU/3 - Installing iTerm or Cygwin - 195974775.md: -------------------------------------------------------------------------------- 1 | # Installing iTerm or Cygwin -------------------------------------------------------------------------------- /CLPU/7 - Discovering ZSH Features - 195975557.md: -------------------------------------------------------------------------------- 1 | # Discovering ZSH Features -------------------------------------------------------------------------------- /CLPU/8 - Advanced History with ZSH - 195975829.md: -------------------------------------------------------------------------------- 1 | # Advanced History with ZSH -------------------------------------------------------------------------------- /ES6/11 - Arrow Functions Exercises - 174357541.md: -------------------------------------------------------------------------------- 1 | # Arrow Functions Exercises -------------------------------------------------------------------------------- /ES6/14 - Tagged Template Literals - 174357549.md: -------------------------------------------------------------------------------- 1 | # Tagged Template Literals -------------------------------------------------------------------------------- /ES6/15 - Tagged Templates Exercise - 174357550.md: -------------------------------------------------------------------------------- 1 | # Tagged Templates Exercise -------------------------------------------------------------------------------- /ES6/23 - The for of Loop in Action - 174357558.md: -------------------------------------------------------------------------------- 1 | # The for of Loop in Action -------------------------------------------------------------------------------- /ES6/24 - Using for of with Objects - 174357567.md: -------------------------------------------------------------------------------- 1 | # Using for of with Objects -------------------------------------------------------------------------------- /ES6/27 - Array .some() and .every() - 174357562.md: -------------------------------------------------------------------------------- 1 | # Array .some() and .every() -------------------------------------------------------------------------------- /ES6/31 - Spreading into a function - 174357566.md: -------------------------------------------------------------------------------- 1 | # Spreading into a function -------------------------------------------------------------------------------- /ES6/35 - Building your own Promises - 174357575.md: -------------------------------------------------------------------------------- 1 | # Building your own Promises -------------------------------------------------------------------------------- /ES6/46 - Creating your own Modules - 174357578.md: -------------------------------------------------------------------------------- 1 | # Creating your own Modules -------------------------------------------------------------------------------- /ES6/47 - More ES6 Module Practice - 174357597.md: -------------------------------------------------------------------------------- 1 | # More ES6 Module Practice -------------------------------------------------------------------------------- /ES6/74 - 74 - padStart and padEnd - 235537442.md: -------------------------------------------------------------------------------- 1 | # 74 - padStart and padEnd -------------------------------------------------------------------------------- /ES6/8 - Arrow Functions and `this` - 174357538.md: -------------------------------------------------------------------------------- 1 | # Arrow Functions and `this` -------------------------------------------------------------------------------- /ES6/9 - Default Function Arguments - 174357537.md: -------------------------------------------------------------------------------- 1 | # Default Function Arguments -------------------------------------------------------------------------------- /GAT/29 - Paginating Data in Gatsby - 455656644.md: -------------------------------------------------------------------------------- 1 | # Paginating Data in Gatsby -------------------------------------------------------------------------------- /GAT/32 - Single Slicemaster Pages - 455688638.md: -------------------------------------------------------------------------------- 1 | # Single Slicemaster Pages -------------------------------------------------------------------------------- /GAT/33 - Gatsby SEO and Head Tags - 455843538.md: -------------------------------------------------------------------------------- 1 | # Gatsby SEO and Head Tags -------------------------------------------------------------------------------- /GAT/6 - Creating Layouts in Gatsby - 455607781.md: -------------------------------------------------------------------------------- 1 | # Creating Layouts in Gatsby -------------------------------------------------------------------------------- /GRID/15 - Naming Lines in CSS Grid - 249557306.md: -------------------------------------------------------------------------------- 1 | # Naming Lines in CSS Grid -------------------------------------------------------------------------------- /GRID/7 - Sizing tracks in CSS Grid - 249541847.md: -------------------------------------------------------------------------------- 1 | # Sizing tracks in CSS Grid -------------------------------------------------------------------------------- /GRID/8 - CSS Grid repeat function - 249542534.md: -------------------------------------------------------------------------------- 1 | # CSS Grid repeat function -------------------------------------------------------------------------------- /JS3/11 - Custom HTML5 Video Player - 194129583.md: -------------------------------------------------------------------------------- 1 | # Custom HTML5 Video Player -------------------------------------------------------------------------------- /JS3/20 - Native Speech Recognition - 194128445.md: -------------------------------------------------------------------------------- 1 | # Native Speech Recognition -------------------------------------------------------------------------------- /JS3/27 - Click and Drag to Scroll - 194158963.md: -------------------------------------------------------------------------------- 1 | # Click and Drag to Scroll -------------------------------------------------------------------------------- /JS3/28 - Video Speed Controller UI - 194158897.md: -------------------------------------------------------------------------------- 1 | # Video Speed Controller UI -------------------------------------------------------------------------------- /JS3/5 - Flex Panels Image Gallery - 194130264.md: -------------------------------------------------------------------------------- 1 | # Flex Panels Image Gallery -------------------------------------------------------------------------------- /NODE/28 - Sending email with Nodejs - 214188808.md: -------------------------------------------------------------------------------- 1 | # Sending email with Nodejs -------------------------------------------------------------------------------- /NODE/5 - Core Concept - Templating - 214160355.md: -------------------------------------------------------------------------------- 1 | # Core Concept - Templating -------------------------------------------------------------------------------- /NODE/9 - Creating our Store Model - 214162717.md: -------------------------------------------------------------------------------- 1 | # Creating our Store Model -------------------------------------------------------------------------------- /RDX/16 - Redux Reducer Composition - 195952726.md: -------------------------------------------------------------------------------- 1 | # Redux Reducer Composition -------------------------------------------------------------------------------- /RDX/19 - Learning Redux Dev Tools - 195953344.md: -------------------------------------------------------------------------------- 1 | # Learning Redux Dev Tools -------------------------------------------------------------------------------- /RFB/15 - Displaying State with JSX - 257754566.md: -------------------------------------------------------------------------------- 1 | # Displaying State with JSX -------------------------------------------------------------------------------- /RFB/16 - Updating our Order State - 257755154.md: -------------------------------------------------------------------------------- 1 | # Updating our Order State -------------------------------------------------------------------------------- /RFB/21 - Removing Items from State - 257758978.md: -------------------------------------------------------------------------------- 1 | # Removing Items from State -------------------------------------------------------------------------------- /RFB/22 - Animating React Components - 257759438.md: -------------------------------------------------------------------------------- 1 | # Animating React Components -------------------------------------------------------------------------------- /RFB/9 - Routing with React Router - 257751120.md: -------------------------------------------------------------------------------- 1 | # Routing with React Router -------------------------------------------------------------------------------- /STPU/11 - 11 - Emmet - Tag Wrapping - 220668964.md: -------------------------------------------------------------------------------- 1 | # 11 - Emmet - Tag Wrapping -------------------------------------------------------------------------------- /STPU/3 - 03 - The Command Palette - 220668072.md: -------------------------------------------------------------------------------- 1 | # 03 - The Command Palette -------------------------------------------------------------------------------- /WTF/19 - Flexbox single line form - 195971710.md: -------------------------------------------------------------------------------- 1 | # Flexbox single line form -------------------------------------------------------------------------------- /ARG/37 - Creating a Sign In Component - 506318851.md: -------------------------------------------------------------------------------- 1 | # Creating a Sign In Component -------------------------------------------------------------------------------- /ARG/64 - Permissions Access Functions - 506790883.md: -------------------------------------------------------------------------------- 1 | # Permissions Access Functions -------------------------------------------------------------------------------- /ARG/83 - Mocking 3rd Party Libraries - 626534601.md: -------------------------------------------------------------------------------- 1 | # Mocking 3rd Party Libraries -------------------------------------------------------------------------------- /BJS/21 - The DOM - Selecting Elements - 375526640.md: -------------------------------------------------------------------------------- 1 | # The DOM - Selecting Elements -------------------------------------------------------------------------------- /BJS/58 - Building a Gallery Exercise - 375805123.md: -------------------------------------------------------------------------------- 1 | # Building a Gallery Exercise -------------------------------------------------------------------------------- /CLPU/6 - Custom ZSH Themes & Prompts - 195975225.md: -------------------------------------------------------------------------------- 1 | # Custom ZSH Themes & Prompts -------------------------------------------------------------------------------- /ES6/25 - Array.from() and Array.of() - 174357564.md: -------------------------------------------------------------------------------- 1 | # Array.from() and Array.of() -------------------------------------------------------------------------------- /ES6/28 - Spread Operator Introduction - 174357560.md: -------------------------------------------------------------------------------- 1 | # Spread Operator Introduction -------------------------------------------------------------------------------- /ES6/39 - Getting Started with ESLint - 174357583.md: -------------------------------------------------------------------------------- 1 | # Getting Started with ESLint -------------------------------------------------------------------------------- /ES6/6 - Arrow Functions Introduction - 174357534.md: -------------------------------------------------------------------------------- 1 | # Arrow Functions Introduction -------------------------------------------------------------------------------- /ES6/69 - 69 - All About Async + Await - 235570912.md: -------------------------------------------------------------------------------- 1 | # 69 - All About Async + Await -------------------------------------------------------------------------------- /ES6/7 - More Arrow Function Examples - 174357536.md: -------------------------------------------------------------------------------- 1 | # More Arrow Function Examples -------------------------------------------------------------------------------- /GAT/11 - Setting up our Headless CMS - 455620394.md: -------------------------------------------------------------------------------- 1 | # Setting up our Headless CMS -------------------------------------------------------------------------------- /GAT/13 - Creating Data Relationships - 455624835.md: -------------------------------------------------------------------------------- 1 | # Creating Data Relationships -------------------------------------------------------------------------------- /GAT/15 - Custom CMS Inputs in Sanity - 455630215.md: -------------------------------------------------------------------------------- 1 | # Custom CMS Inputs in Sanity -------------------------------------------------------------------------------- /GAT/37 - Calculating our Order Total - 455873951.md: -------------------------------------------------------------------------------- 1 | # Calculating our Order Total -------------------------------------------------------------------------------- /GRID/11 - Spanning and Placing Cardio - 249544410.md: -------------------------------------------------------------------------------- 1 | # Spanning and Placing Cardio -------------------------------------------------------------------------------- /GRID/6 - CSS grid-auto-flow Explained - 249541416.md: -------------------------------------------------------------------------------- 1 | # CSS grid-auto-flow Explained -------------------------------------------------------------------------------- /JS3/26 - Stripe Follow Along Dropdown - 194127921.md: -------------------------------------------------------------------------------- 1 | # Stripe Follow Along Dropdown -------------------------------------------------------------------------------- /JS3/9 - 14 Must Know Dev Tools Tricks - 194129876.md: -------------------------------------------------------------------------------- 1 | # 14 Must Know Dev Tools Tricks -------------------------------------------------------------------------------- /NODE/17 - Quick Data Visualization Tip - 214225203.md: -------------------------------------------------------------------------------- 1 | # Quick Data Visualization Tip -------------------------------------------------------------------------------- /NODE/21 - Custom MongoDB Aggregations - 214179977.md: -------------------------------------------------------------------------------- 1 | # Custom MongoDB Aggregations -------------------------------------------------------------------------------- /NODE/35 - Pushing User Data to our API - 214206479.md: -------------------------------------------------------------------------------- 1 | # Pushing User Data to our API -------------------------------------------------------------------------------- /NODE/37 - Adding a Reviews Data Model - 214212385.md: -------------------------------------------------------------------------------- 1 | # Adding a Reviews Data Model -------------------------------------------------------------------------------- /RDX/12 - Updating State with Reducers - 195952051.md: -------------------------------------------------------------------------------- 1 | # Updating State with Reducers -------------------------------------------------------------------------------- /RDX/2 - App Layout + Component Setup - 195950019.md: -------------------------------------------------------------------------------- 1 | # App Layout + Component Setup -------------------------------------------------------------------------------- /RFB/10 - Helper and Utility Functions - 257751497.md: -------------------------------------------------------------------------------- 1 | # Helper and Utility Functions -------------------------------------------------------------------------------- /RFB/3 - Creating our First Components - 257748880.md: -------------------------------------------------------------------------------- 1 | # Creating our First Components -------------------------------------------------------------------------------- /STPU/13 - 13 - Emmet - Value Bumping - 220669066.md: -------------------------------------------------------------------------------- 1 | # 13 - Emmet - Value Bumping -------------------------------------------------------------------------------- /STPU/4 - 04 - Mastering Goto Anything - 220668143.md: -------------------------------------------------------------------------------- 1 | # 04 - Mastering Goto Anything -------------------------------------------------------------------------------- /ARG/1 - Tooling and Starter Files Setup - 505041308.md: -------------------------------------------------------------------------------- 1 | # Tooling and Starter Files Setup -------------------------------------------------------------------------------- /ARG/14 - Adding Auth to our Application - 505017385.md: -------------------------------------------------------------------------------- 1 | # Adding Auth to our Application -------------------------------------------------------------------------------- /ARG/15 - Creating our Products Data Type - 505016325.md: -------------------------------------------------------------------------------- 1 | # Creating our Products Data Type -------------------------------------------------------------------------------- /ARG/38 - Creating a Sign Out Component - 506327491.md: -------------------------------------------------------------------------------- 1 | # Creating a Sign Out Component -------------------------------------------------------------------------------- /ARG/49 - Cart - Remove From Cart Button - 506365360.md: -------------------------------------------------------------------------------- 1 | # Cart - Remove From Cart Button -------------------------------------------------------------------------------- /ARG/52 - Setting Up our Stripe Checkout - 506377793.md: -------------------------------------------------------------------------------- 1 | # Setting Up our Stripe Checkout -------------------------------------------------------------------------------- /ARG/76 - More on Testing Library Queries - 626514018.md: -------------------------------------------------------------------------------- 1 | # More on Testing Library Queries -------------------------------------------------------------------------------- /ARG/77 - Mocking GraphQL Data Requests - 626514831.md: -------------------------------------------------------------------------------- 1 | # Mocking GraphQL Data Requests -------------------------------------------------------------------------------- /ARG/78 - Updating Props and re-rendering - 626519247.md: -------------------------------------------------------------------------------- 1 | # Updating Props and re-rendering -------------------------------------------------------------------------------- /BJS/11 - Types - Booleans and Equality - 375486249.md: -------------------------------------------------------------------------------- 1 | # Types - Booleans and Equality -------------------------------------------------------------------------------- /BJS/23 - The DOM - Working with Classes - 375536865.md: -------------------------------------------------------------------------------- 1 | # The DOM - Working with Classes -------------------------------------------------------------------------------- /BJS/46 - Array Cardio - Static Methods - 375671123.md: -------------------------------------------------------------------------------- 1 | # Array Cardio - Static Methods -------------------------------------------------------------------------------- /BJS/47 - Array Cardio - Instance Methods - 375674172.md: -------------------------------------------------------------------------------- 1 | # Array Cardio - Instance Methods -------------------------------------------------------------------------------- /BJS/50 - Looping and Iterating - Mapping - 375690567.md: -------------------------------------------------------------------------------- 1 | # Looping and Iterating - Mapping -------------------------------------------------------------------------------- /BJS/52 - Looping and Iterating - Reduce - 375696743.md: -------------------------------------------------------------------------------- 1 | # Looping and Iterating - Reduce -------------------------------------------------------------------------------- /BJS/55 - Face Detection and Censorship - 375731570.md: -------------------------------------------------------------------------------- 1 | # Face Detection and Censorship -------------------------------------------------------------------------------- /BJS/82 - using open source npm packages - 375820314.md: -------------------------------------------------------------------------------- 1 | # using open source npm packages -------------------------------------------------------------------------------- /ES6/12 - Template Strings Introduction - 174357539.md: -------------------------------------------------------------------------------- 1 | # Template Strings Introduction -------------------------------------------------------------------------------- /ES6/26 - Array. find() and .findIndex() - 174357565.md: -------------------------------------------------------------------------------- 1 | # Array. find() and .findIndex() -------------------------------------------------------------------------------- /ES6/3 - let and const in the Real World - 174357531.md: -------------------------------------------------------------------------------- 1 | # let and const in the Real World -------------------------------------------------------------------------------- /ES6/37 - Working with Multiple Promises - 174357579.md: -------------------------------------------------------------------------------- 1 | # Working with Multiple Promises -------------------------------------------------------------------------------- /ES6/41 - Line and File Specific Settings - 174357586.md: -------------------------------------------------------------------------------- 1 | # Line and File Specific Settings -------------------------------------------------------------------------------- /ES6/49 - All About Babel + npm scripts - 174357587.md: -------------------------------------------------------------------------------- 1 | # All About Babel + npm scripts -------------------------------------------------------------------------------- /ES6/5 - Is var Dead? What should I use? - 174357532.md: -------------------------------------------------------------------------------- 1 | # Is var Dead? What should I use? -------------------------------------------------------------------------------- /ES6/51 - Prototypal Inheritance Review - 174357598.md: -------------------------------------------------------------------------------- 1 | # Prototypal Inheritance Review -------------------------------------------------------------------------------- /ES6/57 - Looping Generators with for of - 174357601.md: -------------------------------------------------------------------------------- 1 | # Looping Generators with for of -------------------------------------------------------------------------------- /ES6/62 - Understanding Sets with Brunch - 174357609.md: -------------------------------------------------------------------------------- 1 | # Understanding Sets with Brunch -------------------------------------------------------------------------------- /ES6/65 - Map Metadata with DOM Node Keys - 174357610.md: -------------------------------------------------------------------------------- 1 | # Map Metadata with DOM Node Keys -------------------------------------------------------------------------------- /ES6/66 - WeakMap and Garbage Collection - 174357611.md: -------------------------------------------------------------------------------- 1 | # WeakMap and Garbage Collection -------------------------------------------------------------------------------- /ES6/75 - 75 - ES7 Exponential Operator - 235537482.md: -------------------------------------------------------------------------------- 1 | # 75 - ES7 Exponential Operator -------------------------------------------------------------------------------- /GAT/14 - Creating our Person Data Type - 455628540.md: -------------------------------------------------------------------------------- 1 | # Creating our Person Data Type -------------------------------------------------------------------------------- /GAT/36 - Custom Hook for our Order Form - 455868155.md: -------------------------------------------------------------------------------- 1 | # Custom Hook for our Order Form -------------------------------------------------------------------------------- /GAT/41 - Coding our Serverless Function - 455834986.md: -------------------------------------------------------------------------------- 1 | # Coding our Serverless Function -------------------------------------------------------------------------------- /GAT/47 - Displaying the Home Page Data - 456279463.md: -------------------------------------------------------------------------------- 1 | # Displaying the Home Page Data -------------------------------------------------------------------------------- /GAT/52 - Making the Website Responsive - 457041115.md: -------------------------------------------------------------------------------- 1 | # Making the Website Responsive -------------------------------------------------------------------------------- /GRID/17 - CSS Grid Alignment + Centering - 249558283.md: -------------------------------------------------------------------------------- 1 | # CSS Grid Alignment + Centering -------------------------------------------------------------------------------- /GRID/2 - Starter Files and Tooling Setup - 249523152.md: -------------------------------------------------------------------------------- 1 | # Starter Files and Tooling Setup -------------------------------------------------------------------------------- /JS3/18 - Tally String Times with Reduce - 194128821.md: -------------------------------------------------------------------------------- 1 | # Tally String Times with Reduce -------------------------------------------------------------------------------- /MMD/2 - Paragraphs and Text Decoration - 195944298.md: -------------------------------------------------------------------------------- 1 | # Paragraphs and Text Decoration -------------------------------------------------------------------------------- /NODE/10 - Saving Stores and using Mixins - 214163339.md: -------------------------------------------------------------------------------- 1 | # Saving Stores and using Mixins -------------------------------------------------------------------------------- /NODE/36 - Displaying our Hearted Stores - 214212107.md: -------------------------------------------------------------------------------- 1 | # Displaying our Hearted Stores -------------------------------------------------------------------------------- /NODE/6 - Core Concept - Template Helpers - 214161014.md: -------------------------------------------------------------------------------- 1 | # Core Concept - Template Helpers -------------------------------------------------------------------------------- /RDX/14 - Displaying and Adding Comments - 195952337.md: -------------------------------------------------------------------------------- 1 | # Displaying and Adding Comments -------------------------------------------------------------------------------- /RFB/17 - Displaying Order State with JSX - 257755907.md: -------------------------------------------------------------------------------- 1 | # Displaying Order State with JSX -------------------------------------------------------------------------------- /RFB/25 - Building React for Production - 257763352.md: -------------------------------------------------------------------------------- 1 | # Building React for Production -------------------------------------------------------------------------------- /RFB/28 - Deploying to an Apache Server - 257764517.md: -------------------------------------------------------------------------------- 1 | # Deploying to an Apache Server -------------------------------------------------------------------------------- /RFB/29 - Ejecting from create-react-app - 184595963.md: -------------------------------------------------------------------------------- 1 | # Ejecting from create-react-app -------------------------------------------------------------------------------- /RFB/7 - Passing Dynamic data with props - 257750327.md: -------------------------------------------------------------------------------- 1 | # Passing Dynamic data with props -------------------------------------------------------------------------------- /RFB/8 - Stateless Functional Components - 257750688.md: -------------------------------------------------------------------------------- 1 | # Stateless Functional Components -------------------------------------------------------------------------------- /STPU/15 - 15 - Line Bubbling or Swapping - 220669130.md: -------------------------------------------------------------------------------- 1 | # 15 - Line Bubbling or Swapping -------------------------------------------------------------------------------- /STPU/5 - 05 - Predictive Filename Typing - 220668329.md: -------------------------------------------------------------------------------- 1 | # 05 - Predictive Filename Typing -------------------------------------------------------------------------------- /WTF/4 - Wrapping elements with Flexbox - 197920688.md: -------------------------------------------------------------------------------- 1 | # Wrapping elements with Flexbox -------------------------------------------------------------------------------- /ARG/13 - Creating our first User data type - 505018706.md: -------------------------------------------------------------------------------- 1 | # Creating our first User data type -------------------------------------------------------------------------------- /ARG/4 - Creating a Page Layout Component - 505035224.md: -------------------------------------------------------------------------------- 1 | # Creating a Page Layout Component -------------------------------------------------------------------------------- /ARG/61 - Roles and Permissions - A Primer - 506719578.md: -------------------------------------------------------------------------------- 1 | # Roles and Permissions - A Primer -------------------------------------------------------------------------------- /ARG/63 - Basic Access Control via Sessions - 506741781.md: -------------------------------------------------------------------------------- 1 | # Basic Access Control via Sessions -------------------------------------------------------------------------------- /ARG/68 - User and Field Based Permissions - 506804934.md: -------------------------------------------------------------------------------- 1 | # User and Field Based Permissions -------------------------------------------------------------------------------- /ARG/81 - Testing User Events and Mutations - 626528043.md: -------------------------------------------------------------------------------- 1 | # Testing User Events and Mutations -------------------------------------------------------------------------------- /ARG/82 - Testing Password Reset Component - 626532450.md: -------------------------------------------------------------------------------- 1 | # Testing Password Reset Component -------------------------------------------------------------------------------- /BJS/1 - Welcome and Course Methodologies - 375993924.md: -------------------------------------------------------------------------------- 1 | # Welcome and Course Methodologies -------------------------------------------------------------------------------- /BJS/2 - Browser, Editor and Terminal Setup - 375470196.md: -------------------------------------------------------------------------------- 1 | # Browser, Editor and Terminal Setup -------------------------------------------------------------------------------- /BJS/66 - The Event Loop and Callback Hell - 375826300.md: -------------------------------------------------------------------------------- 1 | # The Event Loop and Callback Hell -------------------------------------------------------------------------------- /BJS/81 - Bundling and Building with Parcel - 375822581.md: -------------------------------------------------------------------------------- 1 | # Bundling and Building with Parcel -------------------------------------------------------------------------------- /ES6/10 - When NOT to use an Arrow Function - 174357540.md: -------------------------------------------------------------------------------- 1 | # When NOT to use an Arrow Function -------------------------------------------------------------------------------- /ES6/36 - Chaining Promises + Flow Control - 174357570.md: -------------------------------------------------------------------------------- 1 | # Chaining Promises + Flow Control -------------------------------------------------------------------------------- /ES6/70 - 70 - Async + Await Error Handling - 235537238.md: -------------------------------------------------------------------------------- 1 | # 70 - Async + Await Error Handling -------------------------------------------------------------------------------- /ES6/71 - 71 - Waiting on Multiple Promises - 235572700.md: -------------------------------------------------------------------------------- 1 | # 71 - Waiting on Multiple Promises -------------------------------------------------------------------------------- /GAT/2 - Tooling and Starter File Setup - 455597472.md: -------------------------------------------------------------------------------- 1 | # Tooling and Starter File Setup 2 | -------------------------------------------------------------------------------- /GAT/39 - An Intro to Serverless Functions - 455812210.md: -------------------------------------------------------------------------------- 1 | # An Intro to Serverless Functions -------------------------------------------------------------------------------- /GAT/5 - Routing and Navigation in Gatsby - 455605006.md: -------------------------------------------------------------------------------- 1 | # Routing and Navigation in Gatsby -------------------------------------------------------------------------------- /GRID/19 - Nesting Grid with Album Layouts - 249559631.md: -------------------------------------------------------------------------------- 1 | # Nesting Grid with Album Layouts -------------------------------------------------------------------------------- /JS3/15 - LocalStorage and Event Delegation - 194129092.md: -------------------------------------------------------------------------------- 1 | # LocalStorage and Event Delegation -------------------------------------------------------------------------------- /JS3/16 - CSS Text Shadow Mouse Move Effect - 194128990.md: -------------------------------------------------------------------------------- 1 | # CSS Text Shadow Mouse Move Effect -------------------------------------------------------------------------------- /JS3/3 - Playing with CSS Variables and JS - 194130480.md: -------------------------------------------------------------------------------- 1 | # Playing with CSS Variables and JS -------------------------------------------------------------------------------- /NODE/13 - Querying our Database for Stores - 214166044.md: -------------------------------------------------------------------------------- 1 | # Querying our Database for Stores -------------------------------------------------------------------------------- /NODE/15 - Saving Lat and Lng for each store - 214209854.md: -------------------------------------------------------------------------------- 1 | # Saving Lat and Lng for each store -------------------------------------------------------------------------------- /NODE/32 - Creating an Ajax Search Interface - 214198175.md: -------------------------------------------------------------------------------- 1 | # Creating an Ajax Search Interface -------------------------------------------------------------------------------- /NODE/44 - Deploying to Digital Ocean Linux - 214228856.md: -------------------------------------------------------------------------------- 1 | # Deploying to Digital Ocean Linux -------------------------------------------------------------------------------- /RDX/1 - Setting Up Our Webpack Environment - 195949909.md: -------------------------------------------------------------------------------- 1 | # Setting Up Our Webpack Environment -------------------------------------------------------------------------------- /STPU/18 - 18 - Working with Multiple Carets - 220669398.md: -------------------------------------------------------------------------------- 1 | # 18 - Working with Multiple Carets -------------------------------------------------------------------------------- /STPU/7 - 07 - Creating and Using Snippets - 220668523.md: -------------------------------------------------------------------------------- 1 | # 07 - Creating and Using Snippets -------------------------------------------------------------------------------- /WTF/1 - Introduction to What The FlexBox - 195968908.md: -------------------------------------------------------------------------------- 1 | # Introduction to What The FlexBox -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "start": "node make-files.mjs" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /ARG/24 - Creating Products via our Mutations - 507200475.md: -------------------------------------------------------------------------------- 1 | # Creating Products via our Mutations -------------------------------------------------------------------------------- /ARG/31 - Evicting Items from the Apollo Cache - 507148090.md: -------------------------------------------------------------------------------- 1 | # Evicting Items from the Apollo Cache -------------------------------------------------------------------------------- /ARG/40 - Password Reset - Requesting a Reset - 506335828.md: -------------------------------------------------------------------------------- 1 | # Password Reset - Requesting a Reset -------------------------------------------------------------------------------- /ARG/42 - Password Reset - sending the email - 506342937.md: -------------------------------------------------------------------------------- 1 | # Password Reset - sending the email -------------------------------------------------------------------------------- /ARG/47 - Cart - Adding Items To Cart in React - 506361801.md: -------------------------------------------------------------------------------- 1 | # Cart - Adding Items To Cart in React -------------------------------------------------------------------------------- /ARG/48 - Cart - Animating the Cart Cart Value - 506363289.md: -------------------------------------------------------------------------------- 1 | # Cart - Animating the Cart Cart Value -------------------------------------------------------------------------------- /ARG/65 - More Flexible Rule Based Functions - 506796165.md: -------------------------------------------------------------------------------- 1 | # More Flexible Rule Based Functions -------------------------------------------------------------------------------- /ARG/70 - Creating a Gated Sign In Component - 506808502.md: -------------------------------------------------------------------------------- 1 | # Creating a Gated Sign In Component -------------------------------------------------------------------------------- /ARG/71 - Test Setup, Tooling and Methodology - 626506085.md: -------------------------------------------------------------------------------- 1 | # Test Setup, Tooling and Methodology -------------------------------------------------------------------------------- /BJS/14 - Functions - Parameters and Arguments - 375494555.md: -------------------------------------------------------------------------------- 1 | # Functions - Parameters and Arguments -------------------------------------------------------------------------------- /BJS/15 - Different Ways to Declare Functions - 375500347.md: -------------------------------------------------------------------------------- 1 | # Different Ways to Declare Functions -------------------------------------------------------------------------------- /BJS/26 - The DOM - HTML from Strings and XSS - 375545274.md: -------------------------------------------------------------------------------- 1 | # The DOM - HTML from Strings and XSS -------------------------------------------------------------------------------- /CLPU/10 - Using z to jump to frecent folders - 195976114.md: -------------------------------------------------------------------------------- 1 | # Using z to jump to frecent folders -------------------------------------------------------------------------------- /ES6/43 - ESLint inside Atom and Sublime Text - 174357592.md: -------------------------------------------------------------------------------- 1 | # ESLint inside Atom and Sublime Text -------------------------------------------------------------------------------- /ES6/50 - Polyfilling ES6 for Older Browsers - 174357588.md: -------------------------------------------------------------------------------- 1 | # Polyfilling ES6 for Older Browsers -------------------------------------------------------------------------------- /ES6/53 - Extending Classes and using super() - 174357590.md: -------------------------------------------------------------------------------- 1 | # Extending Classes and using super() -------------------------------------------------------------------------------- /ES6/60 - Using Proxies to combat silly errors - 174357605.md: -------------------------------------------------------------------------------- 1 | # Using Proxies to combat silly errors -------------------------------------------------------------------------------- /GAT/25 - Dynamically Creating Toppings Pages - 455687340.md: -------------------------------------------------------------------------------- 1 | # Dynamically Creating Toppings Pages -------------------------------------------------------------------------------- /GAT/28 - Querying and Displaying Pagination - 456266765.md: -------------------------------------------------------------------------------- 1 | # Querying and Displaying Pagination -------------------------------------------------------------------------------- /GRID/13 - Using minmax() for Responsive Grids - 249545601.md: -------------------------------------------------------------------------------- 1 | # Using minmax() for Responsive Grids -------------------------------------------------------------------------------- /GRID/16 - grid-auto-flow dense Block Fitting - 249557777.md: -------------------------------------------------------------------------------- 1 | # grid-auto-flow dense Block Fitting -------------------------------------------------------------------------------- /GRID/23 - Bootstrappy Grid with CSS Variables - 249566457.md: -------------------------------------------------------------------------------- 1 | # Bootstrappy Grid with CSS Variables -------------------------------------------------------------------------------- /GRID/5 - CSS Grid Implicit vs Explicit Tracks - 249540846.md: -------------------------------------------------------------------------------- 1 | # CSS Grid Implicit vs Explicit Tracks -------------------------------------------------------------------------------- /JS3/12 - Key Sequence Detection (KONAMI CODE) - 194129539.md: -------------------------------------------------------------------------------- 1 | # Key Sequence Detection (KONAMI CODE) -------------------------------------------------------------------------------- /JS3/17 - Sorting Band Names without articles - 194128929.md: -------------------------------------------------------------------------------- 1 | # Sorting Band Names without articles -------------------------------------------------------------------------------- /NODE/14 - Creating an Editing Flow for Stores - 214166743.md: -------------------------------------------------------------------------------- 1 | # Creating an Editing Flow for Stores -------------------------------------------------------------------------------- /NODE/26 - Creating a User Account Edit Screen - 214185452.md: -------------------------------------------------------------------------------- 1 | # Creating a User Account Edit Screen -------------------------------------------------------------------------------- /NODE/33 - Creating a Geospatial Ajax Endpoint - 214202476.md: -------------------------------------------------------------------------------- 1 | # Creating a Geospatial Ajax Endpoint -------------------------------------------------------------------------------- /RDX/15 - Updating Comment State in our Store - 195952448.md: -------------------------------------------------------------------------------- 1 | # Updating Comment State in our Store -------------------------------------------------------------------------------- /RFB/23 - Component Validation with PropTypes - 257760776.md: -------------------------------------------------------------------------------- 1 | # Component Validation with PropTypes -------------------------------------------------------------------------------- /WTF/14 - Pure Flexbox navigation code along - 195970444.md: -------------------------------------------------------------------------------- 1 | # Pure Flexbox navigation code along -------------------------------------------------------------------------------- /WTF/3 - Working with Flexbox flex-direction - 195969097.md: -------------------------------------------------------------------------------- 1 | # Working with Flexbox flex-direction -------------------------------------------------------------------------------- /ARG/5 - Creating our Header and Nav Components - 505034111.md: -------------------------------------------------------------------------------- 1 | # Creating our Header and Nav Components -------------------------------------------------------------------------------- /ARG/58 - Finishing up the Checkout UI and Flow - 506643059.md: -------------------------------------------------------------------------------- 1 | # Finishing up the Checkout UI and Flow -------------------------------------------------------------------------------- /ARG/6 - An Intro to Styled Components and CSS - 505032132.md: -------------------------------------------------------------------------------- 1 | # An Intro to Styled Components and CSS -------------------------------------------------------------------------------- /BJS/20 - The DOM - Introduction to the document - 375526026.md: -------------------------------------------------------------------------------- 1 | # The DOM - Introduction to the document -------------------------------------------------------------------------------- /BJS/49 - Looping and Iterating - Array .forEach - 375687421.md: -------------------------------------------------------------------------------- 1 | # Looping and Iterating - Array .forEach -------------------------------------------------------------------------------- /BJS/63 - Prototypes and Prototypal Inheritance - 375821499.md: -------------------------------------------------------------------------------- 1 | # Prototypes and Prototypal Inheritance -------------------------------------------------------------------------------- /ES6/20 - Swapping Variables with Destructuring - 174357555.md: -------------------------------------------------------------------------------- 1 | # Swapping Variables with Destructuring -------------------------------------------------------------------------------- /ES6/56 - Using Generators for Ajax Flow Control - 174357603.md: -------------------------------------------------------------------------------- 1 | # Using Generators for Ajax Flow Control -------------------------------------------------------------------------------- /ES6/76 - 76 - Function Arguments Trailing Comma - 235537505.md: -------------------------------------------------------------------------------- 1 | # 76 - Function Arguments Trailing Comma -------------------------------------------------------------------------------- /GAT/3 - What is Gatsby? Why is it so awesome? - 455600314.md: -------------------------------------------------------------------------------- 1 | # What is Gatsby? Why is it so awesome? -------------------------------------------------------------------------------- /GAT/30 - Filtering the data based on Pagination - 455671737.md: -------------------------------------------------------------------------------- 1 | # Filtering the data based on Pagination -------------------------------------------------------------------------------- /GAT/44 - Creating a one-off Store Settings Page - 456011274.md: -------------------------------------------------------------------------------- 1 | # Creating a one-off Store Settings Page -------------------------------------------------------------------------------- /JS3/14 - Object and Arrays - Reference VS Copy - 194129338.md: -------------------------------------------------------------------------------- 1 | # Object and Arrays - Reference VS Copy -------------------------------------------------------------------------------- /MMD/1 - Introduction to Markdown & The Tooling - 195944189.md: -------------------------------------------------------------------------------- 1 | # Introduction to Markdown & The Tooling -------------------------------------------------------------------------------- /NODE/19 - Routing and Templating Single Stores - 214178105.md: -------------------------------------------------------------------------------- 1 | # Routing and Templating Single Stores -------------------------------------------------------------------------------- /NODE/34 - Plotting Stores on a Custom Google Map - 214203627.md: -------------------------------------------------------------------------------- 1 | # Plotting Stores on a Custom Google Map -------------------------------------------------------------------------------- /RDX/13 - Displaying the Single Photo Component - 195952221.md: -------------------------------------------------------------------------------- 1 | # Displaying the Single Photo Component -------------------------------------------------------------------------------- /RDX/8 - Integrating our Store with React Router - 195950848.md: -------------------------------------------------------------------------------- 1 | # Integrating our Store with React Router -------------------------------------------------------------------------------- /RFB/5 - Loading CSS into our React Application - 257749718.md: -------------------------------------------------------------------------------- 1 | # Loading CSS into our React Application -------------------------------------------------------------------------------- /STPU/16 - 16 - Introduction to Panes and Groups - 220669154.md: -------------------------------------------------------------------------------- 1 | # 16 - Introduction to Panes and Groups -------------------------------------------------------------------------------- /STPU/9 - 09 - Finding, Selecting and Replacing - 220668699.md: -------------------------------------------------------------------------------- 1 | # 09 - Finding, Selecting and Replacing -------------------------------------------------------------------------------- /WTF/15 - Mobile content reordering with Flexbox - 195970711.md: -------------------------------------------------------------------------------- 1 | # Mobile content reordering with Flexbox -------------------------------------------------------------------------------- /WTF/9 - Alignment and Centering with align-self - 195969522.md: -------------------------------------------------------------------------------- 1 | # Alignment and Centering with align-self -------------------------------------------------------------------------------- /ARG/23 - Hooking up our File input and Form Styles - 507212663.md: -------------------------------------------------------------------------------- 1 | # Hooking up our File input and Form Styles -------------------------------------------------------------------------------- /ARG/34 - Adjusting our Query for Pagination Values - 507131824.md: -------------------------------------------------------------------------------- 1 | # Adjusting our Query for Pagination Values -------------------------------------------------------------------------------- /ARG/41 - Password Reset - Setting a new Password - 506337840.md: -------------------------------------------------------------------------------- 1 | # Password Reset - Setting a new Password -------------------------------------------------------------------------------- /ARG/50 - Cart - Evicting Cart Items from the Cache - 506366816.md: -------------------------------------------------------------------------------- 1 | # Cart - Evicting Cart Items from the Cache -------------------------------------------------------------------------------- /BJS/22 - The DOM - Element Properties and Methods - 375534527.md: -------------------------------------------------------------------------------- 1 | # The DOM - Element Properties and Methods -------------------------------------------------------------------------------- /BJS/27 - The DOM - Traversing and Removing Nodes - 375547511.md: -------------------------------------------------------------------------------- 1 | # The DOM - Traversing and Removing Nodes -------------------------------------------------------------------------------- /BJS/31 - Events - Prevent Default and Form Events - 375560179.md: -------------------------------------------------------------------------------- 1 | # Events - Prevent Default and Form Events -------------------------------------------------------------------------------- /BJS/35 - Scroll Events and Intersection Observer - 375574016.md: -------------------------------------------------------------------------------- 1 | # Scroll Events and Intersection Observer -------------------------------------------------------------------------------- /BJS/39 - Coercion, Ternaries and Conditional Abuse - 375645285.md: -------------------------------------------------------------------------------- 1 | # Coercion, Ternaries and Conditional Abuse -------------------------------------------------------------------------------- /BJS/53 - Looping and Iterating - Reduce Exercise - 375700479.md: -------------------------------------------------------------------------------- 1 | # Looping and Iterating - Reduce Exercise -------------------------------------------------------------------------------- /BJS/64 - Prototype Refactor of the Slider Exercise - 375823234.md: -------------------------------------------------------------------------------- 1 | # Prototype Refactor of the Slider Exercise -------------------------------------------------------------------------------- /BJS/69 - Refactoring Callback Hell to Promise Land - 375829489.md: -------------------------------------------------------------------------------- 1 | # Refactoring Callback Hell to Promise Land -------------------------------------------------------------------------------- /CLPU/1 - Introduction to Command Line Power User - 195974613.md: -------------------------------------------------------------------------------- 1 | # Introduction to Command Line Power User -------------------------------------------------------------------------------- /CLPU/9 - Getting the most out of ZSH with Plugins - 195975908.md: -------------------------------------------------------------------------------- 1 | # Getting the most out of ZSH with Plugins -------------------------------------------------------------------------------- /ES6/67 - 67 - Async Await - Native Promises Review - 235537109.md: -------------------------------------------------------------------------------- 1 | # 67 - Async Await - Native Promises Review -------------------------------------------------------------------------------- /ES6/68 - 68 - Async Await - Custom Promises Review - 235537188.md: -------------------------------------------------------------------------------- 1 | # 68 - Async Await - Custom Promises Review -------------------------------------------------------------------------------- /ES6/77 - 77 - Object.entries() and Object.values() - 235537539.md: -------------------------------------------------------------------------------- 1 | # 77 - Object.entries() and Object.values() -------------------------------------------------------------------------------- /GAT/21 - Styling our Pizza Grid with CSS subgrid - 455653013.md: -------------------------------------------------------------------------------- 1 | # Styling our Pizza Grid with CSS subgrid -------------------------------------------------------------------------------- /GAT/31 - Creating a reusable Pagination Component - 455672817.md: -------------------------------------------------------------------------------- 1 | # Creating a reusable Pagination Component -------------------------------------------------------------------------------- /GAT/34 - Creating the Order page with Custom Hooks - 455854805.md: -------------------------------------------------------------------------------- 1 | # Creating the Order page with Custom Hooks -------------------------------------------------------------------------------- /GAT/42 - Setting Error, Loading and Success States - 455840083.md: -------------------------------------------------------------------------------- 1 | # Setting Error, Loading and Success States -------------------------------------------------------------------------------- /GAT/45 - Custom Hook for Client Side Data Fetching - 456273361.md: -------------------------------------------------------------------------------- 1 | # Custom Hook for Client Side Data Fetching -------------------------------------------------------------------------------- /JS3/10 - Hold Shift to Check Multiple Checkboxes - 194129765.md: -------------------------------------------------------------------------------- 1 | # Hold Shift to Check Multiple Checkboxes -------------------------------------------------------------------------------- /JS3/21 - Geolocation based Speedometer and Compass - 194128542.md: -------------------------------------------------------------------------------- 1 | # Geolocation based Speedometer and Compass -------------------------------------------------------------------------------- /NODE/22 - Multiple Query Promises with Async:Await - 214226652.md: -------------------------------------------------------------------------------- 1 | # Multiple Query Promises with Async:Await -------------------------------------------------------------------------------- /NODE/24 - Saving Registered Users to the Database - 214184257.md: -------------------------------------------------------------------------------- 1 | # Saving Registered Users to the Database -------------------------------------------------------------------------------- /NODE/3 - Starter Files and Environmental Variables - 214224634.md: -------------------------------------------------------------------------------- 1 | # Starter Files and Environmental Variables -------------------------------------------------------------------------------- /RDX/10 - Accessing Dispatch and State with Redux - 195951530.md: -------------------------------------------------------------------------------- 1 | # Accessing Dispatch and State with Redux -------------------------------------------------------------------------------- /RDX/17 - Error Tracking and Insights with Sentry - 195952863.md: -------------------------------------------------------------------------------- 1 | # Error Tracking and Insights with Sentry -------------------------------------------------------------------------------- /RDX/18 - Hot Reloading Redux Reducers with webpack - 195953043.md: -------------------------------------------------------------------------------- 1 | # Hot Reloading Redux Reducers with webpack -------------------------------------------------------------------------------- /RFB/19 - Persisting Order State with localstorage - 257757575.md: -------------------------------------------------------------------------------- 1 | # Persisting Order State with localstorage -------------------------------------------------------------------------------- /STPU/19 - 19 - JavaScript Code Quality with JSHint - 220669431.md: -------------------------------------------------------------------------------- 1 | # 19 - JavaScript Code Quality with JSHint -------------------------------------------------------------------------------- /WTF/20 - Create a mobile app layout with Flexbox - 195971844.md: -------------------------------------------------------------------------------- 1 | # Create a mobile app layout with Flexbox -------------------------------------------------------------------------------- /WTF/7 - Alignment and Centering with align-items - 195969223.md: -------------------------------------------------------------------------------- 1 | # Alignment and Centering with align-items -------------------------------------------------------------------------------- /ARG/54 - Creating our Order and OrderItem Data Types - 506383115.md: -------------------------------------------------------------------------------- 1 | # Creating our Order and OrderItem Data Types -------------------------------------------------------------------------------- /ARG/7 - Global Styles, Typography and Layout Styles - 505030370.md: -------------------------------------------------------------------------------- 1 | # Global Styles, Typography and Layout Styles -------------------------------------------------------------------------------- /ARG/79 - Testing Signed in and Signed out Nav States - 626521895.md: -------------------------------------------------------------------------------- 1 | # Testing Signed in and Signed out Nav States -------------------------------------------------------------------------------- /BJS/62 - Prototype Refactor of the Gallery Exercise - 375816325.md: -------------------------------------------------------------------------------- 1 | # Prototype Refactor of the Gallery Exercise -------------------------------------------------------------------------------- /ES6/16 - Sanitizing User Data with Tagged Templates - 174357551.md: -------------------------------------------------------------------------------- 1 | # Sanitizing User Data with Tagged Templates -------------------------------------------------------------------------------- /ES6/72 - 72 - Promisifying Callback Based Functions - 235537346.md: -------------------------------------------------------------------------------- 1 | # 72 - Promisifying Callback Based Functions -------------------------------------------------------------------------------- /GAT/23 - Dynamically creating pages with gatsby-node - 455674214.md: -------------------------------------------------------------------------------- 1 | # Dynamically creating pages with gatsby-node -------------------------------------------------------------------------------- /GAT/43 - Creating a Honey Pot to defend against bots - 456012597.md: -------------------------------------------------------------------------------- 1 | # Creating a Honey Pot to defend against bots -------------------------------------------------------------------------------- /NODE/20 - Using Pre-Save hooks to make Unique Slugs - 214179244.md: -------------------------------------------------------------------------------- 1 | # Using Pre-Save hooks to make Unique Slugs -------------------------------------------------------------------------------- /NODE/31 - JSON endpoints and creating MongoDB Indexes - 214195478.md: -------------------------------------------------------------------------------- 1 | # JSON endpoints and creating MongoDB Indexes -------------------------------------------------------------------------------- /RDX/3 - Creating our Single and PhotoGrid components - 195950169.md: -------------------------------------------------------------------------------- 1 | # Creating our Single and PhotoGrid components -------------------------------------------------------------------------------- /RFB/2 - Thinking and Understanding React Components - 184581834.md: -------------------------------------------------------------------------------- 1 | # Thinking and Understanding React Components -------------------------------------------------------------------------------- /STPU/20 - 20 - Lint Any Language with Sublime Linter - 220669504.md: -------------------------------------------------------------------------------- 1 | # 20 - Lint Any Language with Sublime Linter -------------------------------------------------------------------------------- /WTF/8 - Alignment and Centering with align-content - 195969370.md: -------------------------------------------------------------------------------- 1 | # Alignment and Centering with align-content -------------------------------------------------------------------------------- /ARG/25 - Refetching Queries after a Successful Mutation - 507193203.md: -------------------------------------------------------------------------------- 1 | # Refetching Queries after a Successful Mutation -------------------------------------------------------------------------------- /ARG/44 - Cart - Displaying Items in a Custom Component - 506349040.md: -------------------------------------------------------------------------------- 1 | # Cart - Displaying Items in a Custom Component -------------------------------------------------------------------------------- /ARG/53 - Writing our Client Side Checkout Handler Logic - 506379635.md: -------------------------------------------------------------------------------- 1 | # Writing our Client Side Checkout Handler Logic -------------------------------------------------------------------------------- /ARG/62 - Creating the Roles and Permissions Schema + UI - 506726776.md: -------------------------------------------------------------------------------- 1 | # Creating the Roles and Permissions Schema + UI -------------------------------------------------------------------------------- /ARG/66 - Getting Meta - Roles based Roles and Hiding UI - 506800415.md: -------------------------------------------------------------------------------- 1 | # Getting Meta - Roles based Roles and Hiding UI -------------------------------------------------------------------------------- /BJS/24 - The DOM - Build in and Custom Data Attributes - 375538305.md: -------------------------------------------------------------------------------- 1 | # The DOM - Build in and Custom Data Attributes -------------------------------------------------------------------------------- /ES6/13 - Creating HTML fragments with Template Literals - 174357548.md: -------------------------------------------------------------------------------- 1 | # Creating HTML fragments with Template Literals -------------------------------------------------------------------------------- /ES6/45 - JavaScript Modules and WebPack 2 Tooling Setup - 174357593.md: -------------------------------------------------------------------------------- 1 | # JavaScript Modules and WebPack 2 Tooling Setup -------------------------------------------------------------------------------- /GAT/24 - Templating and Styling our Single Pizza Page - 455685411.md: -------------------------------------------------------------------------------- 1 | # Templating and Styling our Single Pizza Page -------------------------------------------------------------------------------- /GAT/46 - Creating a Skeleton Screen while Loading Items - 456293440.md: -------------------------------------------------------------------------------- 1 | # Creating a Skeleton Screen while Loading Items -------------------------------------------------------------------------------- /GAT/48 - Building and Deploying our Headless Sanity CMS - 456014649.md: -------------------------------------------------------------------------------- 1 | # Building and Deploying our Headless Sanity CMS -------------------------------------------------------------------------------- /GAT/51 - Hosting the Gatsby Website on your own server - 456013491.md: -------------------------------------------------------------------------------- 1 | # Hosting the Gatsby Website on your own server -------------------------------------------------------------------------------- /JS3/25 - Event Capture, Propagation, Bubbling and Once - 194128073.md: -------------------------------------------------------------------------------- 1 | # Event Capture, Propagation, Bubbling and Once -------------------------------------------------------------------------------- /MMD/7 - Line Breaks, Horizontal Rules and BlockQuotes - 195944583.md: -------------------------------------------------------------------------------- 1 | # Line Breaks, Horizontal Rules and BlockQuotes -------------------------------------------------------------------------------- /NODE/18 - Uploading and Resizing Images with Middleware - 214175828.md: -------------------------------------------------------------------------------- 1 | # Uploading and Resizing Images with Middleware -------------------------------------------------------------------------------- /NODE/7 - Core Concept - Controllers and the MVC Pattern - 214161517.md: -------------------------------------------------------------------------------- 1 | # Core Concept - Controllers and the MVC Pattern -------------------------------------------------------------------------------- /NODE/8 - Core Concept - Middleware and Error Handling - 214161758.md: -------------------------------------------------------------------------------- 1 | # Core Concept - Middleware and Error Handling -------------------------------------------------------------------------------- /RDX/11 - Displaying Redux State inside our Components - 195951676.md: -------------------------------------------------------------------------------- 1 | # Displaying Redux State inside our Components -------------------------------------------------------------------------------- /STPU/17 - 17 - Mastering Panes and Groups with Origami - 220669196.md: -------------------------------------------------------------------------------- 1 | # 17 - Mastering Panes and Groups with Origami -------------------------------------------------------------------------------- /STPU/8 - 08 - Moving, Jumping, Selecting and Inserting - 220668642.md: -------------------------------------------------------------------------------- 1 | # 08 - Moving, Jumping, Selecting and Inserting -------------------------------------------------------------------------------- /ARG/17 - Creating two way data relationships in Keystone - 505013813.md: -------------------------------------------------------------------------------- 1 | # Creating two way data relationships in Keystone -------------------------------------------------------------------------------- /ARG/45 - Cart - Using React Context for our Cart State - 506354039.md: -------------------------------------------------------------------------------- 1 | # Cart - Using React Context for our Cart State 2 | -------------------------------------------------------------------------------- /ARG/9 - Fixing Styled Components Flicker on Server Render - 505027401.md: -------------------------------------------------------------------------------- 1 | # Fixing Styled Components Flicker on Server Render -------------------------------------------------------------------------------- /BJS/32 - Events - Accesibility Gotchas and Keyboard Codes - 375561845.md: -------------------------------------------------------------------------------- 1 | # Events - Accesibility Gotchas and Keyboard Codes -------------------------------------------------------------------------------- /CLPU/11 - Better deletion of files & folders with trash - 195976374.md: -------------------------------------------------------------------------------- 1 | # Better deletion of files & folders with trash -------------------------------------------------------------------------------- /ES6/32 - The ...rest param in Functions and destructuring - 174357573.md: -------------------------------------------------------------------------------- 1 | # The ...rest param in Functions and destructuring -------------------------------------------------------------------------------- /GAT/22 - Static Queries and Building the Toppings Filter - 455654302.md: -------------------------------------------------------------------------------- 1 | # Static Queries and Building the Toppings Filter -------------------------------------------------------------------------------- /GAT/27 - Querying, Displaying and Styling the Beers Page - 456259610.md: -------------------------------------------------------------------------------- 1 | # Querying, Displaying and Styling the Beers Page -------------------------------------------------------------------------------- /GAT/40 - Modifying our Custom Hook to send the order data - 455827660.md: -------------------------------------------------------------------------------- 1 | # Modifying our Custom Hook to send the order data -------------------------------------------------------------------------------- /MMD/6 - Lists — Ordered, Unorderd, Bullets and Nesting - 195944518.md: -------------------------------------------------------------------------------- 1 | # Lists — Ordered, Unordered, Bullets and Nesting 2 | -------------------------------------------------------------------------------- /RFB/20 - Bi-directional Data Flow and Live State Editing - 257758118.md: -------------------------------------------------------------------------------- 1 | # Bi-directional Data Flow and Live State Editing -------------------------------------------------------------------------------- /RFB/6 - Creating our application layout with components - 257749884.md: -------------------------------------------------------------------------------- 1 | # Creating our application layout with components -------------------------------------------------------------------------------- /WTF/13 - Cross Browser Flexbox Support and Autoprefixer! - 195970127.md: -------------------------------------------------------------------------------- 1 | # Cross Browser Flexbox Support and Autoprefixer! -------------------------------------------------------------------------------- /ARG/22 - A real good lesson in React Forms and Custom Hooks - 507222373.md: -------------------------------------------------------------------------------- 1 | # A real good lesson in React Forms and Custom Hooks -------------------------------------------------------------------------------- /BJS/30 - Events - targets, bubbling, propagation and capture - 375555793.md: -------------------------------------------------------------------------------- 1 | # Events - targets, bubbling, propagation and capture -------------------------------------------------------------------------------- /ES6/44 - Only Allow ESLint Passing Code into your git repos - 174357591.md: -------------------------------------------------------------------------------- 1 | # Only Allow ESLint Passing Code into your git repos -------------------------------------------------------------------------------- /NODE/29 - Locking down our application with User Permissions - 214190892.md: -------------------------------------------------------------------------------- 1 | # Locking down our application with User Permissions -------------------------------------------------------------------------------- /WTF/10 - Understanding Flexbox sizing with the flex property - 195969588.md: -------------------------------------------------------------------------------- 1 | # Understanding Flexbox sizing with the flex property -------------------------------------------------------------------------------- /WTF/12 - How Flexbox's flex-basis and wrapping work together - 195969905.md: -------------------------------------------------------------------------------- 1 | # How Flexbox's flex-basis and wrapping work together -------------------------------------------------------------------------------- /WTF/18 - Flexbox Equal height columns and leftover elements - 195971544.md: -------------------------------------------------------------------------------- 1 | # Flexbox Equal height columns and leftover elements -------------------------------------------------------------------------------- /BJS/40 - Case Switch and Animating a Turtle with CSS Variables - 375646853.md: -------------------------------------------------------------------------------- 1 | # Case Switch and Animating a Turtle with CSS Variables -------------------------------------------------------------------------------- /ES6/54 - Extending Arrays with Classes for Custom Collections - 174357600.md: -------------------------------------------------------------------------------- 1 | # Extending Arrays with Classes for Custom Collections -------------------------------------------------------------------------------- /WTF/6 - Flexbox Alignment and Centering with justify-content - 197920518.md: -------------------------------------------------------------------------------- 1 | # Flexbox Alignment and Centering with justify-content -------------------------------------------------------------------------------- /ARG/35 - Custom Type Policies and Control over the Apollo Cache - 506301088.md: -------------------------------------------------------------------------------- 1 | # Custom Type Policies and Control over the Apollo Cache -------------------------------------------------------------------------------- /ARG/43 - Cart - Creating the Data Type and Two Way Relationships - 506347966.md: -------------------------------------------------------------------------------- 1 | # Cart - Creating the Data Type and Two Way Relationships -------------------------------------------------------------------------------- /BJS/48 - Array Cardio - Callback Methods and Function Generation - 375678133.md: -------------------------------------------------------------------------------- 1 | # Array Cardio - Callback Methods and Function Generation -------------------------------------------------------------------------------- /GAT/12 - Creating the Toppings Content Type and custom previews - 455622892.md: -------------------------------------------------------------------------------- 1 | # Creating the Toppings Content Type and custom previews -------------------------------------------------------------------------------- /RDX/9 - Understanding The Reducer's Job and Dispatching Actions - 195951443.md: -------------------------------------------------------------------------------- 1 | # Understanding The Reducer's Job and Dispatching Actions -------------------------------------------------------------------------------- /ARG/26 - Programmatically Changing the Page after product creation - 507191827.md: -------------------------------------------------------------------------------- 1 | # Programmatically Changing the Page after product creation -------------------------------------------------------------------------------- /ES6/48 - Tool-Free Modules with SystemJS (+bonus BrowserSync setup) - 174357595.md: -------------------------------------------------------------------------------- 1 | # Tool-Free Modules with SystemJS (+bonus BrowserSync setup) -------------------------------------------------------------------------------- /NODE/38 - Advanced Relationship Population - Displaying Our Reviews - 214213730.md: -------------------------------------------------------------------------------- 1 | # Advanced Relationship Population - Displaying Our Reviews -------------------------------------------------------------------------------- /ARG/20 - Fetching Data with hooks and Displaying it in our Front End - 507242509.md: -------------------------------------------------------------------------------- 1 | # Fetching Data with hooks and Displaying it in our Front End -------------------------------------------------------------------------------- /ARG/29 - Using useEffect to deal with a tricky loading state issue - 507156506.md: -------------------------------------------------------------------------------- 1 | # Using useEffect to deal with a tricky loading state issue 2 | -------------------------------------------------------------------------------- /BJS/38 - Flow Control - If Statements, Function Returns, Truthy, Falsy - 375642037.md: -------------------------------------------------------------------------------- 1 | # Flow Control - If Statements, Function Returns, Truthy, Falsy -------------------------------------------------------------------------------- /BJS/54 - Looping and Iterating - for, for in, for of and while Loops - 375729084.md: -------------------------------------------------------------------------------- 1 | # Looping and Iterating - for, for in, for of and while Loops -------------------------------------------------------------------------------- /BJS/57 - Shopping Form with Custom Events, Delegation and localstorage - 375774374.md: -------------------------------------------------------------------------------- 1 | # Shopping Form with Custom Events, Delegation and localstorage -------------------------------------------------------------------------------- /ES6/21 - Destructuring Functions - Multiple returns and named defaults - 174357556.md: -------------------------------------------------------------------------------- 1 | # Destructuring Functions - Multiple returns and named defaults -------------------------------------------------------------------------------- /BJS/51 - Looping and Iterating - Filter, Find and Higher Order Functions - 375694435.md: -------------------------------------------------------------------------------- 1 | # Looping and Iterating - Filter, Find and Higher Order Functions -------------------------------------------------------------------------------- /GAT/38 - Moving our Order State to React Context with a custom Provider - 455767865.md: -------------------------------------------------------------------------------- 1 | # Moving our Order State to React Context with a custom Provider -------------------------------------------------------------------------------- /NODE/25 - Virtual Fields, Login:Logout middleware and Protecting Routes - 214227510.md: -------------------------------------------------------------------------------- 1 | # Virtual Fields, Login:Logout middleware and Protecting Routes -------------------------------------------------------------------------------- /ARG/56 - Linking up our Frontend to the custom backend checkout mutation - 506389380.md: -------------------------------------------------------------------------------- 1 | # Linking up our Frontend to the custom backend checkout mutation 2 | -------------------------------------------------------------------------------- /WTF/16 - Nesting Flexbox for vertical and horizontal centering with Flexbox - 195971003.md: -------------------------------------------------------------------------------- 1 | # Nesting Flexbox for vertical and horizontal centering with Flexbox -------------------------------------------------------------------------------- /WTF/11 - Finally understanding Flexbox flex-grow, flex-shrink and flex-basis - 195969692.md: -------------------------------------------------------------------------------- 1 | # Finally understanding Flexbox flex-grow, flex-shrink and flex-basis -------------------------------------------------------------------------------- /JS3/19 - Unreal Webcam Fun - 194128614.md: -------------------------------------------------------------------------------- 1 | # Unreal Webcam Fun 2 | * ```createObjectURL``` no longer works with ```mediaStream``` objects. Instead, we need to set ```video.srcObject = localMediaStream``` 3 | -------------------------------------------------------------------------------- /BJS/85 - Audio Visualization - 375797239.md: -------------------------------------------------------------------------------- 1 | # Audio Visualization 2 | 3 | ## An Update on Using HSL 4 | 5 | You can now use HSL on canvas HTML elements! So you can use ````ctx.fillStyle = `hsl(${h},${s},${l})`;```` directly without needing the conversion function. 6 | -------------------------------------------------------------------------------- /NODE/43 - Deploying to Heroku - 214218186.md: -------------------------------------------------------------------------------- 1 | # Deploying to Heroku 2 | 3 | ([Source](https://help.heroku.com/RSBRUH58/removal-of-heroku-free-product-plans-faq)) As of **November 28, 2022**, Heroku has ended its FREE tier offering to all users and existing FREE tier deployments have either been deleted or rendered inactive (see Source for more details) until a PAID subscription or another offering (i.e. Heroku for GitHub Students program) is active. 4 | -------------------------------------------------------------------------------- /BJS/74 - Ajax and APIs - 375839333.md: -------------------------------------------------------------------------------- 1 | # Ajax and APIs 2 | 3 | The Recipe Puppy API is offline and un-usable at the moment. 4 | 5 | There is a replacement that you can use and it works exactly the same way. The URL is https://recipes.beginnerjavascript.com/api. 6 | 7 | You can refer to the [lesson finished file on GitHub](https://github.com/wesbos/beginner-javascript/blob/master/exercises/75%20-%20CORS%20and%20Recipes/scripts-FINISHED.js#L1) to see the updated code that you can use. 8 | -------------------------------------------------------------------------------- /BJS/75 - CORS and Recipes - 375840774.md: -------------------------------------------------------------------------------- 1 | # CORS and Recipes 2 | 3 | The Recipe Puppy API is offline and un-usable at the moment. 4 | 5 | There is a replacement that you can use and it works exactly the same way. The URL is https://recipes.beginnerjavascript.com/api. 6 | 7 | You can refer to the [lesson finished file on GitHub](https://github.com/wesbos/beginner-javascript/blob/master/exercises/75%20-%20CORS%20and%20Recipes/scripts-FINISHED.js#L1) to see the updated code that you can use. 8 | -------------------------------------------------------------------------------- /ARG/51 - Search - 506368795.md: -------------------------------------------------------------------------------- 1 | # Search 2 | 3 | Heads up! The search query has changed slightly if you updated the course packages to `@keystone-6` by following the [keystone upgrades instructions](https://github.com/wesbos/Wes-Bos-Video-Notes/blob/master/ARG/84%20-%20Keystone%20Upgrades.md): 4 | 5 | ```js {diff} 6 | - { name_contains_i: $searchTerm } 7 | + { name: { contains: $searchTerm } } 8 | - { description_contains_i: $searchTerm } 9 | + { description: { contains: $searchTerm } } 10 | ``` 11 | -------------------------------------------------------------------------------- /ARG/46 - Cart - Adding Items to Cart - 506360082.md: -------------------------------------------------------------------------------- 1 | # Cart - Adding Items to Cart 2 | 3 | The extendGraphqlSchema was added in an earlier video, you should already have it, but if you don't, it now looks like this: 4 | 5 | ```js 6 | extendGraphqlSchema: (schema) => addCompatibilityForQueries(extendGraphqlSchema(schema)), 7 | ``` 8 | 9 | ---- 10 | At 21:55, the keystone resolveField solution should be resolveFields which is actually deprecated now and therefore a little trickier to find in the API 11 | ```js 12 | resolveFields: 'id, quantity', 13 | ``` 14 | -------------------------------------------------------------------------------- /GAT/50 - Deploying to Netlify - 456285735.md: -------------------------------------------------------------------------------- 1 | # Deploying to Netlify 2 | 3 | If you get the following error message in the Netlify build console `No netlify.toml found. This is needed to configure the function settings.` then you need to check that your `netlify.toml` file is in the *root* of the Gatsby folder and not in a sub-folder such as the `functions` folder. 4 | 5 | ```toml:title=gatsby/netlify.toml 6 | [build] 7 | functions = "functions/" 8 | ``` 9 | 10 | [GitHub Stepped Solutions](https://github.com/wesbos/master-gatsby/blob/master/finished-files/gatsby/netlify.toml) 11 | -------------------------------------------------------------------------------- /ARG/57 - Creating our Order and OrderItems in our Mutation - 506639816.md: -------------------------------------------------------------------------------- 1 | # Creating our Order and OrderItems in our Mutation 2 | 3 | A few small changes in this video: 4 | 5 | 1. In step 5, `context.lists` is now `context.db`: 6 | 7 | ```ts {diff} 8 | - const order = await context.lists.Order.createOne({ 9 | + const order = await context.db.Order.createOne({ 10 | ``` 11 | 12 | 2. In Step 6, `context.lists` is now `context.query`. 13 | 14 | 2. In Step 6, Cleanup now requires a `where` and an array of objects with an id: 15 | 16 | ```js {diff} 17 | - ids: cartItemIds 18 | + where: cartItemIds.map((id: string) => ({ id })) 19 | ``` 20 | -------------------------------------------------------------------------------- /BJS/5 - Code Quality Tooling with Prettier and ESLint - 375475807.md: -------------------------------------------------------------------------------- 1 | # Code Quality Tooling with Prettier and ESLint 2 | 3 | Please note that for ESLint to work you need to open the correct folder directly in your code editor, it will be the folder where you installed the `ESLint` npm packages and where you created the `.eslintrc` config file. 4 | 5 | Opening a parent folder or child folder in your code editor will cause ESLint to fail in finding the ESLint npm packages and the formatting won't work. 6 | 7 | ```sh 8 | your-username 9 | | 10 | projects 11 | | 12 | beginner-javascript # <- Open this folder directly in your code editor 13 | .eslintrc 14 | package.json 15 | node_modules/ 16 | exercises/ 17 | playground/ 18 | ``` 19 | -------------------------------------------------------------------------------- /GAT/17 - Sourcing Sanity Data and GraphQL Introduction - 455638997.md: -------------------------------------------------------------------------------- 1 | # Sourcing Sanity Data and GraphQL Introduction 2 | 3 | If you get a Gatsby error that says `Error: GraphQL API not deployed` then it means you haven't deployed your Sanity GraphQL API yet. In your `Sanity` folder you need to type the command `sanity graphql deploy production` and only then should you start the Gatsby server. 4 | 5 | You also need to redeploy your Sanity Dataset to the Sanity GraphQL API after making changes to the fields of your Sanity schema files, you can use the same command `sanity graphql deploy production` to update your Sanity GraphQL API with the updated schema field names. 6 | 7 | https://www.sanity.io/docs/graphql 8 | https://github.com/sanity-io/gatsby-source-sanity#graphql-api 9 | -------------------------------------------------------------------------------- /GAT/49 - Building our Gatsby Site - 456014184.md: -------------------------------------------------------------------------------- 1 | # Building our Gatsby Site 2 | 3 | If you get an error that says `We encountered an error while trying to load your site's gatsby-config. Please fix the error and try again. SyntaxError: Cannot use import statement outside a module` then you need to make sure that you are using the npm script `npm run build` to build the Gatsby site. You cannot use the global `gatsby build` command as we use ESM Modules in the course and Gatsby doesn't support it yet. 4 | 5 | The `package.json` file provided in the Gatsby starter files contains a npm package named `esm` that allows us to use ESM Modules in the Gatsby config files. 6 | 7 | [GitHub Starter Files](https://github.com/wesbos/master-gatsby/blob/master/starter-files/gatsby/package.json#L9) 8 | -------------------------------------------------------------------------------- /BJS/77 - Currency Converter - 375929658.md: -------------------------------------------------------------------------------- 1 | # Currency Converter 2 | 3 | Hey folks! 4 | 5 | The API for the Currency Converter now requires an API key. You can get a free API key [here](https://apilayer.com/marketplace/exchangerates_data-api). 6 | 7 | Replace `yourapikey` in the following code with your API key. 8 | 9 | ```js 10 | const myHeaders = new Headers(); 11 | myHeaders.append("apikey", "yourapikey"); 12 | 13 | const requestOptions = { 14 | method: 'GET', 15 | redirect: 'follow', 16 | headers: myHeaders 17 | }; 18 | 19 | fetch(`https://api.apilayer.com/exchangerates_data/latest?symbols={symbols}&base={base}`, requestOptions) 20 | .then(response => response.text()) 21 | .then(result => console.log(result)) 22 | .catch(error => console.log('error', error)); 23 | ``` 24 | -------------------------------------------------------------------------------- /GAT/16 - An intro to gatsby-config and sourcing data - 455637135.md: -------------------------------------------------------------------------------- 1 | # An intro to gatsby-config and sourcing data 2 | 3 | If you get an error that says `We encountered an error while trying to load your site's gatsby-config. Please fix the error and try again. SyntaxError: Cannot use import statement outside a module` then you need to make sure that you are using the npm scripts `npm run develop` or `npm run start` to start the Gatsby server. You cannot use the global `gatsby develop` or `gatsby start` commands as we use ESM Modules in the course and Gatsby doesn't support it yet. 4 | 5 | The `package.json` file provided in the Gatsby starter files contains a npm package named `esm` that allows us to use ESM Modules in the Gatsby config files. 6 | 7 | [GitHub Starter Files](https://github.com/wesbos/master-gatsby/blob/master/starter-files/gatsby/package.json#L8) 8 | -------------------------------------------------------------------------------- /ARG/55 - Custom Checkout Mutation with Stripe - 506384835.md: -------------------------------------------------------------------------------- 1 | # Custom Checkout Mutation with Stripe 2 | 3 | There are a few updates from this video, please make sure you have them as such or reference from the stepped solutions. 4 | 5 | 1. The function signature looks like this: 6 | 7 | ```ts 8 | import { Context } from '.keystone/types'; 9 | import { Order } from '.prisma/client'; 10 | 11 | async function checkout( 12 | root: any, 13 | { token }: Arguments, 14 | context: Context 15 | ): Promise { 16 | ``` 17 | 18 | 2. `context.lists` is now `context.query`, and resolveFields is now `query` 19 | 20 | ```ts {diff} 21 | - const user = await context.lists.User.findOne({ 22 | + const user = await context.query.User.findOne({ 23 | where: { id: userId }, 24 | - resolveFields: graphql`` 25 | + query: graphql` 26 | ``` 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /ARG/27 - Displaying Single Items, Routing and SEO - 507174678.md: -------------------------------------------------------------------------------- 1 | ## 27 - Displaying Single Items, Routing and SEO 2 | 3 | If you experience an issue with the `query` prop being *undefined* in the Single Product Page `[id].js` file, the issue can be caused by an incorrect `pageProps` variable in the `_app.js` file, especially the return value which should be `return { pageProps };` (note the usage of an object as the return value). 4 | 5 | [GitHub - Stepped Solution](https://github.com/wesbos/Advanced-React/blob/master/stepped-solutions/20/_app.js#L29) 6 | 7 | ```jsx:title=pages/_app.js {2,10} 8 | MyApp.getInitialProps = async function ({ Component, ctx }) { 9 | let pageProps = {}; 10 | 11 | if (Component.getInitialProps) { 12 | pageProps = await Component.getInitialProps(ctx); 13 | } 14 | 15 | pageProps.query = ctx.query; 16 | 17 | return { pageProps }; 18 | }; 19 | 20 | export default withData(MyApp); 21 | ``` 22 | -------------------------------------------------------------------------------- /RFB/12 - Handling Events - 257752567.md: -------------------------------------------------------------------------------- 1 | # Handling Events 2 | 3 | If you are experiencing issues with the property `value.value` being *_undefined_* then please follow this solution. 4 | 5 | On each occurance where a React Ref is used as `value.value` in the course you need to replace it with `current.value`. The `starter files` for the course have been updated to use `React 16.6.3` which uses the new syntax but the course videos are still using the previous syntax. 6 | 7 | [GitHub Stepped Solutions](https://github.com/wesbos/React-For-Beginners-Starter-Files/blob/master/stepped-solutions/13/components/StorePicker.js#L11) 8 | 9 | ```jsx:title=src/components/StorePicker.js {4} 10 | goToStore = event => { 11 | // 1. Stop the form from submitting 12 | event.preventDefault(); 13 | // 2. get the text from that input 14 | const storeName = this.myInput.current.value; 15 | // 3. Change the page to /store/whatever-they-entered 16 | this.props.history.push(`/store/${storeName}`); 17 | }; 18 | ``` 19 | -------------------------------------------------------------------------------- /RFB/11 - Events, Refs and this Binding - 257751801.md: -------------------------------------------------------------------------------- 1 | # Events, Refs and this Binding 2 | 3 | If you are experiencing issues with the property `value.value` being *_undefined_* then please follow this solution. 4 | 5 | On each occurance where a React Ref is used as `value.value` in the course you need to replace it with `current.value`. The `starter files` for the course have been updated to use `React 16.6.3` which uses the new syntax but the course videos are still using the previous syntax. 6 | 7 | [GitHub Stepped Solutions](https://github.com/wesbos/React-For-Beginners-Starter-Files/blob/master/stepped-solutions/13/components/StorePicker.js#L11) 8 | 9 | ```jsx:title=src/components/StorePicker.js {5} 10 | goToStore = event => { 11 | // 1. Stop the form from submitting 12 | event.preventDefault(); 13 | // 2. get the text from that input 14 | const storeName = this.myInput.current.value; 15 | // 3. Change the page to /store/whatever-they-entered 16 | this.props.history.push(`/store/${storeName}`); 17 | }; 18 | ``` 19 | -------------------------------------------------------------------------------- /NODE/16 - Geocoding Data with Google Maps - 214175119.md: -------------------------------------------------------------------------------- 1 | # Geocoding Data with Google Maps 2 | 3 | *Do not use the `Google Maps API Key` that is included in the course files as it is no longer valid.* 4 | 5 | You need to create your own Google Maps API key for the course. Once you have your own Google Maps API key you need to replace the default key that is provided in the `variables.env` file that you created at the start of the course. The ENV variable you need to update is named `MAP_KEY`. 6 | 7 | The 3 API's you need to enable on your Google Maps API key are `Maps JavaScript API`, `Places API` and `Maps Static API`. 8 | 9 | *Also note, make sure that billing has been enabled on your Google account - by adding a credit card or any other accepted payment method - or else the API key won't work*. 10 | 11 | Google provides $200 worth of free credit per month so you won't be charged for using it in a course. The documentation on how to create your own Google Maps API key is here. https://developers.google.com/maps/documentation/javascript/get-api-key 12 | -------------------------------------------------------------------------------- /ARG/12 - Setting up Keystone and Typescript - 505019829.md: -------------------------------------------------------------------------------- 1 | # Setting up Keystone and Typescript 2 | 3 | ## Cannot find module keystone 4 | 5 | To fix the Keystone development error `Error: Cannot find module 'keystone'`, please check that you created the `keystone.ts` file in the root of the *backend* folder and _not_ in a sub-folder such as `seed-data`. Keystone can't detect the file if you create the `keystone.ts` file in a sub-folder. 6 | 7 | If you haven't created the `keystone.ts` file yet then that will cause the error as well as Keystone cannot start without a valid `keystone.ts` file. 8 | 9 | [GitHub Stepped Solutions](https://github.com/wesbos/Advanced-React/blob/master/finished-application/backend/keystone.ts) 10 | 11 | ## Session secret must be at least 32 characters long 12 | 13 | To fix the Keystone error `There was an error initialising Keystone. The session secret must be at least 32 characters long` you must open the `.env` file in the backend folder and replace the default provided `COOKIE_SECRET` value with a random string value that is 32 characters or longer. 14 | -------------------------------------------------------------------------------- /RFB/1 - Introduction, Tooling and Editor Setup - 257748004.md: -------------------------------------------------------------------------------- 1 | # Introduction, Tooling and Editor Setup 2 | 3 | The React Devtools extension has been updated since the recording of the course and is no longer named `React` in the Browser devtools. 4 | 5 | It is now split into two separate Browser Devtool Tabs named `Components` and `Profiler`. You will be using `Components` for the course. 6 | 7 | You should note that the Devtool Tabs won't show up in the course project until you start to write React code that will happen in a few lessons. You can test that it does work by going to an existing React.js website such as `https://instagram.com` and it will show in the Browser devtools. 8 | 9 | The devtools also got a UI upgrade and looks differently from the videos. The React devtools no longer show the individual `
` elements but only the React Components. If you want the `expanded view` similar to how it looks in the course then you can delete the default `component filter` from the React devtools. 10 | 11 | [https://github.com/facebook/react/blob/main/packages/react-devtools/CHANGELOG.md#component-filters](https://github.com/facebook/react/blob/main/packages/react-devtools/CHANGELOG.md#component-filters) 12 | -------------------------------------------------------------------------------- /RFB/14 - Loading data into state onClick - 257754270.md: -------------------------------------------------------------------------------- 1 | # Loading data into state onClick 2 | 3 | If you are experiencing issues with the property `value.value` being *_undefined_* then please follow this solution. 4 | 5 | On each occurance where a React Ref is used as `value.value` in the course you need to replace it with `current.value`. The `starter files` for the course have been updated to use `React 16.6.3` which uses the new syntax but the course videos are still using the previous syntax. 6 | 7 | [GitHub Stepped Solutions](https://github.com/wesbos/React-For-Beginners-Starter-Files/blob/master/stepped-solutions/14/components/AddFishForm.js#L14) 8 | 9 | ```jsx:title=src/components/AddFishForm.js {6,7,8,9,10} 10 | createFish = event => { 11 | // 1. stop the form from submitting 12 | event.preventDefault(); 13 | 14 | const fish = { 15 | name: this.nameRef.current.value, 16 | price: parseFloat(this.priceRef.current.value), 17 | status: this.statusRef.current.value, 18 | desc: this.descRef.current.value, 19 | image: this.imageRef.current.value 20 | }; 21 | 22 | this.props.addFish(fish); 23 | // refresh the form 24 | 25 | event.currentTarget.reset(); 26 | }; 27 | ``` 28 | -------------------------------------------------------------------------------- /GAT/26 - Sourcing Data from an external API - 455742585.md: -------------------------------------------------------------------------------- 1 | # Sourcing Data from an external API 2 | 3 | To fix the issue where no *beer ratings* are being generated, please add `if (!beer.rating.average) return;` to your `gatsby-node.js` file inside the beers `for...of` loop. 4 | 5 | The reason it is failing is because the last "beers" items in the API response are returning invalid strings instead of an object for the ratings. You need to add an `if statement` to your code to skip the beers with the incorrect data until they fix the API. 6 | 7 | ```js:gatsby/gatsby-node.js {10} 8 | async function fetchBeersAndTurnIntoNodes({ 9 | actions, 10 | createNodeId, 11 | createContentDigest, 12 | }) { 13 | const res = await fetch('https://api.sampleapis.com/beers/ale'); 14 | const beers = await res.json(); 15 | 16 | for (const beer of beers) { 17 | if (!beer.rating.average) return; 18 | 19 | const nodeMeta = { 20 | id: createNodeId(`beer-${beer.name}`), 21 | parent: null, 22 | children: [], 23 | internal: { 24 | type: 'Beer', 25 | mediaType: 'application/json', 26 | contentDigest: createContentDigest(beer), 27 | }, 28 | }; 29 | 30 | actions.createNode({ 31 | ...beer, 32 | ...nodeMeta, 33 | }); 34 | } 35 | } 36 | ``` 37 | -------------------------------------------------------------------------------- /make-files.mjs: -------------------------------------------------------------------------------- 1 | import ARG from '../../Sites/bosmonster-v1/data/videos-ARG.js'; 2 | import BJS from '../../Sites/bosmonster-v1/data/videos-BJS.js'; 3 | import CLPU from '../../Sites/bosmonster-v1/data/videos-CLPU.js'; 4 | import ES6 from '../../Sites/bosmonster-v1/data/videos-ES6.js'; 5 | import GAT from '../../Sites/bosmonster-v1/data/videos-GAT.js'; 6 | import GRID from '../../Sites/bosmonster-v1/data/videos-GRID.js'; 7 | import JS3 from '../../Sites/bosmonster-v1/data/videos-JS3.js'; 8 | import MMD from '../../Sites/bosmonster-v1/data/videos-MMD.js'; 9 | import NODE from '../../Sites/bosmonster-v1/data/videos-NODE.js'; 10 | import RDX from '../../Sites/bosmonster-v1/data/videos-RDX.js'; 11 | import RFB from '../../Sites/bosmonster-v1/data/videos-RFB.js'; 12 | import STPU from '../../Sites/bosmonster-v1/data/videos-STPU.js'; 13 | import WTF from '../../Sites/bosmonster-v1/data/videos-WTF.js'; 14 | import fs from 'fs'; 15 | 16 | const courses = { ARG, BJS, CLPU, ES6, GAT, GRID, JS3, MMD, NODE, RDX, RFB, RFB, STPU, WTF }; 17 | 18 | for(const [course, { videos }] of Object.entries(courses)) { 19 | console.log(course) 20 | // loop over each video and create a folder and file for i 21 | for(const [i, video] of Object.entries(videos)) { 22 | // create folder 23 | fs.mkdirSync(`./${course}`, {recursive: true}); 24 | // create file 25 | fs.writeFileSync(`./${course}/${video.num} - ${video.title} - ${video.id}.md`, `# ${video.title}`); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /STPU/1 - 01 - Sublime Text Settings - 220667759.md: -------------------------------------------------------------------------------- 1 | # 01 - Sublime Text Settings 2 | 3 | ## Update for SublimeText 4 4 | 5 | ### Preferences 6 | 7 | The menu option _"Preferences - Settings Default"_ does not exist anymore. It is not necessary to open the default & user preferences separately. When clicking _"Preferences - Settings"_ Sublime will open a split view with the default settings on one side and overriding user settings on the other. The same is true for keyboard shortcuts (_"Preferences - Key Bindings"_). 8 | 9 | ### Keyboard shortcut for "Preferences - Settings". 10 | 11 | The video mentions `"ctrl+,"` as the keyboard shortcut for Settings on non-macOS systems. This does not work. 12 | SublimeText 4 on Linux doesn't seem to have a keyboard shortcut set for Settings. It is not even mentioned in the default `Preferences.sublime-settings` file. 13 | One has to configure this explicitely (_"Preferences - Key Bindings")_: 14 | 15 | ```json 16 | [ 17 | { "keys": ["ctrl+,"], "command": "edit_settings", "args": 18 | { 19 | "base_file": "${packages}/Default/Preferences.sublime-settings", 20 | "default": "// Settings in here override those in \"Default/Preferences.sublime-settings\",\n// and are overridden in turn by syntax-specific settings.\n{\n\t$0\n}\n" 21 | } 22 | }, 23 | ] 24 | ``` 25 | 26 | Credits to this solution to https://stackoverflow.com/a/38376612/128030 27 | 28 | ### Trailing comma problem 29 | 30 | Sublime Text 4 seems to have learned to tolerate trailing commas. It is not a problem anymore. 31 | -------------------------------------------------------------------------------- /RFB/18 - Persisting our State with Firebase - 257756817.md: -------------------------------------------------------------------------------- 1 | # Persisting our State with Firebase 2 | 3 | If you don't have a `databaseURL` in your Firebase SDK config then you likely skipped the step where you had to create a `Realtime Database`. If you go and create a `Realtime Database` and then go back to the Firebase config webpage the config should then have a `databaseURL`. 4 | 5 | If you get any `@firebase/database: FIREBASE WARNING` warnings in the Browser Console that refers to `permission_denied` then you either accidentally created a `Firestore Database` instead of a `Realtime Database` or you forgot the steps to configure the Firebase `rules` for the `Realtime Database`. The database you need to configure for the course is the `Realtime Database`. 6 | 7 | Also note, the Firebase imports have been updated since the recording of the course. 8 | 9 | You can use these imports in the `base.js` file. 10 | 11 | ```js {3,4,5} 12 | import Rebase from 're-base'; 13 | import firebase from 'firebase/app'; 14 | import 'firebase/auth'; 15 | import 'firebase/firestore'; 16 | import 'firebase/database'; 17 | 18 | const firebaseApp = firebase.initializeApp({ 19 | apiKey: "AIzaSyDXUCNSpi5u07F76httlCTXAA4mPVQlEHs", 20 | authDomain: "catch-of-the-day-wes-bos-2.firebaseapp.com", 21 | databaseURL: "https://catch-of-the-day-wes-bos-2.firebaseio.com" 22 | }); 23 | 24 | const base = Rebase.createClass(firebaseApp.database()); 25 | 26 | // This is a named export 27 | export { firebaseApp }; 28 | 29 | // this is a default export 30 | export default base; 31 | ``` 32 | -------------------------------------------------------------------------------- /ARG/73 - Testing our formatMoney function - 626507510.md: -------------------------------------------------------------------------------- 1 | # Testing our formatMoney function 2 | 3 | If your *Currency Strings* aren't matching in Jest when you test the `formatMoney` util function and the currency has spaces in it then it won't match, the reason is because the `Intl.NumberFormat` method uses non-breaking spaces. The `Intl.NumberFormat` method does this because you wouldn't want a currency to wrap onto multiple lines, but this causes the test to break because we use normal spaces in the strings that we type in our code. 4 | 5 | If the currency you are testing contains spaces then you'll need to use this solution. Every space in the Currency String has to be replaced by `\xa0` for the test to pass. `\xa0` is the non-breaking space character. 6 | 7 | ```js:title=__tests__/utils/formatMoney.test.js {5,6,7,8,12,13,14,15} 8 | import formatMoney from "../../utils/formatMoney"; 9 | 10 | describe("formatMoney function", () => { 11 | it("works with fractional units", () => { 12 | expect(formatMoney(1)).toBe("R\xa00,01"); // R 0,01 13 | expect(formatMoney(10)).toBe("R\xa00,10"); // R 0,10 14 | expect(formatMoney(99)).toBe("R\xa00,99"); // R 0,99 15 | expect(formatMoney(101)).toBe("R\xa01,01"); // R 1,01 16 | }); 17 | 18 | it("leaves off cents on whole units", () => { 19 | expect(formatMoney(100)).toBe("R\xa01"); // R 1 20 | expect(formatMoney(21000)).toBe("R\xa0210"); // R 210 21 | expect(formatMoney(55340000)).toBe("R\xa0553\xa0400"); // R 553 400 22 | expect(formatMoney(785340000)).toBe("R\xa07\xa0853\xa0400"); // R 7 853 400 23 | }); 24 | }) 25 | ``` 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | # Logs 3 | logs 4 | *.log 5 | npm-debug.log* 6 | yarn-debug.log* 7 | yarn-error.log* 8 | lerna-debug.log* 9 | .pnpm-debug.log* 10 | 11 | # Diagnostic reports (https://nodejs.org/api/report.html) 12 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 13 | 14 | # Runtime data 15 | pids 16 | *.pid 17 | *.seed 18 | *.pid.lock 19 | 20 | # Directory for instrumented libs generated by jscoverage/JSCover 21 | lib-cov 22 | 23 | # Coverage directory used by tools like istanbul 24 | coverage 25 | *.lcov 26 | 27 | # nyc test coverage 28 | .nyc_output 29 | 30 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 31 | .grunt 32 | 33 | # Bower dependency directory (https://bower.io/) 34 | bower_components 35 | 36 | # node-waf configuration 37 | .lock-wscript 38 | 39 | # Compiled binary addons (https://nodejs.org/api/addons.html) 40 | build/Release 41 | 42 | # Dependency directories 43 | node_modules/ 44 | jspm_packages/ 45 | 46 | # Snowpack dependency directory (https://snowpack.dev/) 47 | web_modules/ 48 | 49 | # TypeScript cache 50 | *.tsbuildinfo 51 | 52 | # Optional npm cache directory 53 | .npm 54 | 55 | # Optional eslint cache 56 | .eslintcache 57 | 58 | # Microbundle cache 59 | .rpt2_cache/ 60 | .rts2_cache_cjs/ 61 | .rts2_cache_es/ 62 | .rts2_cache_umd/ 63 | 64 | # Optional REPL history 65 | .node_repl_history 66 | 67 | # Output of 'npm pack' 68 | *.tgz 69 | 70 | # Yarn Integrity file 71 | .yarn-integrity 72 | 73 | # dotenv environment variables file 74 | .env 75 | .env.test 76 | .env.production 77 | 78 | # parcel-bundler cache (https://parceljs.org/) 79 | .cache 80 | .parcel-cache 81 | 82 | # Next.js build output 83 | .next 84 | out 85 | 86 | # Nuxt.js build / generate output 87 | .nuxt 88 | dist 89 | 90 | # Gatsby files 91 | .cache/ 92 | # Comment in the public line in if your project uses Gatsby and not Next.js 93 | # https://nextjs.org/blog/next-9-1#public-directory-support 94 | # public 95 | 96 | # vuepress build output 97 | .vuepress/dist 98 | 99 | # Serverless directories 100 | .serverless/ 101 | 102 | # FuseBox cache 103 | .fusebox/ 104 | 105 | # DynamoDB Local files 106 | .dynamodb/ 107 | 108 | # TernJS port file 109 | .tern-port 110 | 111 | # Stores VSCode versions used for testing VSCode extensions 112 | .vscode-test 113 | 114 | # yarn v2 115 | .yarn/cache 116 | .yarn/unplugged 117 | .yarn/build-state.yml 118 | .yarn/install-state.gz 119 | .pnp.* 120 | # Logs 121 | logs 122 | *.log 123 | npm-debug.log* 124 | yarn-debug.log* 125 | yarn-error.log* 126 | lerna-debug.log* 127 | .pnpm-debug.log* 128 | 129 | # Diagnostic reports (https://nodejs.org/api/report.html) 130 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 131 | 132 | # Runtime data 133 | pids 134 | *.pid 135 | *.seed 136 | *.pid.lock 137 | 138 | # Directory for instrumented libs generated by jscoverage/JSCover 139 | lib-cov 140 | 141 | # Coverage directory used by tools like istanbul 142 | coverage 143 | *.lcov 144 | 145 | # nyc test coverage 146 | .nyc_output 147 | 148 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 149 | .grunt 150 | 151 | # Bower dependency directory (https://bower.io/) 152 | bower_components 153 | 154 | # node-waf configuration 155 | .lock-wscript 156 | 157 | # Compiled binary addons (https://nodejs.org/api/addons.html) 158 | build/Release 159 | 160 | # Dependency directories 161 | node_modules/ 162 | jspm_packages/ 163 | 164 | # Snowpack dependency directory (https://snowpack.dev/) 165 | web_modules/ 166 | 167 | # TypeScript cache 168 | *.tsbuildinfo 169 | 170 | # Optional npm cache directory 171 | .npm 172 | 173 | # Optional eslint cache 174 | .eslintcache 175 | 176 | # Microbundle cache 177 | .rpt2_cache/ 178 | .rts2_cache_cjs/ 179 | .rts2_cache_es/ 180 | .rts2_cache_umd/ 181 | 182 | # Optional REPL history 183 | .node_repl_history 184 | 185 | # Output of 'npm pack' 186 | *.tgz 187 | 188 | # Yarn Integrity file 189 | .yarn-integrity 190 | 191 | # dotenv environment variables file 192 | .env 193 | .env.test 194 | .env.production 195 | 196 | # parcel-bundler cache (https://parceljs.org/) 197 | .cache 198 | .parcel-cache 199 | 200 | # Next.js build output 201 | .next 202 | out 203 | 204 | # Nuxt.js build / generate output 205 | .nuxt 206 | dist 207 | 208 | # Gatsby files 209 | .cache/ 210 | # Comment in the public line in if your project uses Gatsby and not Next.js 211 | # https://nextjs.org/blog/next-9-1#public-directory-support 212 | # public 213 | 214 | # vuepress build output 215 | .vuepress/dist 216 | 217 | # Serverless directories 218 | .serverless/ 219 | 220 | # FuseBox cache 221 | .fusebox/ 222 | 223 | # DynamoDB Local files 224 | .dynamodb/ 225 | 226 | # TernJS port file 227 | .tern-port 228 | 229 | # Stores VSCode versions used for testing VSCode extensions 230 | .vscode-test 231 | 232 | # yarn v2 233 | .yarn/cache 234 | .yarn/unplugged 235 | .yarn/build-state.yml 236 | .yarn/install-state.gz 237 | .pnp.* 238 | -------------------------------------------------------------------------------- /ARG/84 - Keystone Upgrades.md: -------------------------------------------------------------------------------- 1 | 5 | # Keystone 6 Upgrade 6 | 7 | This course was recorded with a beta version of Keystone, since Keystone 6 has now launched in stable, there are a few minor updates to the app to get it working with the latest. 8 | 9 | The largest difference is that Keystone 6 now uses Prisma under the hood. Prisma is an "ORM", which provides a set of APIs to interface with the database of your choice. It works really well with GraphQL and TypeScript! This mostly doesn't matter to us, but there are a few API changes like `{ name_contains_i: $searchTerm }` is now `{ name: { contains: $searchTerm } }` 10 | 11 | ## Starter file Updates 12 | 13 | If you already have the files on your computer, go ahead and switch these out: 14 | 15 | 1. `package.json` needs to be updated with the one on github. 16 | * Delete `.keystone` and `node_modules` folder, along with the `package-lock.json` file 17 | * after you update `package.json`, run a `npm install` on the `backend` directory 18 | 1. `.gitignore` needs `*.db` added 19 | 2. `tsconfig.json` has some options, grab the latest from the [GitHub Repo](https://github.com/wesbos/Advanced-React) 20 | 3. `/seed-data/index.ts` is updated, get whole new file 21 | 4. `types.ts` is updated - get the new file 22 | 5. `compat.ts` needs to be added 23 | 24 | ## Sitewide Imports 25 | Find and Replace globally in your project 26 | 27 | * `@keystone-next/fields` → `@keystone-6/core` 28 | * `from '@keystone-next/keystone/schema'` → `from '@keystone-6/core/fields'` 29 | * `@keystone-next/cloudinary` → `@keystone-6/cloudinary` 30 | * `@keystone-next/auth` → `@keystone-6/auth` 31 | * `@keystone-next/keystone/session` → `@keystone-6/core/session` 32 | * `import { KeystoneContext, SessionStore } from '@keystone-next/types';` → `import { KeystoneContext} from '@keystone-6/core/types';` 33 | * `id: session.itemId` → `id: { equals: session!.itemId }` 34 | * `read: ` → `query: ` (keep the spaces in this one!) 35 | * `read: ` → `query: ` (keep the spaces in this one!) 36 | * `text({ isRequired: true })` → `text({ validation: { isRequired: true } })` 37 | * `status: 'AVAILABLE'` → `status: { equals: 'AVAILABLE' }` 38 | 39 | ## `keystone.ts` Setup File: 40 | The setup of this file has been re-recorded, but here are the steps to update your existing keystone: 41 | 42 | 1. Delete the createSchema import and delete where it wraps the `lists:` property. 43 | 1. Update the database url. If you have any DATABASE_URL in your `.env` file, delete it. 44 | ```js 45 | const databaseURL = process.env.DATABASE_URL || 'file:./app.db' 46 | ``` 47 | 48 | 1. `adapter: 'mongoose',` is now `'provider': 'sqlite',` 49 | 1. `extendGraphqlSchema` is now like below. Make sure to import the `addCompatibilityForQueries` function. 50 | 51 | ```js 52 | // At the top of keystone.ts 53 | import { addCompatibilityForQueries } from './compat'; 54 | // ... then lower down: 55 | extendGraphqlSchema: (schema) => addCompatibilityForQueries(extendGraphqlSchema(schema)), 56 | ``` 57 | 58 | 1. the `onConnect` method for seeding data, replaced `keystone` param with `context` and passes `context.prisma` 59 | 60 | ```diff 61 | - async onConnect(context) { 62 | + async onConnect(context) { 63 | console.log('Connected to the database!'); 64 | if (process.argv.includes('--seed-data')) { 65 | - await insertSeedData(keystone); 66 | + await insertSeedData(context.prisma); 67 | } 68 | }, 69 | ``` 70 | 71 | 3. Delete `withItemData` import and delete where it wrapped statelessSessions. Delete the second argument and move that to createAuth: 72 | 73 | ```js 74 | // ... 75 | // begin-highlight 76 | sessionData: `id name email role { ${permissionsList.join(' ')} }`, 77 | // end-highlight 78 | passwordResetLink: { 79 | // ... 80 | ``` 81 | 82 | ## Access Control Updates 83 | 84 | Each of our schemas needs some slight updates to how access control works. 85 | 86 | `access` was previously `read`, `write`, `update`, `delete`. They are now split into: 87 | 88 | `access.operation` for Clear yes/no allowances. 89 | 90 | `access.filter` for filtering which items someone should have access to. 91 | 92 | #### schemas/CartItem.ts 93 | 94 | ```ts 95 | operation: { 96 | create: isSignedIn, 97 | }, 98 | filter: { 99 | query: rules.canOrder, 100 | update: rules.canOrder, 101 | delete: rules.canOrder, 102 | }, 103 | ``` 104 | 105 | #### schemas/Order.ts 106 | ```ts 107 | operation: { 108 | create: isSignedIn, 109 | update: () => false, 110 | delete: () => false, 111 | }, 112 | filter: { 113 | query: rules.canOrder, 114 | }, 115 | ``` 116 | 117 | #### schemas/OrderItem.ts 118 | 119 | ```ts 120 | operation: { 121 | create: isSignedIn, 122 | update: () => false, 123 | delete: () => false, 124 | }, 125 | filter: { 126 | query: rules.canManageOrderItems, 127 | }, 128 | ``` 129 | 130 | #### schemas/Product.ts 131 | 132 | ```ts 133 | operation: { 134 | create: isSignedIn, 135 | }, 136 | filter: { 137 | query: rules.canReadProducts, 138 | update: rules.canManageProducts, 139 | delete: rules.canManageProducts, 140 | }, 141 | ``` 142 | 143 | #### schemas/ProductImage.ts 144 | 145 | ```ts 146 | operation: { 147 | create: isSignedIn, 148 | query: () => true, 149 | update: permissions.canManageProducts, 150 | delete: permissions.canManageProducts, 151 | }, 152 | ``` 153 | 154 | #### schemas/Role.ts 155 | 156 | ```ts 157 | operation: { 158 | create: permissions.canManageRoles, 159 | query: permissions.canManageRoles, 160 | update: permissions.canManageRoles, 161 | delete: permissions.canManageRoles, 162 | }, 163 | ``` 164 | 165 | #### schemas/User.ts 166 | 167 | ```ts 168 | operation: { 169 | create: () => true, 170 | // only people with the permission can delete themselves! 171 | // You can't delete yourself 172 | delete: permissions.canManageUsers, 173 | }, 174 | filter: { 175 | query: rules.canManageUsers, 176 | update: rules.canManageUsers, 177 | }, 178 | ``` 179 | 180 | ## Data Types 181 | `isRequired` is now under a validation object - this was part of our find/replace. 182 | 183 | `isIndexed: unique` now added to `User` email field: 184 | 185 | ```js 186 | email: text({ validation: { isRequired: true }, isIndexed: 'unique' }), 187 | ``` 188 | 189 | ## Custom Virtual Fields are now different 190 | In your Order.ts model, it looks like this now. Make sure to import `graphql` 191 | 192 | ```js 193 | // at the top: 194 | import { list, graphql } from '@keystone-6/core'; 195 | // then later down 196 | fields: { 197 | // highlight-start 198 | label: virtual({ 199 | field: graphql.field({ 200 | type: graphql.String, 201 | resolve(item) { 202 | return `${formatMoney(item.total)}`; 203 | }, 204 | }), 205 | }), 206 | // highlight-end 207 | total: integer(), 208 | items: relationship({ ref: 'OrderItem.order', many: true }), 209 | user: relationship({ ref: 'User.orders' }), 210 | charge: text(), 211 | }, 212 | ``` 213 | 214 | ## addToCart.ts and checkout.ts 215 | These have a handful of smaller changes. You can view the diff on github, or just grab the latest. The whole video for these are re-recorded. 216 | 217 | ## Start It Up! 218 | 219 | That should be it. run `npm run dev` 220 | 221 | Open it in your browser. 222 | 223 | 224 | ## Database Switch 225 | 226 | Since we switched from Mongodb, over the sqlite, you will need to repopulate your data. run `npm run dev -- --seed-data` to populate all the seed data. 227 | 228 | A great app for visualizing your data is Table Plus. 229 | 230 | ## Frontend 231 | 232 | Most of the frontend is unaffected. Just a few minor updates. 233 | 234 | 235 | 236 | ### Search.js: 237 | 238 | ```diff 239 | - { name_contains_i: $searchTerm } 240 | - { description_contains_i: $searchTerm } 241 | + { name: { contains: $searchTerm } } 242 | + { description: { contains: { $searchTerm }} } 243 | ``` 244 | 245 | There is also an issue with useLazyQuery right now, this will fix it: 246 | 247 | ```js 248 | function ClientOnly({ children, ...delegated }) { 249 | const [hasMounted, setHasMounted] = useState(false); 250 | useEffect(() => { 251 | setHasMounted(true); 252 | }, []); 253 | if (!hasMounted) { 254 | return null; 255 | } 256 | return
{children}
; 257 | } 258 | // then wrap Search 259 | 260 | 261 | ``` 262 | 263 | ## Signin.js 264 | 265 | `UserAuthenticationWithPasswordFailure` no longer returns a `code`, remove it. 266 | 267 | ```diff 268 | ... on UserAuthenticationWithPasswordFailure { 269 | - code 270 | message 271 | } 272 | ``` 273 | 274 | 275 | Unrelated, but we took the chance to upgrade Next.js. The updates here are: 276 | 277 | 1. Delete `.next`, `node_modules` and `package-lock.json` 278 | 2. Get the new `package.json` from github for the `frontend` folder. 279 | 3. Create a new file called `next.config.js` and use this config: 280 | 281 | ```js 282 | module.exports = { 283 | experimental: { 284 | // Enables the styled-components SWC transform 285 | styledComponents: true, 286 | }, 287 | }; 288 | ``` 289 | 290 | 299 | 300 | 301 | 302 | --------------------------------------------------------------------------------