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.