Custom Payroll Management App
A Vue SPA + WordPress Payroll System for a Behavioral Health Clinic
Skills applied to this project
Designed and built a custom payroll management application for a behavioral health clinic — a Vue.js single-page app embedded in WordPress that manages patients, workers, and role-based rates, and generates detailed PDF pay stubs and payroll reports.
What was the problem?
A clinic serving children with autism pays technicians (RBTs), intermediates (BCaBAs), and analysts (BCBAs) based on hours worked with each patient — at rates that vary by role, by patient, and by activity (assessments, supervision), plus one-off bonuses and deductions. Payroll was a slow, error-prone spreadsheet process, and every mistake directly affected staff pay.
How I solved it
I built a custom WordPress plugin with a Vue.js single-page-app frontend and an object-oriented PHP backend (PSR-4, MVC controllers and models, a custom database schema with versioned upgrades). Administrators manage patients, workers, roles, and general / per-patient / special rates, enter hours, and apply extra payments or deductions. The app calculates each worker's pay by category across a payroll cycle — handling edge cases like fixed-rate activities and workers who skip a cycle — then generates individual PDF pay stubs via mPDF plus a global payroll report for reconciliation with accounting. Every action runs through an AJAX API gated by nonces and capabilities, behind a custom role-based login so staff can use it securely from anywhere.
Measurable results
A manual, error-prone spreadsheet process became a few-clicks workflow. Pay calculations are consistent and auditable, PDF pay stubs are produced automatically with per-category breakdowns, and the global report lets the clinic reconcile payroll against accounting quickly — cutting manual work and the payroll mistakes that hit staff pay directly.
- Manual spreadsheet payroll replaced with a few-clicks web app
- Per-worker pay calculated automatically across roles, patients, and activity rates
- Individual PDF pay stubs generated with detailed per-category breakdowns
- Global payroll report for fast reconciliation with accounting
- Handles edge cases: fixed-rate activities, per-patient rates, skipped cycles, bonuses and deductions
- Role-based access with a custom login for secure remote use
Technical highlights
- Vue.js single-page app embedded in WordPress via shortcodes (Vite build)
- Object-oriented PHP backend — PSR-4 autoloading, MVC controllers/models, custom DB schema with versioned upgrades
- AJAX API with nonce and capability checks on every action
- Payroll engine: role / patient / special rates, extra payments, deductions, and payroll segments
- PDF pay-stub and report generation with mPDF (UTF-8, logos, signatures)
- Role-based access control and a custom WordPress login flow
My process applied to this project
-
Diagnose
Understand the real business problem, user flow, and technical constraints before touching code.
-
Plan
Choose the cleanest technical approach, identify dependencies, and define what success looks like.
-
Build
Create custom WordPress/PHP solutions, plugins, integrations, or automations using best practices.
-
Test
Validate edge cases, staging behavior, logs, checkout flows, order statuses, and user roles.
-
Deploy
Release carefully with rollback awareness, staging verification, and clear documentation.
-
Improve
Monitor, optimize, and refine based on real usage, client feedback, and production behavior.
Tech used in this project
How AI accelerated this work
AI tools helped me review error logs, trace query patterns, and generate diagnostic hypotheses in minutes rather than hours — so I could focus on fixing, not searching.
I used AI to audit integration logic, catch silent failure paths, and validate that custom hooks would hold up under different WooCommerce states before going live.
AI-assisted documentation made the final plugin handoff clear and actionable for the client's internal team — reducing support questions after delivery.
Have a similar challenge?
I help e-commerce teams solve the technical problems that cost them time and revenue. Let's talk about yours.