My book on Node.js / TypeScript software design and architecture just pre-launched 📕 (%33 off)!

SOLID: The Software Design & Architecture Handbook

Presale $29.99

I'm Khalil. I teach advanced TypeScript & Node.js best practices for large-scale applications. Learn to write testable, flexible, and maintainable software.


I create courses, books, and articles for aspiring developers on Enterprise Node.js, Domain-Driven Design, GraphQL, and writing testable, flexible JavaScript.


Recent Articles

view all

Introduction to Test-Driven Development (TDD) with Classic TDD Example
The best thing tests give us is "feedback". Feedback as to if our designs are good, if there are bugs, and if we're making progres...
GraphQL Schemas vs. RESTful DTOs
GraphQL schemas serve a similar purpose to RESTful DTOs. One of the main differences is tooling. In this post, I aim to strengthen...
Use DTOs to Enforce a Layer of Indirection | Node.js w/ TypeScript
DTOs help you create a more stable RESTful API; they protect your API clients from changes made on the server.
Maintain a Single Layer of Abstraction at a Time | Object-Oriented Design Principles w/ TypeScript
The more complex your system gets, the more we need to lean on the correct abstractions to keep things maintainable. This principl...
Client-Side Architecture Basics [Guide]
Though the tools we use to build client-side web apps have changed substantially over the years, the fundamental principles behind...
Absolute and Relative Complexity
Determining if the complexity of a problem is related to the nature of the problem or related to the way that we approach solving ...
Enforcing Coding Conventions with Husky Pre-commit Hooks
In this guide, we'll learn how to setup Husky to prevent bad git commits and enforce code standards in your project.
Domain-Driven GraphQL Schema Design | Enterprise GraphQL
A GraphQL schema is a declarative, self-documenting, organization-wide API. It's pretty important to spend a little bit of time on...
How Apollo REST Data Source Deduplicates and Caches API calls [Deep Dive]
Apollo's REST Data Source does a lot more than you'd think behind the scenes, and that's why it's recommended instead of using a w...
How to Setup a TypeScript + Node.js Project
In this guide, we walk through the process of creating a TypeScript project from scratch with cold-reloading, and scripts for buil...
Where Do Domain Events Get Created? | Domain Driven Design w/ TypeScript
In this post, I explain how good ol' fashioned encapsulation + TypeScript getters and setters enable us to effectively create Doma...

My book on Node.js / TypeScript software design and architecture just pre-launched 📕 (%33 off)!

SOLID: The Software Design & Architecture Handbook

Presale $29.99



Recent Blogs

view all
Transcribing Video With DDD Discussion | Domain Driven Design w/ TypeScript
Feb 22nd, 2021

I'm always interested in what blog readers are building using Domain-Driven Design and Clean Architecture practices. In this post, I'd like…

5 Ways to Manage Lambda Cold Starts
Jun 27th, 2020

In this article, you will learn how cold start issues occur, what factors contribute to cold starts, and how to manage Lambda cold starts…

The Three Responsibilities of a Client-Side State Management Solution
May 14th, 2020

Historically, when starting on a new React project, we’ve had to design and implement the state management infrastructure from scratch in a…

Enforcing Coding Conventions with Husky Pre-commit Hooks
Mar 10th, 2020

Intro On most projects I've ever worked collaboratively on, someone takes the role of the code cleanliness champion. It's usually the team…



Recently Edited Wikis

view all

Coupling, Cohesion & Connascence
Last updated Feb 9th, 2021
The foundational measurements of structural software quality
Leaky Abstraction
Last updated Feb 9th, 2021
An abstraction that leaks details that it is supposed to abstract away