Всё остальное честнее отдать профильному специалисту, чем взяться и научиться за ваш счёт.
01
Frontend-разработка
Вёрстка и интерфейсы, которые не разъезжаются на реальных устройствах. Семантика, доступность, скорость: интерфейс должен открываться на слабом телефоне, а не только на макете.
HTML
CSS
JavaScript
адаптив
доступность
Core Web Vitals
02
Разработка на WordPress
Темы с нуля и доработка существующих, свои типы записей, плагины под задачу. Без нагромождения конструкторов: то, что не нужно, просто не подключается.
темы
плагины
CPT
WP REST API
миграции
ускорение
03
Full stack на PHP
Серверная часть и интеграции: обмен с CRM, платёжными системами и маркетплейсами, очереди, фоновая обработка, разбор инцидентов на боевом сервере.
PHP
MySQL
Laravel
REST
очереди
Linux
04
OpenCart — frontend
Шаблоны и витрина магазина: карточка товара, каталог, корзина и оформление заказа. Правки, которые переживают обновление и не ломают чужие модули.
шаблоны
каталог
корзина
оформление заказа
модули
05
Magento 2 — full stack
Модули и темы, доработка витрины и серверной части, интеграции с внешними системами. Работа по правилам платформы, чтобы обновление не превращалось в переписывание.
модули
темы
Luma
GraphQL
индексаторы
производительность
Процесс
Как строится работа
Порядок один и тот же на задаче за пять тысяч и на проекте за триста: он и делает сроки предсказуемыми.
Диагностика
Сначала выясняю причину, а не правлю симптом. По итогу — что именно сломано и что с этим делать. Стоимость диагностики засчитывается в работы.
Оценка с допущениями
Срок и цена называются вместе со списком допущений, на которых они посчитаны. Не подтвердилось допущение — пересчитываем письменно до продолжения, а не по факту срыва.
Работа этапами
Оплата после каждого этапа: вы не платите вперёд за весь объём и можете остановиться на любом шаге. Правки — на копии, бэкап до первого изменения.
Сдача по критериям
По каждому пункту задачи заранее записан проверяемый признак готовности. «Готово» определяется по нему, а не на глаз.
Простой скрипт в консоле дает бордер всем (или нужным) элементам: [].forEach.call($$("*"),function(a){a.style.outline="1px solid #"+(~~(Math.random()*(1<<24))).toString(16)}) Можем выбирать определенные селекторы или выделение элементов на странице…