Skills

Technologies and tools I use regularly when building products.


Docker

Package applications into containers so development and deployment stay aligned.

AI tooling

Use AI to speed up research, debugging, and repetitive implementation work.

GitLab CI

Automate build, test, and deploy steps with GitLab CI pipelines.

Linux

Daily-drive Ubuntu and Arch; hands-on experience with NixOS, Debian, and CentOS.

AWS

Use EC2, S3, and CloudFront to run apps reliably and serve assets faster.

Neovim

Edit and navigate code efficiently with a custom Neovim setup.

Git

Manage changes and collaboration with branch-based Git workflows.

Nest.js

Build Node.js backends with clear modules, services, and boundaries.

Express.js

Build APIs quickly with a small, flexible Node.js stack.

Node.js

Build backend services, APIs, and realtime systems with JavaScript on the server.

Redis

Use Redis for caching, queues, and short-lived application state.

PostgreSQL

Model relational data and transactional workflows with PostgreSQL.

Socket.io

Handle two-way realtime communication between client and server.

MySQL

Build transactional web applications on top of MySQL.

TypeScript

Use static types to keep larger JavaScript codebases safer to change.

JavaScript

Write interactive frontend behavior and shared web application logic.

Next.js

Build React apps with routing, SSR/SSG, layouts, and API endpoints.

React

Build UI from reusable components and explicit state updates.

HTML 5

Structure pages with semantic, accessible markup.

CSS 3

Handle layout, spacing, and presentation with modern CSS.

Tailwind CSS

Build UI quickly with utility classes and predictable styling.

React Query

Fetch and cache server data without hand-rolling request state.

Redux

Keep complex client state explicit when data flows get harder to track.

Bootstrap

Ship responsive UI quickly with a mature component system.