University Access to All Magento 2 On-Demand Training

In stock
SKU
v10
€1,249.00

One individual access to all courses that we have created for Magento 2.

  • Courses included: 21
  • Total video time: 94 hours
  • Access period: 1Y
  • € 1249 for 1 year
  • € 13 per hour of video available to you

Using this package, you will get access to all our Magento 2 courses for a single year. More materials will be added over time, from which you will benefit. Once purchased, all courses will be available under your account via "My Attendance".

More Information
Price €1,249.00
Access period 1 year

Included courses

Frontend development generics

Status: Complete
Last updated: 2024-06-08
Number of lessons: 45
Number of slides: 205
Videos: 5.1 hours

PHP Basics

Status: Complete
Last updated: 2024-09-25
Number of lessons: 39
Number of slides: 109
Videos: 0 hours

PHP Advanced Programming

Status: Complete
Last updated: 2024-09-26
Number of lessons: 83
Number of slides: 533
Videos: 1.5 hours

JavaScript Advanced

Status: Complete
Last updated: 2024-06-12
Number of lessons: 59
Number of slides: 269
Videos: 0.3 hours

Linux Fundamentals

Status: Complete
Last updated: 2024-05-23
Number of lessons: 33
Number of slides: 155
Videos: 0 hours

Docker Essentials

Status: Complete
Last updated: 2024-05-23
Number of lessons: 26
Number of slides: 144
Videos: 0 hours

Adobe PWA Studio Development

Status: Complete
Last updated: 2024-07-03
Number of lessons: 63
Number of slides: 300
Videos: 10 hours

Magento 2 Technical Architecture

Status: Complete
Last updated: 2024-06-08
Number of lessons: 40
Number of slides: 155
Videos: 0.3 hours

Magento 2 Backend Development I

Status: Complete
Last updated: 2024-09-25
Number of lessons: 84
Number of slides: 334
Videos: 11.1 hours

Magento 2 Backend Development II

Status: Complete
Last updated: 2024-09-17
Number of lessons: 102
Number of slides: 412
Videos: 10.2 hours

Magento 2 GraphQL Development

Status: Complete
Last updated: 2024-07-03
Number of lessons: 21
Number of slides: 84
Videos: 2.2 hours

Magento 2 Hyvä Theme Development

Status: Complete
Last updated: 2024-09-25
Number of lessons: 81
Number of slides: 325
Videos: 10.8 hours

Magento 2 Hyvä Checkout Development

Status: Complete
Last updated: 2024-07-03
Number of lessons: 36
Number of slides: 127
Videos: 4.2 hours

Magento 2 Installation

Status: Complete
Last updated: 2024-09-25
Number of lessons: 67
Number of slides: 270
Videos: 2.7 hours

Magento 2 Merchant

Status: Complete
Last updated: 2024-05-23
Number of lessons: 32
Number of slides: 171
Videos: 0 hours

Magento 2 Migration

Status: Complete
Last updated: 2024-05-23
Number of lessons: 0
Number of slides: 0
Videos: 0 hours

Magento 2 Testing

Status: Complete
Last updated: 2024-10-07
Number of lessons: 127
Number of slides: 431
Videos: 0 hours

Magento 2 Luma Frontend Development

Status: Complete
Last updated: 2024-07-03
Number of lessons: 118
Number of slides: 369
Videos: 11.8 hours

Magento 2 Luma JavaScript Development

Status: Complete
Last updated: 2024-07-03
Number of lessons: 76
Number of slides: 335
Videos: 14 hours

Vue Storefront 1 Fundamentals

Status: Complete
Last updated: 2024-06-19
Number of lessons: 61
Number of slides: 362
Videos: 9.5 hours

Preview this course

Want to see what this course is like? Checkout our Courseware Demo to preview this course and others.

Preview all courses

Course content

Frontend development generics

  • Introduction to webdesign
  • The difference between frontend and backend
  • Roles in webdevelopment
  • HTML
  • HTML overview
  • HTML 5 boilerplate
  • HTML elements
  • HTML attributes
  • Browser tools
  • Using the Browser its Developer Tools
  • Using the Error Console
  • Monitoring the network requests
  • Dealing with browser caching
  • Elements pane vs HTML source
  • Browser tools
  • Toggling the mobile view
  • Adding some temporary CSS code
  • Forcing an element its state
  • Going incognito
  • Preserving logs
  • Throttling networking traffic
  • Running a Lighthouse scan
  • Inspecting the Application state
  • Blocking requests
  • Troubleshooting webpages
  • CSS
  • CSS basics
  • Responsiveness
  • Sizes in CSS
  • Advanced CSS topics
  • CSS animations
  • Font families
  • CSS Grids
  • CSS Flexbox
  • CSS preprocessors
  • LESS
  • SASS
  • Building tools
  • CSS modules
  • Working with PostCSS
  • Introducing Tailwind
  • Tailwind
  • Colors in CSS
  • JavaScript and jQuery
  • jQuery
  • Images
  • Images
  • SVG
  • overview
  • Characters and encodings
  • Characters and encoding
  • Performance
  • How browser caching works
  • Core Web Vitals

PHP Basics

  • Introduction
  • PHP community
  • Basic syntax
  • PHP basics
  • Working with arrays
  • Operators
  • Comments
  • Hinting
  • Global constants
  • Lambdas & closures
  • Coding standards
  • Reviewing code
  • PHP and MySQL
  • MySQL basics
  • Assignment: Create a new database table
  • Filesystem
  • Handling files
  • Dealing with JSON
  • Dealing with CSV
  • Dealing with XML
  • Regular expressions
  • Regular expressions
  • PhpStorm
  • Getting a PhpStorm license
  • Overview of PhpStorm
  • Requirements for running PhpStorm
  • Installing PhpStorm
  • Opening a project in PhpStorm
  • Changing the PHP version in PhpStorm
  • Composer settings in PhpStorm
  • Using PhpStorm plugins
  • Enabling the Magento plugin in PhpStorm
  • Opening up the context menu
  • Formatting your code in PhpStorm
  • PhpStorm and its 1000 shortcuts
  • Excluding Magento files from your PhpStorm project
  • Run Configurations in PhpStorm
  • Running a PHP built-in server from PhpStorm
  • Working with PhpStorm File Templates
  • Working with PhpStorm Live Templates
  • Configuring PHPUnit within PhpStorm
  • Generating code via AI
  • Tuning PhpStorm for performance
  • Working with JetBrains Gateway remotely
  • Tips and tricks

PHP Advanced Programming

  • Introduction
  • Learning curve
  • Development environment
  • Syntax
  • PHP 7.0 syntax
  • PHP 7.1 syntax
  • PHP 7.2 syntax
  • PHP 7.3 syntax
  • PHP 7.4 syntax
  • PHP 8.0 syntax
  • PHP 8.1 syntax
  • PHP 8.2 syntax
  • PHP 8.3 features
  • PHP 8.4 features
  • PHP 7.X syntax
  • PHP 8.0
  • PHP 8.1 syntax
  • Generics
  • Classes
  • Objects and classes
  • Exercice: Create classes for a Author-library
  • Class elements
  • Class types
  • Namespaces
  • Assignment: Use namespaces
  • Predefined classes and interfaces
  • Tools
  • Tools overview
  • Composer
  • Assignment: Implement composer
  • Assignment: Add simple templating
  • Composer
  • Requiring a composer package
  • Semantic versioning
  • install vs update
  • Dealing with composer repositories
  • Local composer repositories
  • Class autoloading
  • Popular Composer packages
  • Assignment: Autoloading your classes
  • Assignment: Add Symfony console
  • Assignment: Add logging
  • Assignment: Install the wrong composer package
  • Coding patterns
  • Coding principles
  • PSR Standards
  • SOLID
  • Object calisthenics
  • Design patterns
  • Assignment: Add MVC to your Author app
  • Dependency Injection (DI)
  • Other patterns
  • Event sourcing
  • Imperative vs Declarative
  • MVC
  • Value objects
  • Testing
  • Testing
  • PHPUnit
  • Assignment: Add a functional test to your app
  • Unit testing
  • Assignment: Test your library with PHPUnit
  • Advanced testing
  • Miscellaneous
  • Deployment
  • Behat
  • Codeception
  • Cypress
  • Debugging
  • Debugging basics
  • PHP errors
  • Assignment: Endless loop
  • Assignment: Detect PHP errors in Magento module `Yireo_FaultyViewModels`
  • Assignment: Memory limit
  • Assignment: Unreadable files
  • PHP internals
  • Code analysis
  • Xdebug basics
  • Xdebug
  • Assignment: Debug the FrontController
  • Xdebug profiling
  • Xdebug tracing
  • Exception basics
  • Troubleshooting Magento issues
  • Assignment: Dangers of running root
  • SonarQube
  • Debugging tips
  • Miscellaneous
  • Output
  • Performance
  • Security
  • Modernizing WordPress

JavaScript Advanced

  • Syntax
  • The problem of JavaScript syntax
  • ES6 Template literals
  • Transpilers
  • TypeScript
  • Node basics
  • Useful JavaScript tools
  • Installing NodeJS
  • Adding NPM packages
  • Some package suggestions
  • Assignment: Create your own CLI
  • Scripts in your `package.json` file
  • Applications
  • Frameworks
  • React JS
  • Assignment: Create a simple React application
  • Vue JS
  • Assignment: Create a simple Vue application
  • Svelte JS
  • Invocation patterns
  • Invocation patterns
  • Binding the keyword `this`
  • Module pattern
  • Internals
  • Strict Mode
  • Understandig the prototype chain
  • Prototyping
  • Object properties
  • Proxy
  • Monads
  • Collections
  • Event loop overview
  • Asynchronous calls
  • AJAX example with React
  • Assignment: Create a React app for your Author AJAX API
  • AJAX call in Vue
  • Assignment: Create an Vue app for your Author AJAX API
  • Promises
  • Assignment: Create a CLI script that makes an AJAX call
  • Events
  • Events
  • Events in Node
  • Node applications
  • Node overview
  • Utilities for CLI scripts
  • Assignment: Create a CLI script to navigate the filesystem
  • Other Node topics
  • NPM workspaces
  • NPM packages
  • Module formats
  • Bundlers
  • Bundlers
  • Webpack
  • Vite
  • Rollup
  • Parcel
  • Node in production
  • Assignment: Create an Express-based proxy for your Author AJAX API
  • Process managers
  • Express middleware
  • SSR
  • Serviceworkers
  • Serviceworkers
  • ServiceWorker events
  • Other topics
  • Webcomponents
  • Web Components
  • Testing
  • Basic of testing
  • Tape
  • Cypress end-to-end testing
  • Debugging
  • Debugging basics

Linux Fundamentals

  • Introduction
  • About Linux
  • Resources
  • Users and groups
  • Commands
  • Basic shell commands
  • Linux permissions
  • Creating shell scripts
  • Small bits
  • Assignment: Diffing and patching
  • Configuration formats
  • UNIX timestamp
  • Networking
  • Networking
  • Services
  • SSH
  • Ready-made stacks
  • Webservers
  • Assignment: Write a simple PHP script to use a remote API
  • PHP-FPM
  • MySQL database
  • Databases
  • ElasticSearch database
  • Redis
  • RabbitMQ
  • Varnish
  • Git versioning
  • Git essentials
  • Assignment: Create a git repository
  • Using GitHub
  • Assignment: Create a GitHub repository
  • Assignment: Upload your files
  • Advanced git usage
  • Git beyond the basics
  • Licensing
  • Open source licenses
  • Remote servers
  • Tools for working remotely
  • Using SSH
  • Windows tips
  • Windows Subsystem for Linux
  • MacOS tips
  • MacOS tools

Docker Essentials

  • Basics
  • Introduction to Docker
  • Assignment: Register at the Docker Hub
  • Installing Docker
  • Assignment: Docker installation in Ubuntu
  • Assignment: Docker installation in Windows WSL
  • Assignment: PHP installation in Windows WSL
  • Getting started
  • Assignment: Kickstart the Docker examples
  • docker-compose
  • Assignment: Run Apache, PHP, MySQL and ElasticSearch via compose
  • Networking
  • Volumes
  • Creating images
  • Registries
  • Tips & tricks
  • Troubleshooting Docker issues
  • Alternatives
  • Colima for containers to run Magento
  • GitHub Action examples
  • Gitpod
  • Clustering Docker containers
  • Introduction
  • Docker Swarm
  • Kubernetes
  • Kubernetes pods
  • Kustomization
  • Kubernetes & Helm
  • Skaffold

Adobe PWA Studio Development

  • PWA in general
  • Introducing PWA
  • Other PWA providers
  • PWA Studio and extensibility
  • Status of Magento GraphQL
  • Architectural choices
  • Hybrid React solutions
  • Overview of PWA Studio
  • Introduction to PWA Studio
  • React essentials
  • React essentials
  • Redux essentials
  • Apollo client
  • Introducing Apollo Client
  • Getting started with Apollo Client
  • Making Apollo calls
  • Including GraphQL files
  • Apollo Client v3
  • Kickstart PWA Studio
  • Minimum requirements
  • Development tools
  • Prepare your Magento instance
  • Installing PWA Studio
  • First look at PWA Studio
  • Configuring PWA Studio
  • Reviewing the `.env` file
  • Upgrading PWA Studio
  • Buildpack
  • Overview of Buildpack
  • Venia
  • Introducing Venia
  • Extending Venia
  • Overriding components with the Fooman resolver
  • Changing the logo
  • Using prices
  • `mergeClasses`
  • Adding a new route
  • Working with the `Mask` component
  • Toasting
  • Best practices with Venia
  • Checkout in Venia
  • CSS strategies
  • Adding a custom Store View
  • Page Builder integration
  • Peregrine
  • Peregrine overview
  • App or RootComponent?
  • Talons of Peregrine
  • Example with product talon
  • Routing in PWA Studio
  • Context within PWA Studio
  • Redux within PWA Studio
  • Build it your own
  • Build it without Venia
  • Implementing Venia and Peregrine partially
  • Target interception
  • Target interception
  • Creating a target interceptor
  • Trusted vendors
  • Venia UI targets
  • Peregrine targets
  • Buildpack targets
  • Targetables
  • Declaring custom targets
  • PWA Studio extensions
  • UPWARD
  • Overview of UPWARD
  • Running UPWARD
  • UPWARD YAML configuration
  • Automatic image optimization
  • Running Venia without UPWARD
  • In production
  • In production
  • Server Side Rendering
  • Summary
  • Summarizing Magento PWA Studio

Magento 2 Technical Architecture

  • Introduction
  • Magento 2 overview
  • Magento 2 versions
  • System requirements
  • Concepts
  • Administration
  • Administration
  • Magento Admin Panel overview
  • Catalog
  • CMS options
  • Global - Website - Store View (GWS)
  • Product issues
  • Product types
  • About attributes
  • Order flow
  • Customer concepts
  • Keeping stock
  • Using modules
  • Dealing with modules
  • Really handy modules
  • Example module installations
  • Files and folders
  • Important files & folders
  • Configuration files
  • Temporary folders
  • Application entrypoints
  • Database structure
  • Database
  • Magento database
  • Important tables
  • Magento EAV pattern
  • Indexing
  • Logging
  • Cache Management
  • Database corruption
  • Themes
  • Theming
  • Security
  • Security tips
  • Performance
  • Performance
  • Command-line usage
  • CLI usage
  • `bin/magento`
  • Composer
  • Deployment
  • Deployment
  • Deploying with DeployerPHP
  • Tips and tricks
  • Tips & tricks
  • Translations
  • Adding a French Store View

Magento 2 Backend Development I

  • Magento basics
  • Quick peek at Magento 2 architecture
  • Theming basics
  • Magento 2 frontend landscape
  • Magento environment
  • Setting up PhpStorm
  • Running cron
  • Cache clean vs flush
  • Cache handling
  • Changing the admin path
  • Maintenance mode
  • Using Redis
  • Redis caching
  • Using Redis as session storage
  • Magento modules
  • Installing a module
  • Assignment: Install a module
  • Preparing for module creation
  • Creating a module
  • Assignment: Create a new module
  • Composer file
  • Module XML file
  • Module registration
  • Module commands
  • Module entrypoints
  • Adding Blocks via XML layout
  • Assignment: Add a block class
  • Assignment: Add a ViewModel
  • Using the store configuration
  • Assignment: Add a configuration
  • Adding a simple CLI command
  • Logging from your module
  • Architecture
  • Areas
  • Application layers
  • PHP interfaces in Magento
  • Backward Compatibility
  • Dependency Injection
  • Sandbox script
  • Introduction to Dependency Injection
  • Object Manager
  • DI Preferences
  • DI types
  • Virtual Types essentials
  • DI factories
  • Creating a custom factory
  • DI proxies
  • DI plugins / interceptors
  • DI recipees
  • DI recipees
  • Inject the App State and check for the area
  • Checking for the Developer Mode in your code
  • Injecting a configuration value
  • Inject the current product
  • Injecting the registry
  • Injecting URLs into your class
  • Creating a custom logger
  • Assignment: Create a custom logger
  • Injecting the customer session
  • Injecting the layout
  • Getting your module path
  • Creating a Slack logger
  • Can you inject a Virtual Type?
  • Catalog development
  • Using the product repository
  • SearchCriteriaBuilder or SearchCriteriaBuilderFactory?
  • Using product stock
  • Console commands
  • Adding console commands
  • Calling other commands from your own Command-class
  • Tips on commands
  • Controllers
  • Frontend routes
  • Assignment: Create a frontend controller that renders a page
  • Action results
  • Assignment: Create a JSON controller
  • Dealing with form keys
  • Adding messages
  • Assignment: Create a redirect
  • Adding complex messages
  • Assignment: Create a DI plugin for a controller
  • Adding cronjobs
  • Adding a cronjob
  • Dealing with emails
  • Creating an email template
  • Caching
  • Block caching
  • Module setup
  • Adding database changes via a module
  • InstallSchema
  • InstallData
  • Why the Uninstall schema does not make sense
  • Declaritive schemas
  • Declarative Schema patches
  • Module samples
  • Scenario: Add CMS Block to PHTML
  • Scenario: Add product pricing per customer
  • Misc
  • Solving tickets efficiently
  • Troubleshooting tips

Magento 2 Backend Development II

  • Database models
  • Declarative schemas (basics)
  • Data models
  • Resource models
  • Collections
  • Naming model classes
  • AbstractModel or AbstractExtensibleModel?
  • Example data model via CLI commands
  • Example data model with integration tests
  • Improving your models
  • Improving your resource models
  • Assignment: Create an author entity
  • Assignment: Create a CLI for your author entity
  • Events and observers
  • Event observer
  • Finding events
  • Dispatching events
  • Observer or Plugins
  • Controllers and routing
  • Routing overview
  • Assignment: Create a frontend page to view authors
  • Backend routes
  • Override a controller action
  • Logic of the FrontController class
  • Routers
  • How 404 pages work
  • How the SecurityTxt module works
  • Creating a custom router
  • Assignment: Create a custom router for your Author entity
  • Quiz: Routers
  • CMS parts
  • CMS Blocks
  • CMS pages
  • CMS widgets
  • Widgets
  • Assignment: Create a custom widget for your Author entity
  • Adding a custom page type
  • CSP
  • Content Security Policy
  • Toggling CSP mode
  • Example of CSP with external CSS
  • Whitelisting values for CSP
  • Example with whitelisting external CSS
  • CSP in the Yireo GoogleTagManager module
  • Dummy `$secureRenderer`
  • Whitelisting inline JavaScript in the checkout
  • CspNonceProviders
  • Disabling CSP
  • Useful CSP extensions
  • Filesystem
  • Using the filesystem
  • Reading files
  • Assignment: Create a CLI command to output a file
  • Writing files
  • Repositories
  • Repositories
  • Sorting lists with repositories
  • Using filters with repositories
  • Debugging SELECT queries with repositories
  • Using filter groups with repositories
  • The bad side of repositories
  • Creating your own repository
  • Adding CLI classes for the repository
  • Integration tests for our custom repository
  • Assignment: Create a custom repository for your author entity
  • Custom helper classes for your repositories
  • Class patterns
  • Data objects
  • Builder pattern
  • No more Helpers
  • Database operations
  • Declarative schemas (advanced)
  • DB schema patches
  • Adding `startSetup` and `endSetup`
  • Manual SQL queries
  • Future changes in database layer
  • EAV operations
  • EAV attributes
  • Creating an EAV entity
  • Attributes
  • About attributes
  • Attribute models
  • Working with the configuration
  • Attribute sets
  • Category attributes
  • Extension attributes
  • Extension Attributes
  • Example product extension attribute
  • Adminhtml
  • Backend routes
  • Adding Store Configuration settings
  • ACL rules
  • Adding a menu to the Admin Panel
  • Basics of adding UiComponents
  • Extending a UiComponent grid
  • Creating a UIComponent grid
  • Hyva Admin
  • Custom backend theme
  • Indexing
  • Indexing overview
  • Where to look for indexing
  • How indexing works
  • Tuning indexing
  • Creating a custom indexerer
  • Backend of the checkout
  • ConfigProviders for `window.checkoutConfig`
  • Layout processors
  • Adding a new Layout Processor
  • The Vault
  • Multi Source Inventory
  • Multi Source Inventory overview
  • Reservations
  • Source Selection Algorithms (SSA)
  • Configuring MSI
  • Simplest setup of MSI
  • Coding samples with MSI
  • Database tables for MSI
  • The old Stock Registry
  • REST API
  • Web APIs

Magento 2 GraphQL Development

  • GraphQL basics
  • Introduction to GraphQL
  • GraphQL clients
  • GraphQL queries
  • Assignment: Make some queries
  • GraphQL mutations
  • Assignment: Login via GraphQL and review your addressbook
  • GraphQL call types
  • GraphQL fragments
  • GraphQL directives
  • GraphQL schema discovery and introspection
  • Magento GraphQL API
  • Introducing Magento GraphQL
  • Adding a new endpoint
  • Extending the product schemas
  • Extending the GraphQL storeConfig endpoint
  • Working with context
  • Resolvers
  • Testing GraphQL
  • URL Resolving
  • GraphQL caching
  • Exception handling
  • Tips & tricks

Magento 2 Hyvä Theme Development

  • Introduction
  • Introduction to Hyvä Themes
  • Overview of Hyvä theme packages
  • Overview of Hyvä modules
  • Hyvä Admin
  • Assignment: Install Hyva Admin
  • Quick start
  • Running a project in Hyvä
  • Requirements for Hyvä
  • Assignment: Prepare your Magento environment for Hyva
  • Development tools for Hyvä
  • Assignment: Install of the relevant development tools
  • Installation of Hyvä packages
  • Assignment: Install Hyva
  • Assignment: Remove the demo content
  • Creating a new Hyva theme
  • Assignment: Create a new Hyva theme
  • Extending the `Hyva/default` theme
  • Discovering the `Hyva/default` theme
  • Using browser syncing
  • Tailwind CSS
  • Introducing Tailwind
  • Quick start
  • Assignment: Kickstart a simple non-Magento app using Tailwind
  • Using Windy for Tailwind CSS development
  • Hyvä build modes
  • Tailwind configuration file
  • Configuring breakpoints
  • Configuring colors
  • Working with PostCSS
  • Optimizing CSS classes
  • Purging Magento modules
  • Configuring fonts
  • Tailwind plugins
  • Using the prose plugin
  • Assignment: Make sure your WYSIWYG output displays properly
  • The workings of `@apply`
  • Tips and tricks
  • Just-In-Time Mode
  • Hyva_CmsTailwindJit module
  • Tailwind 3 upgrade
  • Using PhpStorm for Tailwind development
  • ViewModel classes
  • Using ViewModels
  • Creating a ViewModel for Hyva
  • Assignment: Create a ViewModel
  • Working with icons
  • Alpine JS
  • Introduction to AlpineJS
  • Basic syntax
  • `x-model` directive
  • Magics
  • The `$el` magic
  • The `$nextTick` magic
  • `x-ref` directive
  • Watching variables
  • `x-cloak` directive
  • `x-spread` directive
  • Nested data
  • AlpineJS state
  • Copying a slider from alptail
  • JavaScript events in Hyva
  • Hyva private content
  • Depending on `window.hyva`
  • Mixing AJAX call with events
  • Loading a CMS Block via GraphQL
  • Checkout with Hyva
  • Checkout options
  • Hyvä React Checkout
  • Customizing the React checkout
  • Fixing the cart ID
  • Fix duplicate React versions
  • Fix the vendor folder
  • Overriding components
  • React or Preact developer tools
  • React checkout architecture
  • Using context in the React checkout
  • Using the React checkout in production
  • Dealing with CORS issues
  • Compatibility modules
  • Compatibility modules
  • Rewrite Luma scripts to Alpine
  • Using compatibility modules
  • Creating a compatibility module
  • Converting an Example Widget module
  • Widgets
  • Introduction to Hyvä widgets
  • Tips & tricks
  • Performance tips
  • Equal heights solutions

Magento 2 Hyvä Checkout Development

  • Introduction
  • Course introduction
  • Meet Hyvä
  • Hyvä and checkouts
  • Hyvä Checkout
  • Requirements for this course
  • Getting started
  • Magewire first
  • Hyvä Checkout installation
  • Configuring Hyvä Checkout
  • Create a custom Hyvä Theme
  • Customize styling
  • Debugging MageWire
  • Using the LiveWire DevTools
  • Hyva Checkout architecture
  • Hyva Checkout architecture overview
  • The XML layout of Hyva Checkout
  • Blocks, ViewModels and Components
  • Steps and step evaluation
  • Conditions
  • Customizing things
  • Something went wrong
  • Events
  • JavaScript events in checkout
  • Magento observable events
  • MageWire events
  • Form manipulation
  • Modifying form fields in the Admin
  • Additional EAV shipping address field
  • Registering a form modifier
  • Common actions in form modifiers
  • Form events
  • Example: Changing Tailwind classes
  • Creating new fields
  • Form components
  • Magewiring the address
  • Checkout scenarios
  • Checkout progress bar
  • Reordering steps in the checkout
  • Additional step in the checkout
  • In-store pickup
  • Payment methods
  • Payment methods

Magento 2 Installation

  • Hosting environment
  • Development platform
  • Step-by-step guide for Windows WSL
  • Assignment: Windows + WSL + Ubuntu Linux
  • Docker overview
  • Docker with Magento
  • Tips for Docker & Magento
  • Manual Docker (docker-run)
  • Creating a network
  • Running PHP-FPM manually
  • Running Nginx manually
  • Running MySQL manually
  • Running Redis manually
  • Running ElasticSearch manually
  • Running Varnish manually
  • Magento installation in Docker
  • Resetting your environment
  • Hypernode image
  • Docker image of Michiel
  • docker-compose stacks
  • Existing Docker configurations for Magento
  • Custom `docker-compose` cluster for Magento 2
  • Assignment: Setup a custom `docker-compose` cluster and install Magento 2
  • Assignment: Setup a custom `docker-compose` cluster with the Hypernode image
  • Magento ECE Docker
  • Warden
  • Mark Shust Docker
  • ddev with Magento
  • Media CT Docker
  • Magento and composer
  • Magento composer root update plugin
  • Magento Quality Patches
  • Tips and tricks
  • Magento installation
  • Minimum system requirements
  • Installing Magento
  • Assignment: Install Magento 2 via composer
  • Installing sample data
  • Assignment: Install Sample Data
  • Upgrading Magento
  • Assignment: Enable the Developer Mode
  • Is Magento properly installed?
  • Deployment modes
  • Post install
  • Developer Tools
  • Disabling Two Factor Authentication
  • Assignment: Disabling Two Factor Authentication
  • Using n98-magerun2
  • Assignment: Install Magerun2
  • Creating an admin user with `magerun2`
  • Assignment: Upload Magento files to GitHub repository
  • Assignment: Configure PhpStorm
  • Assignment: Dump database and copy to GitHub
  • Assignment: Setup Mage2TV Cache Cleaner
  • Assignment: Disable static signing
  • Assignment: Disable the Full Page Cache
  • Disable Magento Business Intelligence
  • Magento tips
  • Development performance
  • Deployment
  • Using the Production Mode
  • Deployment checks
  • Deploying to production
  • Stupidness of `module:uninstall`
  • Using app:config commands
  • Deploying new store scopes via env.php
  • Deploy PHP
  • Using Jenkins for deployment
  • Zero downtime deployment
  • Blue Green deployment
  • Static content deployment
  • Performance
  • MySQL tuning
  • PHP tuning
  • Troubleshooting
  • Troubleshooting composer authentication
  • Reindexing issues

Magento 2 Merchant

  • Basics
  • Magento overview
  • Using the Magento Admin Panel
  • Configuration
  • Catalog
  • Catalog
  • Products
  • URLs
  • Categories
  • Product types
  • Product Attributes
  • Configurable Products
  • Assignment: Working with products & customers in the storefront & Admin Panel
  • Assignment: Draw a new plan for a new shop
  • CMS
  • CMS
  • CMS pages
  • CMS blocks
  • CMS Widgets
  • Discover the homepage
  • CMS Tags
  • Assignment: Assign CMS Blocks
  • Checkout
  • Checkout
  • Order status
  • Inventory stock
  • The Checkout
  • Marketing
  • Marketing
  • Tax
  • Tax configuration
  • Translations
  • Translations
  • Assignment: Get started with translations
  • Theming
  • Theming
  • Extensions
  • Extensions
  • Migration
  • Migration
  • Deployment
  • Deployment
  • Tips
  • Tips

Magento 2 Migration

Magento 2 Testing

  • Testing overview
  • Why testing?
  • Testing strategies
  • Testing tools
  • Test Driven Development (TDD)
  • TDD is dead
  • System Under Test (SUT)
  • Types of testing
  • Magento tests
  • Organizing your tests
  • Make it a habit
  • PHPUnit
  • PHPUnit overview
  • PHPUnit installation
  • PHPUnit configuration file
  • Assignment: Setup a custom `phpunit.xml`
  • PHPUnit bootstrap
  • Breaking changes in PHPUnit
  • PHPUnit 10 upgrade
  • Setup PhpStorm
  • Setup PHPUnit
  • Run PHPUnit with Docker
  • Create Run Configuration
  • Running tests from PhpStorm
  • Rerun automatically
  • Rerun failed tests
  • Debug tests with Xdebug
  • Unit tests
  • Structure of a unit test class
  • TDD example
  • Using `dev/tests/unit/phpunit.xml.dist`
  • Simple example unit test
  • Coding katas
  • Testing a Config-class
  • Mocking classes
  • Stubs vs mocks vs dummies
  • Using the ObjectManager in unit tests
  • Testing exceptions
  • Data providers in tests
  • setUp & tearDown
  • Adding messages to the output
  • Spying with PHPUnit
  • Marking tests
  • Yireo Test Generator
  • Mocking functions
  • Good practices for tests
  • Code coverage
  • Integration Tests
  • Overview of Integration Tests
  • Setting up integration tests
  • Running Integration Tests
  • TESTS_CLEANUP
  • Resetting the Integration Tests environment
  • First integration test
  • Which ObjectManager?
  • Testing a Config-class
  • Mocking vs ObjectManager in integration tests
  • Magento annotations & attributes
  • Config fixtures
  • Data fixtures
  • Tips for integration tests
  • Yireo Test Generator
  • Running tests with Xdebug enabled
  • Integration testing performance
  • Performance overview
  • ReachDigital Integration Testing Framework
  • Add Redis server
  • 04-dummy-elasticsearch
  • MySQL tuning
  • Composer replacements
  • Yireo Integration Test Helper
  • Minimizing modules that are enabled
  • Parallel test runs
  • Using tmpfs to speed up Integration Tests
  • `yireo/magento-integration-tests-docker-composer`
  • Integration Test scenarios
  • Testing module behaviour
  • First test
  • Generating tests
  • Checking for configuration values
  • Testing console commands
  • Testing controllers
  • Testing the layout independently
  • Testing sessions
  • Testing entities
  • Testing a schema
  • Testing event observers
  • Testing Magewire components
  • Testing DI plugins
  • ObjectManager preference overrides
  • Yireo Integration Testing Helper
  • Troubleshooting Integration Tests
  • Could not connect to the Amqp Server
  • Base table or view not found
  • Cannot open file
  • Connection refused
  • The default website isn't defined. Set the website and try again
  • Unable to retrieve deployment version
  • Issue with `ifconfig` in XML layout
  • `tasklist.exe not found`
  • The value of autoloader is specified, but file doesn't exist
  • Cannot instantiate interface Magento\Framework\Config\CacheInterface
  • Code quality
  • About code quality
  • Defensive programming
  • Object Calisthenics
  • SOLID
  • Law of Demeter
  • Other principles
  • Static code analysis
  • Refactoring legacy code
  • What is legacy code?
  • Refactoring with tests
  • Strangler fig pattern
  • Characterization tests
  • Functional Tests with PHPUnit
  • Overview of Functional Tests
  • Functional tests setup
  • Validate products
  • Customer VAT validation
  • API Functional Testing
  • Custom REST test
  • Custom GraphQL test
  • MFTF
  • Magento Functional Testing Framework (MFTF)
  • Static tests
  • Overview of static tests
  • Running tests on Magento core
  • PHP CodeSniffer (PHPCS)
  • Magento 2 Coding Standard
  • Running PHPStan in Magento
  • PHP linting
  • Varnish tests
  • Mutating testing
  • Mutation testing
  • Infection
  • Test automation
  • Automated testing overview
  • GitHub Actions
  • End-to-End testing
  • End-to-End testing
  • Cypress
  • Miscellaneous
  • Resources

Magento 2 Luma Frontend Development

  • Basics
  • Introduction to
  • Development tools
  • Development performance
  • Deployment modes
  • Static content deployment
  • Setting the Magento root
  • Troubleshooting tips
  • Relevant database tables
  • Creating a basic theme
  • Theme location
  • Creating a theme
  • Parent themes
  • Theme inheritance
  • Theme structure
  • Theme vs module
  • File `view.xml`
  • Assignment: Create a simple theme
  • Assignment: Override SVG logo in your theme
  • Assignment: Override `mage/calendar.css`
  • PHTML and HTML templates
  • Introduction to PHTML templates
  • Using the MageSpecialist DevTools
  • Assignment: Install the MSP DevTools
  • Using mage2tv/cache-clean
  • Overriding a PHTML template
  • Creating a new template
  • PHTML vs HTML templates
  • Assignment: Override PHTML templates
  • Debugging PHTML templates
  • Understanding the root template
  • Escaping values in templates
  • XML layout
  • XML layout concepts
  • Comparison with Magento 1
  • XML layout essentials
  • Review of homepage demo
  • Handles and handle types
  • Understanding page layouts
  • Assignment: Change the page layout of the product page
  • Adding labels to containers
  • Using containers
  • Adding a new page layout
  • The head section in the layout
  • Blocks in the layout
  • Layout updates
  • Moving elements
  • Removing elements
  • Rendering child elements in blocks
  • Reordering elements
  • Using block templates
  • Assignment: Add a template block to the sidebar of the homepage
  • Block arguments in the XML layout
  • Adding Google fonts
  • Assignment: Add a Google Font
  • Common XML layout modifications
  • Understanding root.phtml
  • Overriding layout
  • Adding FontAwesome
  • Assignment: Add FontAwesome
  • Overriding the logo
  • Adding menu-items to the main or the top menu
  • Text blocks
  • Assignment: Add a dummy block to the sidebar of the homepage
  • Troubleshooting layout issues
  • Multilinguality
  • Setting up Store Views for translation
  • Translating content
  • Translating system strings
  • Using inline translations
  • Assignment: Get started with translations
  • Creating a custom language pack
  • How JavaScript translations work
  • Block classes
  • Module essentials
  • Creating a Block
  • Using ViewModels
  • ViewModels vs Blocks
  • Extending `AbstractBlock`
  • Working with CMS Blocks
  • Example: Show products that are on sale
  • Assignment: Display Store Information details in the footer
  • Assignment: Analysing PHP errors in a ViewModel
  • Assignment: Add advertizement on some product and category pages
  • Assigning variables
  • Example: Adding a product to the footer
  • Layout name vs layout alias
  • Email templates
  • Customizing email templates
  • Adding a block to an email template
  • Using Yireo EmailTester
  • CSS, LESS, Sass
  • CSS strategies
  • How CSS is added via the XML layout
  • Magento its LESS strategy
  • LESS basics
  • To copy Fotorama into a LESS file
  • Removing calendar.css and others
  • One single CSS or separate CSS files?
  • Understanding the `@magento_import` directive
  • Example module with some LESS
  • LESS compilers
  • Debugging `var/view_preprocessed/`
  • Including critical CSS
  • CSS responsiveness - the Magento way
  • Best practices for overriding LESS files
  • Using SASS instead of LESS
  • SASS basics
  • Grunt vs Gulp
  • Using Grunt for LESS compilation
  • Assignment: Setup Grunt
  • Grunt tips
  • Frontools Gulp usage
  • Using subodha his Gulp
  • bobmotor Gulp usage
  • Assignment: Change the body background color
  • Assignment: Change the color of the add-to-cart button
  • Assignment: Create a gradient switcher
  • Assignment: Add custom Homepage content with styled tiles
  • Frontend performance
  • General performance tips
  • JS bundling
  • Caching blocks
  • Miscellaneous
  • Magento theme `type`
  • Assignment: Add custom Homepage content with a custom LESS file
  • Assignment: Create a parallax effect
  • Tips
  • Troubleshooting themes

Magento 2 Luma JavaScript Development

  • JavaScript
  • Luma JavaScript standards
  • Invocation patterns
  • 02-jquery
  • jQuery in Magento
  • Assignment: Create a simple jQuery snippet
  • jQuery and the keyword this
  • jQuery noConflict mode
  • RequireJS
  • How JavaScript translations work
  • AMD standard
  • RequireJS basics
  • RequireJS config per Magento module
  • Assignment: Create a RequireJS module with alias
  • RequireJS configuration
  • RequireJS rewrites
  • Assignment: RequireJS rewrites
  • RequireJS shims
  • RequireJS mixins
  • Assignment: Create a mixin
  • Component initializations
  • Assignment: Component initializations
  • Return values of RequireJS modules
  • Example: Changing background color
  • Assignment: Rewrite your jQuery snippet to a component
  • Changing options of the StoreView switcher
  • Assignment: Changing the StoreView switcher
  • Assignment: Translate values in JavaScript
  • Dynamic dependencies
  • RequireJS tips
  • KnockoutJS
  • Introduction to Knockout.js
  • Knockout Context Debugger browser plugin
  • Binding Knockout the Magento way
  • Assignment: Create an UIComponent
  • Binding variables in Knockout
  • Text input with Knockout observable
  • Using `ko.observableArray`
  • Simple counter with Knockout
  • Assignment: Edit the message of your UIComponent
  • Interacting with Knockout ViewModels
  • Interacting with Magento uiComponents
  • Simple Knockout ViewModel linking
  • Analysing the customer greeting
  • Subscribing to the minicart
  • Assignment: Create an UIComponent listening to cart changes
  • Working with computed observables
  • Knockout Components
  • Debugging Knockout
  • Using the uiRegistry
  • Definition of UiComponents
  • Advanced UiComponent
  • Knockout HTML templates
  • Analysing the minicart
  • Rendering child components
  • Adding extra info to the minicart
  • KnockoutJS Advanced
  • State component with Knockout
  • Extending the checkout
  • ConfigProviders for `window.checkoutConfig`
  • Layout processors
  • Adding a new Layout Processor
  • Adding a child component to the checkout
  • Adding a new step in checkout
  • Component configuration
  • Adding a field to the address form
  • Adding a CMS block in checkout
  • Data sources in the checkout
  • Add additional email validation
  • ZIP code validation
  • Payment validators
  • Observer quote changes
  • Calling upon `checkoutProvider`
  • Add a block to the sidebar
  • Observing field validation
  • Private content
  • Definition of Private Content
  • Dealing with `customerData`
  • Example for using `customerData`
  • Add a new customerData section
  • How `customerData` sections get their data
  • Showing `customer().lastname` in a Knockout template
  • Depersonalizer

Vue Storefront 1 Fundamentals

  • Introduction
  • Introducing Vue Storefront
  • Organizing the stack in development
  • Preparing for the PWA
  • Installation & Setup
  • A mental checklist for the stack
  • Installing the Vue Storefront 1 PWA
  • Starting with the Vue Storefront 1 PWA
  • Installing the Vue Storefront 1 API
  • Setting up Redis
  • Introduction to ElasticSearch
  • Setting up ElasticSearch
  • Using ElasticSearch 7
  • Setting up Kibana
  • Configuring ElasticSearch in PWA & API
  • Setting up Magento 1
  • Setting up the Magento 1 indexer
  • Setting up VSBridge for Magento 1
  • Configuring Magento 1 in the API
  • Setting up Magento 2
  • Setting up the Magento 2 indexer
  • Setting up a data push with Mage2VueStorefront
  • Configuring the VSF1 API for Magento 2
  • Theming
  • Switching themes
  • Adding Capybara
  • Creating a new theme
  • Working with Storefront UI
  • Working with Lerna
  • Modifying routes
  • CMS Blocks
  • CMS Pages
  • Layouts and templates
  • Adding Vue plugins
  • Adding new product attribute
  • Exploring Capybara's code
  • Exploring Capybara's `homepage` Vuex store
  • Handling multiple languages
  • Vue essentials
  • Vue essentials
  • Dealing with Vue mixins
  • Dealing with Vue slots
  • Dealing with Vue events
  • Dealing with Vuex
  • PWA architecture
  • Understanding the PWA configuration
  • Faster local compilation
  • Working with GraphQL
  • Understanding SSR
  • PWA modules
  • Vocabulary of modules
  • Finding extensions
  • Overview of PWA modules
  • Creating a PWA module
  • What is a PWA module able to do?
  • Extending routing using a PWA module
  • Creating a custom Vuex store
  • Extending an existing Vuex store
  • Example: Dealers
  • API architecture
  • Introduction to ExpressJS
  • ExpressJS middleware
  • Extending the API
  • Order2Magento
  • Magento 2 REST calls
  • Production
  • Running the stack in production
  • Using PM2
  • Performance