HTML5: I prioritize semantic markup and accessibility, using modern HTML5 elements to ensure a well-structured document. My HTML is clean, well-organized, and follows best practices for SEO and screen reader compatibility.
CSS3: I implement responsive, cross-browser, and scalable designs.
SCSS: I often use SCSS as my CSS preprocessor, allowing me to utilize variables, mixins, and nesting to create more organized and DRY (Don't Repeat Yourself) code.
React is my preferred solution for building user interfaces and managing the DOM. I write functional components, create and use hooks, and prioritize component reusability with a clear separation of concerns. I'm also familiar with Preact, which I use when size is critical. I used React to build this site.
Next.js enhances React with server-side rendering capabilities. It also allows for excellent optimization using static site generation or incremental static generation when possible. With Next.js, I can achieve good SEO in React-based projects through image optimization and advanced rendering techniques like partial prerendering. This technology is one of my favorites, alongside Astro.
Javascript: You literally can't create a modern site without JS. It makes HTML pages dynamic. I write clean, maintainable code that adheres to DRY and SRP (Single Responsibility Principle).
TypeScript: I use TypeScript to add static typing to JavaScript in every project. This helps catch errors early and improves code maintainability. It also simplifies API interactions. I used TypeScript on this site.
Vue: While I have less experience with Vue compared to React, I’m familiar with its core concepts, including template syntax, component structure, and reactivity system. I’ve worked with Vue's Composition API in recent projects and appreciate its simplicity, especially for small to medium-sized projects. However, I typically choose React when possible (in other words when I can choose).
Liquid: I have experience using Liquid, particularly for Shopify theme development. I’m comfortable with its syntax for creating dynamic content, implementing control flow, and accessing object properties. I've used Liquid to create custom sections and snippets in Shopify themes, balancing customization and performance.
Tailwind: I'm proficient in using Tailwind's utility-first approach, which speeds up development and ensures consistency. I customize Tailwind configurations to match project needs and extend it when necessary. I prefer Tailwind over SCSS. I used Tailwind CSS on this site.
Payload CMS is my favorite headless CMS due to its high degree of customization. It allows for defining content types, fields, and relationships using a flexible schema, and it enables content retrieval via GraphQL or REST API. Payload CMS also comes with a customizable admin panel, which can be tailored to specific needs. I love its Lexical editor for rich text fields, introduced in Payload 2.0, with even more features in Payload 3.0. I used Payload CMS on this site.
Astro: Astro is a relatively new technology that I highly regard for creating fast, content-focused websites. Its Component Islands Architecture allows static content to be pre-rendered while interactive components (islands) are only hydrated on the client side as needed. Astro also supports excellent SEO practices. Being framework-agnostic, it offers great flexibility. I consider Astro the best solution for sites with infrequent content updates. However, for frequently updated sites, Next.js is preferable due to Incremental Static Regeneration. Astro is one of my favorite technologies, alongside Next.js. I used Astro to build this site.