explaingit

cosmicpython/book

3,783PythonAudience · developerComplexity · 1/5LicenseSetup · easy

TLDR

Source for the free O'Reilly book 'Architecture Patterns with Python', teaches developers how to structure Python apps so they stay easy to change as they grow, covering patterns like Repository, Service Layer, and CQRS.

Mindmap

mindmap
  root((Architecture Patterns))
    Part 1 Foundations
      Domain Model
      Repository pattern
      Service Layer
      Unit of Work
    Part 2 Advanced
      Message bus
      Event-driven design
      CQRS
      Dependency Injection
    Audience
      Python developers
      Growing codebases
    Appendices
      Django integration
      Project structure
      Input validation
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Learn how to separate business logic from database code in a Python app using the Repository and Service Layer patterns.

USE CASE 2

Refactor a Python codebase that has become hard to change by applying Domain Model, Aggregates, and Unit of Work concepts.

USE CASE 3

Build an event-driven Python system where parts of your app communicate through a message bus instead of direct calls.

USE CASE 4

Read the full O'Reilly book for free online and follow along with runnable chapter examples in the companion code repo.

Tech stack

Python

Getting it running

Difficulty · easy Time to first run · 5min

This repo is the book text, read it online for free, runnable code examples live in the companion cosmicpython/code repo.

Free to read online for any purpose under a Creative Commons license, the book text is openly available.

In plain English

This repository holds the source files for a published book called "Architecture Patterns with Python," written for developers who want to build Python applications that stay manageable as they grow. The book was published by O'Reilly and is available to read online for free under a Creative Commons license. The repo contains the full text of each chapter as well as the scripts and tooling needed to build the book into readable HTML. The book is structured in two parts. The first part introduces foundational ideas: how to model the core logic of your application in plain Python classes (the Domain Model), how to separate data storage from business logic (the Repository pattern), how to organize your app's operations through a Service Layer, and how to handle related changes together safely (the Unit of Work and Aggregates concepts). Each chapter links to a companion code branch in a separate repository where you can see working Python examples. The second part moves into more advanced coordination patterns: how to let different parts of your system talk to each other through events and a message bus, how to separate read operations from write operations (CQRS), and how to wire dependencies together cleanly (Dependency Injection). There are also appendices covering practical topics like project structure, switching between storage backends, using the Django web framework, and input validation. The book's audience is Python programmers who have built something that works but find it getting harder to change without breaking things. The patterns it teaches come from a tradition sometimes called Domain-Driven Design, applied in a way that fits Python idioms rather than borrowing wholesale from Java or C# conventions where they originated. This repo is mainly the book text itself. The runnable code lives in a companion repo called cosmicpython/code, organized into branches that match each chapter. If you want to follow along with working examples, you would clone that companion repo and check out the branch for the chapter you are reading.

Copy-paste prompts

Prompt 1
Show me how to implement the Repository pattern in Python to separate my SQLAlchemy database queries from my business logic, following the cosmicpython book approach.
Prompt 2
Implement a Service Layer for my Python app that sits between my API and my domain model, using the pattern from Architecture Patterns with Python.
Prompt 3
Set up a simple message bus in Python so different parts of my app can communicate through events instead of calling each other directly.
Prompt 4
Explain CQRS and show me how to split read and write operations in a Python FastAPI app following the cosmicpython book examples.
Prompt 5
Refactor my Django app to use the Repository pattern from Architecture Patterns with Python so my views don't talk to the ORM directly.
Open on GitHub → Explain another repo

← cosmicpython on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.