Designing with Capabilities

Designing using capabilities and the principle of least authority

This page contains links to the slides and code from my talk “Designing with Capabilities”.

Here’s the blurb for the talk:

We all want to produce modular and robust code that is easy to test and refactor, and we have design principles such as SOLID that help us do that.

In this talk I’ll look at a very different approach to design using “capabilities” and the principle of least authority. I’ll show how using these design techniques throughout your core domain (and not just at your API boundary) also leads to well-designed and modular code.

I’ll demonstrate how to design and use a capability based approach, how capabilities can be quickly combined and restricted easily, and how capabilities are a natural fit with a REST API that uses HATEAOS.

This talk is based on my blog posts on this topic:

Also related are the talk and posts on designing Enterprise Tic-Tac-Toe:


Video from NDC London, Jan 15, 2016 (Click image to view video)

Video from NDC London, Jan 15, 2016


The code used in the demos is available on github.

F#-focused Slides

Slides from NDC London, Jan 15, 2016

DDD-focused Slides

These slides from DDD Europe, Feb 3, 2017 are more DDD focused


blog comments powered by Disqus