
Building Multi‑Tenant Applications with Next.js
Multi‑tenant applications serve multiple customers from a single codebase. Here, I walk through building a scalable multi‑tenant web application using Next.js.
Articles
Front‑end development is where product intent becomes the interface people actually use. My writing approaches it as engineering rather than surface decoration, with attention to browser behaviour and code that remains accessible, fast, and safe for a team to change.

Multi‑tenant applications serve multiple customers from a single codebase. Here, I walk through building a scalable multi‑tenant web application using Next.js.

How deployment expectations moved from simple Netlify static deploys towards Vercel pipelines, previews, framework builds, observability, and rollback.

Build a reusable Vue 3 composable with the Composition API, covering side effects, useOutsideClick, browser boundaries, typing, lifecycle handling, and testing.

provide/inject API: When and How to Use ItWhen Vue provide/inject is the right tool, how to keep it reactive, and where it fits better than props or a full store in larger component trees.

Vue 3 replaces Vue 2's getters and setters with JavaScript proxies. This article explains how they differ and why proxies improve Vue's reactivity system.

<b> and <strong>The <b> and <strong> tags both make text bold, but they serve very different purposes and convey different meaning. Here, I explain these differences.

Optimise Vue.js performance with lazy loading and code splitting, covering route‑level chunks, async components, bundle strategy, measurement, and UX.

Protect Next.js routes with Proxy, formerly Middleware, using authentication, authorisation, matchers, API request checks and current terminology.

place‑contentUse CSS place‑content to align grid and flex content, comparing align‑content, justify‑content, place‑items, syntax, examples, and layout limits.

Fixed quote, day rate, and retainer pricing for senior web development, explained through scope, risk, delivery, ownership, and platform quality.

Why static generation became more complex as CMS previews, ISR, cache invalidation, build queues, e‑commerce data, and platform expectations grew.

place‑itemsCSS place‑items is a shorthand property that aligns items inside grid and flex containers. Here, we discuss its syntax, use cases, and practical examples.

Template‑driven vs. reactive Angular forms, and how to choose the right model for validation, scale, testing, and maintainable form logic in real apps.

How e‑commerce front‑end work moved from Liquid templates to headless storefronts, and what teams risk when they underestimate data, checkout, and operations.

Converting between camel case, snake case, kebab case is a common task in JavaScript. Here, I explore methods using regular expressions and string manipulation.

How lazy loading in Angular improves performance, where route‑level splitting helps most, and how to avoid messy boundaries and loading states in larger apps.

Next.js vs. Remix compared properly, across routing, data loading, mutations, caching, and the architectural trade‑offs teams actually feel in production.

Angular signals explained properly, from computed values and effects to where they simplify state, templates, and change detection without replacing RxJS.