Skip to content

Instantly share code, notes, and snippets.

View markshust's full-sized avatar
🤓
Working on educational & training material for Magento 2

Mark Shust markshust

🤓
Working on educational & training material for Magento 2
View GitHub Profile
@markshust
markshust / CLAUDE.md
Created March 15, 2025 11:05
Claude Code configuration for Magento

Magento 2 Dev Commands & Guidelines

Build & Installation

  • composer install - Install dependencies
  • bin/magento setup:install - Install Magento
  • bin/magento setup:upgrade - Update database schema
  • bin/magento setup:di:compile - Compile dependency injection
  • bin/magento setup:static-content:deploy - Deploy static assets

Testing

@markshust
markshust / .zshrc
Created January 31, 2025 21:29
bash function to build & push multi-architecture docker images upstream
dbx() {
echo "Enter the tag (e.g., markoshust/magento-php:8.4-fpm-0):"
read -r tag
if [ -z "$tag" ]; then
echo "Error: Tag cannot be empty"
return 1
fi
echo "You entered: $tag"
@markshust
markshust / Collection.php
Created November 27, 2024 00:38
Fetch data from multiple tables in a Magento admin grid
<?php
namespace Macademy\Minerva\Model\ResourceModel\Faq\Grid;
class Collection extends \Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult
{
protected function _initSelect()
{
parent::_initSelect();
// Add your join statements here
@markshust
markshust / README.md
Last active March 17, 2025 23:57
GitHub Action to deploy Laravel app

Set up GitHub Actions to handle deployments for your Laravel application. This has similar functionality to Laravel Forge without the recurring cost. GitHub Actions can be used to automate your deployment process on every push to your repository.

Prerequisites

  1. Server Access: Ensure you have SSH access to your server where the Laravel app will be deployed.
  2. Secrets: Store sensitive information such as your server's IP address, SSH username, and private SSH key in GitHub Secrets. Go to your GitHub repository, navigate to "Settings" > "Secrets and variables" > "Actions", and add the following secrets:
    • DEPLOY_SERVER_IP: Your server's IP address.
    • DEPLOY_SERVER_USER: Your SSH username.
    • DEPLOY_SERVER_KEY: Your private SSH key. Make sure this key is authorized to access your server (~/.ssh/authorized_keys).
  • DEPLOY_SERVER_DIR: The directory where you'd like to deploy your app, relative to /var/www/. Ex: example.com
@markshust
markshust / start
Created November 8, 2024 15:48
Helper script to start Laravel with Sail, npm and ngrok.
#!/bin/bash
# Function to cleanup processes on script exit
cleanup() {
echo "Cleaning up..."
./vendor/bin/sail down
kill "$(jobs -p)" 2>/dev/null
exit
}
@markshust
markshust / Collection.php
Created February 24, 2024 18:43
Create a custom admin grid collection class to add a custom field to the grid
<?php
// 3. Create a custom collection class that extends SearchResult.
declare(strict_types=1);
namespace Macademy\Minerva\Model\ResourceModel\Faq\Grid;
use Magento\Framework\View\Element\UiComponent\DataProvider\SearchResult;
@markshust
markshust / personal-business-coach.txt
Created January 2, 2024 20:24
ChatGPT Prompt: Personal & business coach
Please act as both a personal and business coach.
## Who am I?
My name is... (continue with extreme detail)
## Given my personal mission statement
As a _your job goes here_, ...
@markshust
markshust / modifyWhereCondition.php
Created December 7, 2023 16:11
Modify a Magento SQL database where condition with an alternate condition
<?php
...
/**
* Modify a WHERE condition in a collection's select statement.
*
* @param \Magento\Framework\Data\Collection\AbstractDb $collection The collection to modify.
* @param string $searchCondition The condition part to search for in the WHERE clause.
* @param string $replaceCondition The condition part to replace with in the WHERE clause.
* @return void
@markshust
markshust / debounce.vue
Created December 3, 2023 13:20
Nuxt Content VueJS v2 Debounce Input
<template>
<div>
<input
type="text"
placeholder="Search"
@input="debounceSearch()"
v-model="search"
/>
</div>
</template>
<template>
<div>
<input
type="text"
placeholder="Search Your Interest"
@input="debounceSearch()"
v-model="searchInput"
/>
</div>
</template>