Skills & Technical Stack
Grouped by where they sit in the stack. Testing tools get their own row on purpose — they're not an afterthought in how I work.
Backend
Where most of my work lives. Laravel for CRM, telemedicine, and scraping platforms; NestJS with Drizzle and PostgreSQL for a marketplace API with CQRS and OAuth. MySQL schemas tuned on production datasets rather than in a seed file.
- LaravelPHP framework for web artisans
- NestJSProgressive Node.js framework for scalable server-side apps
- Node.jsJavaScript runtime for building backend services
- MySQLRelational database management system
Frontend
Next.js and Nuxt for product surfaces, Vue and React where a team already had one. Inertia when a project wanted SPA feel without standing up a separate API. TypeScript throughout — the type errors are cheaper than the bug reports.
- Next.jsReact framework for production
- Nuxt.jsVue.js framework for production
- Vue.jsProgressive JavaScript framework for UIs
- TypeScriptTyped superset of JavaScript
- Inertia.jsBuild SPAs without an API using server-side routing
- ReduxPredictable state container with RTK Query
- Tailwind CSSUtility-first CSS framework
- VuetifyMaterial Design component framework for Vue
- QuasarVue.js based framework for cross-platform apps
Testing
Not a separate phase. Pest and PHPUnit cover API behaviour, Playwright and Cypress cover the flows a user would actually break, and Jest handles the JavaScript packages I publish. Test suites are the reason I can refactor a scraper without holding my breath.
- PestPHP testing framework with an expressive API
- PHPUnitThe PHP unit testing standard
- PlaywrightCross-browser end-to-end automation
- CypressBrowser automation for end-to-end tests
- JestJavaScript testing framework
Platform
Linux servers, queue workers, and the deploy pipelines around them — the part that decides whether the code above ever runs reliably.
- LinuxOpen-source operating system



