NIKOLA

Everything I have been paid to use

Not a wall of logos. Years mean years in production on somebody's live site — not a weekend tutorial, not a course. Where there is no number it means I have shipped with it but would not call it a specialism, and I would rather say so than pad the list.

16yrsPHP
16yrsWORDPRESS
12yrsWOOCOMMERCE
16yrsMYSQL
16yrsJAVASCRIPT

WordPress, properly

Sixteen years on one platform is long enough to have built almost every part of it from scratch at least once, and to have inherited every part of it broken at least twice.

THE CORE OF EVERYTHING I DO

Theme and plugin development

Custom themes written from a blank directory rather than bought and bent into shape. Plugins built to solve one problem properly and then documented so the next developer can pick them up. The most useful thing I have built is a WooCommerce plugin that lets a customer configure any product before buying it — it started as a client requirement and became reusable.

  • Custom theme development16 yrs
  • Plugin development16 yrs
  • Gutenberg / block editorcurrent
  • Advanced Custom Fieldslong
  • Custom post types & taxonomies16 yrs
  • Template hierarchy16 yrs
  • Hooks, filters, actions16 yrs
  • WP REST APIlong
  • WP-CLIlong
  • Multisite architecture12 yrs
  • WP Cron & Action Schedulerlong
  • Child themes & theme rescue16 yrs
  • Underscores / starter themes
  • theme.json
  • Custom admin interfaces16 yrs
  • WordPress security hardeninglong

STOREFRONT

WooCommerce

  • WooCommerce core12 yrs
  • WooCommerce Subscriptions7 projects
  • Custom payment gateways
  • Custom shipping methods
  • Product configurators3 builds
  • B2B & tiered pricing3 projects
  • Checkout customisation
  • WooCommerce REST API
  • Order & customer migration
  • Variable & grouped products
  • Woo store performance

PLUGIN ECOSYSTEMS

Third-party platforms

  • Paid Memberships Pro3 projects
  • WPML9 languages, RTL
  • BuddyPress
  • LMS platforms6 projects
  • SCORM
  • Gravity Forms
  • Yoast / RankMath
  • Elementor & WPBakery rescue
  • Mailchimp
  • Polylang

Everything around it

The parts that decide whether the WordPress work survives contact with production.

BACKEND

Languages & data

  • PHP 816 yrs
  • MySQL / MariaDB16 yrs
  • Laravel
  • Object-oriented PHP16 yrs
  • Composer
  • Query optimisationlong
  • Database migrationmulti-million row
  • Cron & queued jobs
  • Regular expressions
  • PHPUnit

FRONTEND

Browser side

  • JavaScript (ES6+)16 yrs
  • HTML5 & CSS316 yrs
  • React
  • Vue
  • jQuery16 yrs
  • SASS / SCSS
  • Three.js / WebGLconfigurators
  • Bootstrap
  • Responsive layout16 yrs
  • Accessibility (WCAG)
  • Webpack / Vite
  • Canvas & SVG

INTEGRATION

Talking to other systems

  • NetSuite9 yrs, one client
  • Macolla ERP9 yrs, one client
  • Salesforcelead & contact sync
  • HubSpotforms, lists, CMS
  • Microsoft DynamicsCRM & ERP
  • Stripelong
  • PayPal APIlong
  • REST & JSON APIs16 yrs
  • Webhooks
  • OAuth
  • SOAP / XML
  • CSV & feed imports
  • Two-way data sync
  • Idempotency & reconciliation
  • Braintree

INFRASTRUCTURE

Where it runs

  • Linux16 yrs
  • NGINXlong
  • Apache16 yrs
  • WP Engine
  • cPanel / WHM
  • Git, GitHub, Bitbucketdaily
  • Deployment pipelines
  • Caching & CDN
  • SSL & DNS
  • Backups & rollback
  • Staging environments
  • Server migration

MEASUREMENT

Performance & search

  • Core Web Vitals
  • Technical SEOlong
  • High-traffic tuningmillions of visits
  • Schema.org / JSON-LD
  • Google Analytics
  • Google Search Console
  • Lighthouse auditing
  • Redirect strategy
  • Local SEO
  • Query profiling

WORKING

Process & people

  • Team leadershipup to 5 devs
  • Fractional CTO6 yrs
  • Estimating & proposals
  • Client communicationdirect, no PM
  • Agency white-labelhalf my decade
  • Code review
  • Technical documentation
  • ClickUp, Jira, Slack
  • Recruitment & onboarding
  • Vendor management
  • HIPAA-constrained work
  • English & Serbianfluent

Years are counted from first paid production use, not from first exposure.
Where a skill shows a project count instead of years, that is because the count is the more honest measure.
Anything I would not defend on a call is not on this page.

Looking for something not listed?

Ask. If I have not done it I will say so, and usually I know somebody who has.

Book a consultation