Building Conduit
Building Conduit
Minimum price
Suggested price
Building Conduit

This book is 50% complete

Last updated on 2018-04-27

About the Book

Learn how to implement the CQRS/ES pattern to build an Elixir and Phoenix web application.

You will be shown how to build an exemplary blogging platform. You will build a functional, event sourced domain model along with a read model optimised for querying.

This book is for anyone who has an interest in CQRS/ES and Elixir.

About the Author

Ben Smith

Ben Smith is a full stack software engineer with a focus on the design, build, and deployment of intuitive and performant web applications.

Ben follows the domain-driven design approach to building software. He advocates using the Command Query Responsibility Segregation (CQRS) pattern to build the core business software. This approach allows a clean separation of the domain model for accepting command-based write operations, and a read-only query model. Both sides can be independently scaled: the development team and the physical deployment to the production environment.

Ben is enthusiastically using Elixir, Erlang/OTP, and Phoenix to build scalable web applications that respond in microseconds.

Discover more about Ben's work and his company Binary Consulting.

Table of Contents

  • Preface
  • Introduction
    • Who is Building Conduit for?
    • What does it cover?
    • What is CQRS?
      • Commands
      • Domain events
      • Queries
    • What is event sourcing?
    • What are the costs of using CQRS?
    • Recipe for building a CQRS/ES application in Elixir
    • An aggregate
      • An event sourced aggregate
      • Unit testing an aggregate
  • Conduit
    • General functionality
    • API specs
  • Contexts
    • Contexts in Phoenix
    • Contexts in Conduit
  • Getting started
    • Installing Phoenix
    • Generating a Phoenix project
    • Starting the Phoenix server
    • Commanded facilitates CQRS/ES in Elixir
    • Write and read model stores
      • Installing and configuring Commanded
      • Configuring the read model store
  • Accounts
    • Register a user
      • Building our first context
      • Writing our first integration test
      • Application structure
      • Alternate structure
      • Building our first aggregate
      • Building our first command
      • Building our first domain event
      • Writing our first unit test
      • Command dispatch and routing
      • Writing our first read model projection
      • Validating dispatched commands
      • Testing user registration validation
      • Enforce unique usernames
      • Additional username validation
      • Validating a user’s email address
      • Hashing the user’s password
      • Completing user registration
  • Authentication
    • Authenticate a user
      • Generating a JWT token
      • Getting the current user
  • Articles
    • Publishing an article
      • Authoring articles
      • Publish article integration test
      • Building the article controller
      • Defining the publish article command
      • Generating a unique URL slug
      • Building the article aggregate
      • Projecting the article read model
      • Publishing articles test
    • Listing articles
      • List articles controller test
      • Querying latest articles
      • Filter by author
      • Filter by tag
    • Get an article
    • Favorite articles
      • Favorite integration test
  • Frequently asked questions
    • How do I structure my CQRS/ES application?
    • How do I deal with eventually consistent read model projections?
  • Appendix I
    • Conduit API specs
      • Authentication header
    • JSON objects returned by API
      • User
      • Profile
      • Single article
      • Multiple articles
      • Single comment
      • Multiple comments
      • List of tags
      • Errors and status codes
    • Endpoints
      • Authentication
      • Registration
      • Get current user
      • Update user
      • Get profile
      • Follow user
      • Unfollow user
      • List articles
      • Feed articles
      • Get article
      • Create Article
      • Update Article
      • Delete article
      • Add comments to an article
      • Get comments from an article
      • Delete comment
      • Favourite article
      • Unfavourite article
      • Get tags
  • Notes

The Leanpub 45-day 100% Happiness Guarantee

Within 45 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.

See full terms...

Write and Publish on Leanpub

Authors, publishers and universities use Leanpub to publish amazing in-progress and completed books and courses, just like this one. You can use Leanpub to write, publish and sell your book or course as well! Leanpub is a powerful platform for serious authors, combining a simple, elegant writing and publishing workflow with a store focused on selling in-progress ebooks. Leanpub is a magical typewriter for authors: just write in plain text, and to publish your ebook, just click a button. It really is that easy.

Learn more about writing on Leanpub