Skip to content

Instantly share code, notes, and snippets.

View markshust's full-sized avatar
🤓
Currently exploring building production apps with Claude Code & AI.

Mark Shust markshust

🤓
Currently exploring building production apps with Claude Code & AI.
View GitHub Profile
@markshust
markshust / expressive-strolling-hopcroft.md
Created December 20, 2025 21:22
MergeLater public home page plan

MergeLater Public Home Page Plan

Overview

Create a high-converting public sales landing page for MergeLater that converts developers to early-access waitlist signups. Single-page format with smooth scroll navigation.


Design Direction: "Terminal Noir Elevated"

Aesthetic Philosophy

@markshust
markshust / glittery-imagining-yao.md
Created December 20, 2025 21:07
Results from Claude Code's plan mode for MergeLater

MergeLater - GitHub PR Scheduler

Domain: mergelater.com Project Location: /Users/markshust/Sites/mergelater

Overview

Build a multi-tenant Laravel web application that schedules GitHub PR merges at exact times. Users authenticate via GitHub OAuth and can schedule merges for any repo (personal or organization) they have write access to. Deploys to a DigitalOcean droplet managed by Laravel Forge.

Core Features

  • GitHub OAuth login (access user + organization repos)
@markshust
markshust / pre-commit
Created December 10, 2025 20:10
Git pre-commit hook to run Laravel unit tests and auto-correct failing test(s) with Claude Code CLI's -p flag
#!/bin/bash
# Configuration
MAX_ATTEMPTS=${CLAUDE_FIX_ATTEMPTS:-2}
AUTO_FIX=${CLAUDE_AUTO_FIX:-true}
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
@markshust
markshust / user-avatar-upload.md
Created November 19, 2025 18:44
requirements for custom user avatar uploads

User Avatar Upload

A comprehensive avatar management system that allows users to upload custom profile pictures with client-side cropping, stored as optimized WebP images with dynamic size generation and Gravatar fallback.

Feature Description

Users can upload a custom avatar (JPG/PNG, max 2MB, minimum 400x400px) which overrides their default Gravatar. The system provides an intuitive modal interface with real-time cropping preview using Cropper.js. Uploaded images are stored as 400x400 WebP format (85% quality) and served dynamically at any requested size via a dedicated endpoint. The solution uses local storage for development and Digital Ocean Spaces with CDN for production. Users can remove their custom avatar at any time to revert to Gravatar. The interface is accessible by clicking/tapping the user avatar anywhere on the site, providing a seamless editing experience on both desktop and mobile devices.

Requirements Summary

@markshust
markshust / README.md
Last active July 22, 2025 14:19
docker-magento documentation for Windows with WSL2
@markshust
markshust / README.md
Last active August 15, 2025 21:50
Zero-downtime Laravel deployment with GitHub Actions

GitHub Actions Deploy Script - Environment Variables Setup Guide

This guide explains how to set up the required environment variables (GitHub Secrets) for the Laravel deployment GitHub Actions workflow.

Overview

The deployment script uses GitHub Secrets to securely store sensitive information like SSH keys and server details. These secrets are referenced in the workflow using the ${{ secrets.SECRET_NAME }} syntax.

Required Secrets

Development Guidelines for Claude

Core Philosophy

TEST-DRIVEN DEVELOPMENT IS NON-NEGOTIABLE. Every single line of production code must be written in response to a failing test. No exceptions. This is not a suggestion or a preference - it is the fundamental practice that enables all other principles in this document.

I follow Test-Driven Development (TDD) with a strong emphasis on behavior-driven testing and functional programming principles. All work should be done in small, incremental changes that maintain a working state throughout development.

Quick Reference

@markshust
markshust / dbbackuprestore
Last active April 9, 2025 23:18
Backup prod MySQL database, sync it down locally, then restore it in local dev
#!/bin/bash
# bin/dbbackuprestore
# Configuration variables for remote server
REMOTE_SERVER=""
REMOTE_SERVER_USER="" # Leave empty if using SSH config or key-based auth
REMOTE_SERVER_PORT="" # Default SSH port
REMOTE_SSH_KEY="" # Path to SSH key file (leave empty if using default)
@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"