Awesome Design Patterns: a software design patterns guide
Awesome Design Patterns is a link index, not a tutorial: it points you at other people's pattern catalogs instead of explaining any pattern itself. That works well once you already know roughly what you're looking for — a Go concurrency pattern, a multi-tenant SaaS layout, a serverless retry pattern — and just need the canonical source fast. It's a poor first stop if you've never read a pattern book and want the "why" explained in one place.
What the collection covers
Awesome Design Patterns is a GitHub-hosted awesome-list of design patterns reference links, maintained by Dov Amir. It splits into a Programming Language Design Patterns section — per-language repos on OOP design patterns for Java, Python, Go, and others — plus domain sections on software architecture patterns for cloud, serverless, microservices, and databases. Every entry links out to someone else's catalog of reusable solutions.
What's inside: language patterns, architecture, and beyond
- ✓Programming Language Design Patterns section spanning many languages — AngularJS, C#, C++, Go, Java, JavaScript, Kotlin, Node, PHP, Python, React, Ruby, Rust, Scala, Swift, TypeScript, Vue.js, and Elixir all get their own subsection.
- ✓General Architecture section works as an architecture patterns list, anchored by Martin Fowler's Patterns of Enterprise Application Architecture catalog and the system-design-primer repo for large-scale system design.
- ✓Cloud Architecture and Serverless Architecture sections with AWS, Azure, and GCP pattern docs plus serverless-specific write-ups on retry and event patterns.
- ✓Micro services & Distributed Systems section covers microservices patterns through microservices.io's pattern language and the Twelve-Factor App methodology.
- ✓Domain-specific sections for Internet of Things, Big Data, Machine Learning, and Databases and Storage — the last one split into SQL, NOSQL, and Storage subsections.
- ✓DevOps & containers, Mobile (iOS and Android), Front-End Development, and Security sections round out the non-language coverage.
- ✓A Books section pointing to paid titles — Head First Design Patterns, Effective Java, Designing Microservices, and others — for readers who want prose explanations instead of link lists.
When to use this as a reference
- •Starting a project in an unfamiliar language and wanting a jump-off point to that language's idiomatic pattern repo instead of writing patterns from scratch.
- •Scoping a system design before committing to an approach — the General Architecture and Micro services & Distributed Systems sections put competing pattern styles next to each other.
- •Working through a specific architecture problem (multi-tenant SaaS, serverless retries, cloud cost control) and wanting the original source instead of a paraphrase.
- •Building a personal reading list: bookmark the Books section and work through Head First Design Patterns or Effective Java over time.
Strengths
- ✓Covers both ends of the pattern spectrum in one file — per-language OOP patterns and system-scale architecture patterns — instead of picking one.
- ✓Routes to purpose-built repos like java-design-patterns and system-design-primer rather than re-explaining patterns worse than the originals.
- ✓Domain sections (serverless, IoT, big data, ML, databases, DevOps, security) go well beyond the usual GoF-pattern scope most pattern lists stick to.
- ✓Flat markdown structure with no build step or search UI to load — Ctrl-F on the README does the job.
Limitations of a curated link list
- △Most entries are bare links with no annotation, so you often can't tell what's behind a link — a working example, a paywalled book, a five-year-old blog post — until you click it.
- △No GoF-style tagging (creational, structural, behavioral) at the top level; patterns are grouped by language or domain instead, so hunting for one specific pattern by name means scanning nested lists.
- △Nothing in the list carries a date, so there's no way to judge how current any given link is without opening it.
- △A chunk of the Books section links to paid titles on Amazon, Manning, and Packt, so parts of the reference aren't free.
Other design pattern resources
Frequently asked questions
Awesome Design Patterns is free to browse on GitHub, and its own content is released under a public-domain-style waiver by maintainer Dov Amir. Several of the books it links to in the Books section, though, are paid titles sold on Amazon, Manning, or Packt.
The Programming Language Design Patterns section of Awesome Design Patterns covers languages including AngularJS, C#, C++, Go, Java, JavaScript, Kotlin, Node, PHP, Python, React, Ruby, Rust, Scala, Swift, TypeScript, Vue.js, and Elixir, each with its own linked repos or articles.
Awesome Design Patterns is organized into a Programming Language Design Patterns section first, followed by domain sections — General Architecture, Cloud Architecture, Serverless Architecture, Micro services & Distributed Systems, IoT, Big Data, Machine Learning, Databases and Storage, DevOps & containers, Mobile, Front-End Development, Security, and Books.
Awesome Design Patterns is maintained by Dov Amir, who published the license note waiving copyright to the extent possible under law, and the repo takes community contributions through a contributing guidelines file linked in the README.
Awesome Design Patterns includes a dedicated Books section linking to paid titles such as Head First Design Patterns, Effective Java, and Designing Microservices, alongside the mostly free articles and repos in the rest of the list.
The README for Awesome Design Patterns doesn't state an update schedule, and update frequency isn't clearly documented — the repo takes contributions via its contributing guidelines, so its content grows as people submit links.
Who should try it — and who should skip
Awesome Design Patterns suits developers and architects who already have a specific pattern or domain in mind — a Kotlin state pattern, a multi-tenant database layout, a serverless retry strategy — and want the canonical write-up fast instead of searching from scratch. It also works as a slow-burn reading list: bookmark the Books section and work through it over months. Skip it if you've never read a pattern book before and want one source that explains why the Singleton pattern exists. It only points elsewhere. Pick up Head First Design Patterns or a site like Refactoring.guru first.
Related repositories
Want a second opinion on awesome-design-patterns?
Ask an AI that can read this page — one click and you get its take on awesome-design-patterns.
