Full Access to All Magento 2 On-Demand Training

In stock
SKU
v10
€1,049.00

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

  • Courses included: 21
  • Total video time: 96 hours
  • Access period: 1Y
  • € 1049 for 1 year
  • € 11 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,049.00
Access period 1 year

Included courses

Frontend development generics

Status: Complete
Last updated: 2023-12-13
Number of lessons: 45
Number of slides: 205
Videos: 5.1 hours

PHP Basics

Status: Complete
Last updated: 2023-03-21
Number of lessons: 39
Number of slides: 109
Videos: 0 hours

PHP Advanced Programming

Status: Complete
Last updated: 2023-08-20
Number of lessons: 74
Number of slides: 484
Videos: 1.5 hours

JavaScript Advanced

Status: Complete
Last updated: 2023-07-22
Number of lessons: 59
Number of slides: 269
Videos: 0.3 hours

Linux Fundamentals

Status: Complete
Last updated: 2023-05-08
Number of lessons: 33
Number of slides: 154
Videos: 0 hours

Docker Essentials

Status: Complete
Last updated: 2023-06-15
Number of lessons: 26
Number of slides: 144
Videos: 0 hours

Adobe PWA Studio Development

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

Magento 2 Technical Architecture

Status: Complete
Last updated: 2023-07-22
Number of lessons: 40
Number of slides: 155
Videos: 0.3 hours

Magento 2 Backend Development I

Status: Complete
Last updated: 2023-07-22
Number of lessons: 83
Number of slides: 332
Videos: 11.1 hours

Magento 2 Backend Development II

Status: Complete
Last updated: 2024-04-19
Number of lessons: 80
Number of slides: 336
Videos: 6.3 hours

Magento 2 Backend Development III

Status: Complete
Last updated: 2023-10-09
Number of lessons: 32
Number of slides: 180
Videos: 0 hours

Magento 2 GraphQL Development

Status: Complete
Last updated: 2023-07-22
Number of lessons: 21
Number of slides: 84
Videos: 2 hours

Magento 2 Hyvä Theme Development

Status: Complete
Last updated: 2023-10-08
Number of lessons: 81
Number of slides: 324
Videos: 10.8 hours

Magento 2 Hyvä Checkout Development

Status: Complete
Last updated: 2024-04-19
Number of lessons: 74
Number of slides: 276
Videos: 11 hours

Magento 2 Installation

Status: Complete
Last updated: 2023-08-10
Number of lessons: 67
Number of slides: 270
Videos: 2.7 hours

Magento 2 Merchant

Status: Complete
Last updated: 2023-03-24
Number of lessons: 32
Number of slides: 171
Videos: 0 hours

Magento 2 Migration

Status: Complete
Last updated: 2021-11-04
Number of lessons: 0
Number of slides: 0
Videos: 0 hours

Magento 2 Unit, Integration and Functional Testing

Status: Complete
Last updated: 2024-04-19
Number of lessons: 62
Number of slides: 167
Videos: 0 hours

Magento 2 Luma Frontend Development

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

Magento 2 Luma JavaScript Development

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

Vue Storefront 1 Fundamentals

Status: Complete
Last updated: 2023-07-22
Number of lessons: 61
Number of slides: 362
Videos: 9.4 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
  • 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
  • Database concepts
  • 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 8.2 syntax
  • 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
  • Built-in classes and interfaces
  • Tools
  • Tools overview
  • Composer
  • Assignment: Implement composer
  • Assignment: Add simple templating
  • Composer
  • Requiring a composer package
  • Semantic versioning
  • install vs update
  • 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 calesthenics
  • 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 tests
  • 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
  • Magento issues
  • Assignment: Dangers of running root
  • SonarQube
  • Debugging tips
  • Miscellaneous
  • Output
  • Performance
  • Security
  • Modernizing WordPress

JavaScript Advanced

  • Syntax
  • The problem of 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
  • Polymer
  • React JS
  • Assignment: Create a simple React application
  • Vue JS
  • Assignment: Create a simple Vue application
  • Svetle
  • Invocation patterns
  • Invocation patterns
  • Binding the keyword this
  • Module pattern
  • Internals
  • ES6 Strict Mode
  • Understandig the prototype chain
  • The Prototype Chain
  • Object properties
  • Proxy
  • Monads
  • Collections
  • Event loop
  • 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
  • Overview of Node
  • 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 basics
  • ServiceWorker events
  • Other topics
  • Webcomponents
  • Basics
  • 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
  • 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 Actions
  • 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 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
  • Conclusion

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
  • Product attributes
  • Order flow
  • Customer concepts
  • Keeping stock
  • Using modules
  • Dealing with modules
  • Really handy modules
  • Example module installations
  • Files and folders
  • 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`
  • 02-composer
  • Deployment
  • Deployment
  • Deploying with DeployerPHP
  • Tips and tricks
  • Tips & tricks
  • Translations
  • add-french-store-view

Magento 2 Backend Development I

  • Magento basics
  • Quick peek at Magento 2 architecture
  • Theming basics
  • 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
  • Architecture
  • Areas in the Magento application
  • Application layers
  • Interfaces and Service Contracts
  • Dealing with backward compatibiliby
  • Dependency Injection
  • Sandbox script
  • Introduction to Dependency Injection
  • Object Manager
  • DI preferences
  • DI types aka constructor argument replacement
  • Virtual Types essentials
  • DI factories
  • Creating a custom factory
  • DI proxies
  • DI interceptor plugins
  • DI recipees
  • DI recipees
  • Inject the App State and check for the area
  • Checking for the Developer Mode in your code
  • Injecting a Store Configuration value
  • Injecting the current product
  • Injecting the registry into your class
  • Injecting URLs into your class
  • Creating a custom logger
  • Assignment: Create a custom logger
  • Injecting the current customer session
  • Injecting the layout into your class
  • 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
  • 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 models via CLI commands
  • Example data model with integration tests
  • Improving your data model
  • Improving your resource model
  • 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
  • securitytxt
  • Adding a custom router
  • Assignment: Create a custom router for your Author entity
  • Quiz: Routers
  • CMS parts
  • CMS Blocks
  • CMS pages
  • CSP
  • CSP
  • Advanced frontend topics
  • Widgets
  • Assignment: Create a custom widget for your Author entity
  • Adding a custom page type
  • Filesystem
  • Using the filesystem
  • Reading files
  • Assignment: Create a CLI command to output a file
  • Writing files
  • Repositories
  • Repositories
  • Creating your own repository
  • Assignment: Create a custom repository for your author entity
  • Class patterns
  • Data objects
  • Builder pattern
  • No more Helpers
  • Database operations
  • Declarative schemas (advanced)
  • 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 item
  • Basics of adding UiComponents
  • Extending a UiComponent grid
  • Creating a UIComponent grid
  • Hyva admin
  • Custom backend theme
  • Caching
  • Caching backends
  • Caching types
  • Adding a custom cache type
  • core-cache-config
  • Parallel generation with Redis
  • Varnish
  • Introducing Varnish
  • Setting up Magento and Varnish
  • Troubleshooting Varnish
  • Edge Side Includes
  • VCL configuration
  • Tips when using Varnish
  • Backend of the checkout
  • ConfigProviders for window.checkoutConfig
  • Layout processors
  • Adding a new Layout Processor
  • The Vault
  • REST API
  • Web APIs

Magento 2 Backend Development III

  • Block caching
  • Block caching
  • Cache tags in Blocks
  • Cache keys in Block
  • Advanced Block caching
  • Full Page Cache
  • Full Page Cache in Magento
  • ElasticSearch
  • Introduction to ElasticSearch
  • Terminology
  • Connecting to ElasticSearch
  • Installing ElasticSearch
  • ElasticSearch in PHP
  • ElasticSearch in Magento
  • Aggregation APIs
  • Clustering ElasticSearch
  • Scaling tips for ElasticSearch
  • ELK stack
  • Kibana
  • Indexing
  • Indexing overview
  • Where to look for indexing
  • How indexing works
  • Tuning indexing
  • Creating a custom indexer
  • Message Queue
  • Introducing message queuing
  • AMQP
  • Magento message queue
  • Multi Source Inventory
  • Multi Source Inventory overview
  • Reservations
  • Source Selection Algorithms
  • Configuring MSI
  • Simplest setup of MSI
  • Coding samples with MSI
  • Database tables for MSI
  • Stock registry

Magento 2 GraphQL Development

  • GraphQL basics
  • Introduction to GraphQL
  • GraphQL clients
  • GraphQL queries
  • Assignment: Make some queries
  • GraphQL mutations
  • 04-mutations-assignment
  • GraphQL call types
  • GraphQL fragments
  • GraphQL directives
  • GraphQL schema discovery and introspection
  • Magento GraphQL API
  • Introducing the Magento GraphQL API
  • Adding a custom GraphQL endpoint
  • Extending the product schemas
  • Extending the GraphQL storeConfig endpoint
  • Resolver $context argument
  • GraphQL resolvers
  • Testing GraphQL endpoints
  • GraphQL URL resolving
  • GraphQL caching
  • Exception handling
  • Tips and tricks with the GraphQL API

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
  • Project kickstart
  • 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 theme
  • Using browser syncing
  • Tailwind CSS
  • Introducing Tailwind CSS
  • Quick start without Hyva
  • 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
  • Tailwind and PostCSS
  • Optimizing CSS classes
  • Purging Magento modules
  • Configuring fonts
  • Tailwind plugins
  • Using the prose plugin
  • Assignment: Make sure your WYSIWYG output displays properly
  • Using apply
  • Tips and tricks
  • Just-In-Time compilation
  • 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
  • Introducing 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
  • State management in AlpineJS
  • Copying a slider from alptail
  • Events in AlpineJS
  • 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
  • Rewriting Luma scripts to Alpine
  • Using compatibility modules
  • Creating a custom compatibility module
  • Converting an Example Widget module
  • Widgets
  • Introduction to Hyvä widgets
  • Tips & tricks
  • Performance tuning
  • Setting equal heights

Magento 2 Hyvä Checkout Development

  • Introduction
  • Course introduction
  • Meet Hyvä
  • Hyvä and checkouts
  • Hyvä Checkout
  • Requirements for this course
  • My Development Setup
  • Getting started
  • Magewire installation
  • Assignment: Install MageWire
  • Troubleshooting MageWire installation
  • What is MageWire?
  • Hyvä Checkout installation
  • Configuring Hyvä Checkout
  • Create a custom Hyvä Theme
  • Customize styling
  • Debugging MageWire
  • Using the LiveWire DevTools
  • MageWire
  • Example module with MageWire
  • Binding handlers
  • Magewire with lists
  • Modifiers
  • `wire:select` modifier
  • Assignment: Create a simple counter component
  • Example counter with MageWire
  • Example counter with MageWire (advanced)
  • Magewire being `dirty`
  • Switch a block template in Magewire
  • Magewiring forms
  • Magic actions
  • Add Hyva styling to your component
  • Combining MageWire with Alpine
  • Initializing content via `wire:init`
  • How MageWire loads data
  • MageWire HTTP calls
  • Component classes
  • MageWire, ViewModel or Block?
  • Component hooks
  • Client-side hooks
  • Events and listeners
  • JavaScript events
  • Magento events
  • Different events, different scenarios
  • Hydrators
  • Nesting components
  • Nesting components with same class
  • Strong typing and Magewire
  • Dom Diffing issues
  • Magewire scenarios
  • A product finder based on Magewire
  • Adding Magewire to the minicart
  • 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 while trying to load the checkout
  • 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
  • JS customization
  • Entanglement
  • The Magewire JavaScript object
  • 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
  • Varnish in Docker
  • 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 Hypernode
  • 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 Magerun
  • 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 Unit, Integration and Functional Testing

  • Testing overview
  • Testing strategies
  • Why testing?
  • TDD
  • Types of testing
  • Overview of testing
  • Organizing your tests
  • Running tests from PHPStorm
  • 02-code-quality
  • Defensive programming
  • DRY principle
  • Object Calisthenics
  • SOLID principles
  • Law of Demeter
  • Tell don't ask
  • Static code analysis
  • Unit tests
  • Basics of unit testing
  • Example unit test
  • Unit testing katas
  • Unit Tests
  • Using `dev/tests/unit/phpunit.xml.dist`
  • Stubs vs mocks vs dummies
  • MockBuilder
  • Testing exceptions
  • Data providers in tests
  • Spying with PHPUnit
  • Integration Tests
  • Overview of Integration Tests
  • Setting up integration tests
  • Running Integration Tests
  • Integration testing
  • Which ObjectManager?
  • Tips for integration tests
  • Magento annotations
  • Fixtures
  • Integration Tests with Warden
  • Minimizing modules that are enabled
  • Troubleshooting integration tests
  • Advanced topics
  • Testing events and observers
  • Integration Test scenarios
  • Testing module behaviour
  • Testing controllers
  • Testing the layout
  • Testing sessions
  • Testing entities
  • Refactoring legacy code
  • What is legacy code?
  • Refactoring with tests
  • Strangler fig pattern
  • Refactoring with TDD
  • Different testing types for legacy code
  • Characterization tests
  • Code coverage
  • 08-integration-test-performance
  • Performance overview
  • Yireo Integration Test Helper
  • Using tmpfs to speed up Integration Tests
  • Live Tests
  • Overview of Live Tests
  • Setup of live tests
  • Using the ProductRepository in a functional test
  • Functional Tests following Magento
  • API Functional Testing
  • MFTF
  • Magento Functional Testing Framework (MFTF)
  • 14-cicd
  • PHP linting
  • GitHub Actions
  • End-to-End testing
  • An overview of End-to-End testing
  • Cypress

Magento 2 Luma Frontend Development

  • Basics
  • Introduction to Magento 2 frontend development
  • Development tools
  • Development performance
  • Deployment modes
  • Static Content Deployment
  • Setting the DocumentRoot in the Apache webserver
  • Troubleshooting theming files
  • Relevant database tables
  • Creating a basic theme
  • Theme location
  • Creating a theme
  • Parent themes
  • Theme inheritance
  • Theme structure
  • Theme vs module
  • view.xml file
  • 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 & View Model 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
  • Working with child blocks
  • 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
  • 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 the 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 KO 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 1
  • Organizing the stack in development
  • Preparing for the PWA
  • Installation
  • 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
  • Quick 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 Magento 2 in the API
  • Theming
  • Switching between themes
  • Adding the Capybara theme
  • Creating a new theme
  • Working with Storefront UI
  • Working with Lerna
  • Modifying routes
  • Using CMS Blocks
  • Using CMS Pages
  • Layouts and templates
  • Adding Vue plugins
  • Adding new product attributes
  • 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 state management
  • PWA architecture
  • Understanding the PWA configuration
  • Faster local compilation
  • Working with GraphQL
  • SSR
  • Modules
  • Vocabulary
  • 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
  • Dealers example
  • API architecture
  • Introduction to ExpressJS
  • ExpressJS middleware
  • Extending the API
  • Order2Magento
  • Magento 2 REST calls
  • In production
  • Running the stack in production
  • Using PM2
  • Performance