├── README.md ├── _config.yml └── contributing.md /README.md: -------------------------------------------------------------------------------- 1 | # Awesome Software and Architectural Design Patterns 2 |
3 | 4 | PRs Welcome awesome awesome 5 | 6 |
7 | 8 | > A curated list of software and architecture related design patterns. 9 | 10 | [Software design pattern](https://en.wikipedia.org/wiki/Software_design_pattern) - A general, reusable solution to a commonly occurring problem within a given context in software design. It is a description or template for how to solve a problem that can be used in many different situations. 11 | 12 | 13 | 14 |
15 | 16 | ## Contents 17 | - [Programming language design patterns](#programming-language-design-patterns) 18 | - [General Architecture](#general-architecture) 19 | - [Cloud Architecture](#cloud-architecture) 20 | - [Serverless Architecture](#serverless-architecture) 21 | - [Micro services & Distributed Systems](#micro-services--distributed-systems) 22 | - [Internet of things](#internet-of-things) 23 | - [Big Data](#big-data) 24 | - [Machine Learning](#machine-learning) 25 | - [Databases and storage](#databases) 26 | - [DevOps & containers](#devops--containers) 27 | - [Mobile](#mobile) 28 | - [Front End Development](#front-end-development) 29 | - [Security](#security) 30 | 31 |
32 | 33 | ## Programming Language Design Patterns 34 | 35 | - AngularJS 36 | - [design patterns](https://github.com/mgechev/angularjs-in-patterns) 37 | - C# 38 | - [design-patterns](https://github.com/abishekaditya/DesignPatterns) 39 | - [design-patterns-for-human](https://github.com/anupavanm/csharp-design-patterns-for-humans) - ultra simplified explanation to design patterns. 40 | - [Design Patterns Library](https://github.com/nemanjarogic/DesignPatternsLibrary) 41 | - C++ 42 | - [design-patterns](http://www.vincehuston.org/dp/) 43 | - Closure 44 | - [design-patterns](https://arturoherrero.com/closure-design-patterns/) 45 | - Go 46 | - [design-patterns](https://github.com/tmrts/go-patterns) 47 | - Java 48 | - [sourcemaking](https://sourcemaking.com/design_patterns) - patterns and anti patterns. 49 | - [oodesign](https://www.oodesign.com/) - patterns catalog with UML diagrams. 50 | - [design-patterns](https://github.com/iluwatar/java-design-patterns) 51 | - [effective-java patterns](https://github.com/HugoMatilla/Effective-JAVA-Summary) - patterns from the Effective Java book. 52 | - [Design patterns implemented in Java](https://java-design-patterns.com/patterns/) 53 | - [Effective-Java-3rd-Joshua-Bloch](https://www.amazon.com/Effective-Java-3rd-Joshua-Bloch/dp/0134685997/ref=pd_sim_14_7) 54 | - JavaScript 55 | - [es6 design patterns](https://github.com/ziyasal/design-patterns-and-idioms-in-es6) 56 | - [humans](https://github.com/sohamkamani/javascript-design-patterns-for-humans) - ultra simplified explanation to design patterns. 57 | - [design-patterns](https://github.com/nnupoor/js_designpatterns) 58 | - [design patterns by addy osmani](https://addyosmani.com/resources/essentialjsdesignpatterns/book) 59 | - Kotlin 60 | - [design-patterns](https://github.com/dbacinski/Design-Patterns-In-Kotlin) 61 | - Node 62 | - [Real world design patterns with Node.js](https://github.com/nimit95/Real-world-Design-Patterns-Node-JS) 63 | - [Node.js Design Patterns](https://www.packtpub.com/web-development/nodejs-design-patterns-second-edition) 64 | - Object Oriented 65 | - [Design-Patterns-Elements-Reusable-Object-Oriented](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612/ref=sr_1_4?s=books&ie=UTF8&qid=1528136036&sr=1-4&keywords=design+patterns) 66 | - [Head-First-Design-Patterns-Brain-Friendly](https://www.amazon.com/Head-First-Design-Patterns-Brain-Friendly/dp/0596007124/ref=pd_sim_14_4) 67 | - [Object Design Style Guide](https://www.manning.com/books/object-design-style-guide) 68 | - PHP 69 | - [humans](https://github.com/kamranahmedse/design-patterns-for-humans) - ultra simplified explanation to design patterns. 70 | - [design-patterns](https://github.com/domnikl/DesignPatternsPHP) 71 | - Python 72 | - [design-patterns](https://github.com/faif/python-patterns) 73 | - [PyPattyrn](https://github.com/tylerlaberge/PyPattyrn) - A simple library for implementing common design patterns. 74 | - [Python Design Patterns](https://python-patterns.guide/) 75 | - [Design Patterns in Python](https://refactoring.guru/design-patterns/python) 76 | - [Django Design Patterns and Best Practices](https://arunrocks.com/static/book/django-design-patterns-best-practices-2-ed) 77 | - React 78 | - [design-patterns](http://krasimirtsonev.com/blog/article/react-js-in-design-patterns) 79 | - [react-bits](https://github.com/vasanthk/react-bits) 80 | - [reactpatterns.com](https://reactpatterns.com) 81 | - Ruby 82 | - [design-patterns](https://github.com/davidgf/design-patterns-in-ruby) 83 | - Rust 84 | - [design-patterns](https://rust-unofficial.github.io/patterns/) 85 | 86 | - Scala 87 | - [design-patterns](https://github.com/josephguan/scala-design-patterns) 88 | - Swift 89 | - [design-patterns](https://github.com/ochococo/Design-Patterns-In-Swift) 90 | - TypeScript 91 | - [design-patterns](https://github.com/torokmark/design_patterns_in_typescript) 92 | - UML 93 | - [design-patterns quick reference](http://www.mcdonaldland.info/2007/11/28/40) 94 | - [design-patterns cheat-sheet](https://www.slideshare.net/hustwj/design-patterns-cheat-sheet) 95 | - Vue.js 96 | - [Vue Patterns](https://learn-vuejs.github.io/vue-patterns/) - Useful Vue patterns, techniques, tips and tricks and curated helpful links. 97 | - Elixir 98 | - [design-patterns](https://github.com/joshnuss/design-patterns-in-elixir) 99 | - [the-pipeline](https://mattpruitt.com/articles/the-pipeline) - The Pipeline is defined by a collection of functions that take a data structure as an argument and return the same type of data structure 100 | 101 | 102 | ## General Architecture 103 | - [10 common architectural patterns](https://towardsdatascience.com/10-common-software-architectural-patterns-in-a-nutshell-a0b47a1e9013) - 10 Common software architectural patterns in a nutshell. 104 | - [reactive design patterns](https://www.reactivedesignpatterns.com/categories.html) - This website accompanies the book Reactive Design Patterns by Roland Kuhn. 105 | - [scalable System Design Patterns](https://dzone.com/articles/scalable-system-design) - Scalable system design techniques. 106 | - [martin fowler](https://martinfowler.com/eaaCatalog) - Catalog of Patterns of Enterprise Application Architecture. 107 | - [system-design-primer](https://github.com/donnemartin/system-design-primer) - Design large-scale systems. 108 | - [architecting-for-reliability](https://medium.com/becloudy/architecting-for-reliability-part-1-concepts-17028343089) - Architecting for Reliability Part 1/3. 109 | - [InnerSource Patterns](https://patterns.innersourcecommons.org/) - Patterns for implementing InnerSource, the use of open source principles and practices for software development within the confines of an organization. 110 | 111 | 112 | ## Cloud Architecture 113 | - [Cloud cost hacking](https://hackernoon.com/cloud-cost-hacking-fc35fd19985d) - Patterns for reducing cloud costs. 114 | - [AWS cloud design patterns](http://en.clouddesignpattern.org/index.php/Main_Page) - The AWS Cloud Design Patterns (CDP). 115 | - [Azure cloud design patterns](https://docs.microsoft.com/en-us/azure/architecture/patterns) - Building reliable, scalable, secure applications in the cloud. 116 | - [cloud computing patterns](http://www.cloudcomputingpatterns.org) - Cloud Computing Patterns. 117 | - [Google Cloud Solutions](https://gcp.solutions) - Real business cases solutions with diagrams on GCP. 118 | - [saas tenant isolation strategies](https://d1.awsstatic.com/whitepapers/saas-tenant-isolation-strategies.pdf) - Isolating Resources in a Multi-Tenant Environment 119 | - [design patterns for multi-tenancy](https://www.nagarro.com/en/blog/architectural-design-patterns-aws-multi-tenancy) - Architectural design patterns for multi-tenancy on AWS 120 | 121 | 122 | ## Serverless Architecture 123 | - [serverless architecture](https://thenewstack.io/serverless-architecture-five-design-patterns) - Serverless Architecture: Five Design Patterns. 124 | - [solving problems in serverless](https://freecontent.manning.com/patterns-for-solving-problems-in-serverless-architectures) - Patterns for Solving Problems in Serverless Architectures. 125 | - [serverless patterns](https://www.jeremydaly.com/serverless-microservice-patterns-for-aws/) - serverless microservice patterns for aws. 126 | - [serverless-reference-architectures](https://www.jeremydaly.com/serverless-reference-architectures//) - serverless microservice patterns with deployment scripts. 127 | - [serverless-patterns-collection](https://serverlessland.com/patterns) - Serverless Patterns Collection. 128 | - [serverless-design-patterns-and-best-practices](https://www.packtpub.com/free-ebook/serverless-design-patterns-and-best-practices/9781788620642) 129 | 130 | 131 | ## Micro services & Distributed Systems 132 | - [microservices](http://microservices.io/patterns) - A pattern language for microservices. 133 | - [microservices-anti patterns](https://www.oreilly.com/ideas/microservices-antipatterns-and-pitfalls) - Microservices antipatterns and pitfalls. 134 | - [12factor](https://12factor.net) - The twelve-factor methodology. 135 | - [microservices-sync-vs-async](https://dzone.com/articles/patterns-for-microservices-sync-vs-async) - Microservices patterns, synchronous and asynchronous. 136 | - [message-queues](http://tech.forter.com/comparing-message-queue-architectures-on-aws) - Comparing-message-queue-architectures. 137 | - [enterprise Integration Patterns](http://www.enterpriseintegrationpatterns.com/patterns/messaging/toc.html) - Patterns and Best Practices for Enterprise Integration. 138 | - [martinfowler](https://martinfowler.com/articles/patterns-of-distributed-systems/) - Patterns of Distributed Systems. 139 | 140 | ## Internet of things 141 | - [iot-communication-patterns](https://dzone.com/articles/strengths-and-weaknesses-of-iot-communication-patterns) - Strengths and Weaknesses of IoT Communication Patterns. 142 | - [design-patterns-for-iot](https://community.arm.com/iot/b/blog/posts/design-patterns-for-an-internet-of-things) - A Design Pattern Framework for IoT Architecture. 143 | 144 | ## Big Data 145 | - [mapreduce-patterns](https://highlyscalable.wordpress.com/2012/02/01/mapreduce-patterns) - Map-reduce patterns. 146 | - [streaming-realtime-analytics](https://iwringer.wordpress.com/2015/08/03/patterns-for-streaming-realtime-analytics) - 13 Stream Processing Patterns for building Streaming and Realtime Applications. 147 | 148 | ## Machine Learning 149 | - [distributed-ml-patterns](https://github.com/terrytangyuan/distributed-ml-patterns) - Distributed machine learning system patterns. 150 | 151 | ## Databases and Storage 152 | - SQL 153 | - [database tenancy patterns](https://docs.microsoft.com/en-us/azure/sql-database/saas-tenancy-app-design-patterns) - Multi-tenant SaaS database tenancy patterns 154 | - [databaseanswers](http://www.databaseanswers.org/data_models) - Industry-specific SQL Data Models in 50 categories. 155 | - [database-programmer](http://database-programmer.blogspot.com/2008/01/table-design-patterns.html) - Table-design-patterns. 156 | - [red-gate](https://www.red-gate.com/simple-talk/sql/database-administration/five-simple-database-design-errors-you-should-avoid) - five simple database design errors you should avoid. 157 | - [talend](https://www.talend.com/blog/2017/05/05/data-model-design-best-practices-part-1) - Data model design best practices. 158 | - [sqlcheck](https://github.com/jarulraj/sqlcheck) - Anti-patterns in SQL queries. 159 | - [Data warehouse patterns](https://aws.amazon.com/blogs/big-data/etl-and-elt-design-patterns-for-lake-house-architecture-using-amazon-redshift-part-1/) - ETL and ELT design patterns for lake house architecture using Amazon Redshift 160 | - NOSQL 161 | - [nosql resilience patterns](https://www.ebayinc.com/stories/blogs/tech/practical-nosql-resilience-design-pattern-for-the-enterprise) - Practical NoSQL resilience design pattern for the enterprise. 162 | - [nosql-patterns](https://dzone.com/articles/introduction-nosql-patterns) - Pragmatic Programming Techniques. 163 | - [mongodb](https://dzone.com/articles/mongodb-design-patterns) - Mongodb design patterns. 164 | - [MongoDB Applied Design Patterns](http://shop.oreilly.com/product/0636920027041.do) 165 | - [DynamoDB design patterns](https://amazon-dynamodb-labs.com/design-patterns.html)- Advanced design patterns for Amazon DynamoDB 166 | - [Redis applied design patterns](https://redislabs.com/redis-best-practices/introduction/) - Redis Applied Design Patterns book 167 | - Storage 168 | - [storage patterns](https://aws.amazon.com/blogs/storage/comparing-your-on-premises-storage-patterns-with-aws-storage-services/)- Comparing your on-premises storage patterns with AWS Storage services 169 | - [S3 Design Patterns](https://d1.awsstatic.com/whitepapers/AmazonS3BestPractices.pdf) - Best Practices Design Patterns: Optimizing Amazon S3 Performance 170 | 171 | ## DevOps & containers 172 | - [containerspatterns](https://l0rd.github.io/containerspatterns) - There are a Thousand Ways to Use Containers. 173 | - [kubernetes](https://github.com/gravitational/workshop/blob/master/k8sprod.md) - Kubernetes Production Patterns. 174 | - [container-design-patterns](https://vitalflux.com/container-design-patterns-kubernetes-pods-design) - Container Design Patterns for Kubernetes Pods Design. 175 | - [best-practices-for-shell-scripts](https://stackoverflow.com/questions/78497/design-patterns-or-best-practices-for-shell-scripts) - Best practices for shell scripts. 176 | - [kubernetes patterns](https://github.com/ro14nd-talks/kubernetes-patterns) - Presentation around the book kubernetes paterns. 177 | - [kubernetes patterns book](https://k8spatterns.io/) 178 | - [cdk patterns](https://cdkpatterns.com/) - cdk patterns. 179 | - [CDK Construct Catalog](https://awscdk.io/) - CDK construct catalog. 180 | 181 | 182 | ## Mobile 183 | - IOS 184 | - [ios-architecture-patterns](https://medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52) 185 | - Android 186 | - [design-patterns-for-android](https://www.raywenderlich.com/109843/common-design-patterns-for-android) - Common Design Patterns for Android. 187 | - [mvc-mvp-and-mvvm](https://academy.realm.io/posts/eric-maxwell-mvc-mvp-and-mvvm-on-android) - The MVC, MVP, and MVVM Smackdown. 188 | 189 | 190 | ## Front-End Development 191 | - [user Interface](http://ui-patterns.com) - User Interface Design patterns. 192 | - [oocss-acss-bem-smacss](http://clubmate.fi/oocss-acss-bem-smacss-what-are-they-what-should-i-use) - OOCSS, ACSS, BEM, SMACSS: what are they? What should I use? 193 | - [css-protips](https://github.com/AllThingsSmitty/css-protips) - A collection of tips to help take your CSS skills pro. 194 | - [responsive design patterns](https://bradfrost.github.io/this-is-responsive/patterns.html#layout) - A collection of patterns and modules for responsive designs. 195 | - [front-End Architecture] 196 | - [mv*](https://proandroiddev.com/mvc-mvp-mvvm-clean-viper-redux-mvi-prnsaaspfruicc-building-abstractions-for-the-sake-of-building-18459ab89386) - MVC/MVP/MVVM/CLEAN/VIPER/REDUX/MVI/PRNSAASPFRUICC. 197 | - [martinfowler](https://martinfowler.com/eaaDev/uiArchs.html) - GUI Architectures. 198 | 199 | ## Security 200 | - [opensecurityarchitecture](http://www.opensecurityarchitecture.org/cms/library/patternlandscape) - Security Architecture Patterns. 201 | - [martinfowler](https://www.martinfowler.com/articles/web-security-basics.html) - Web-security-basics. 202 | - [cloud-security](https://www.infoq.com/articles/cloud-security-architecture-intro) - Cloud security architecture intro. 203 | - [owasp](https://www.owasp.org/index.php/Security_by_Design_Principles) - Security by Design Principles. 204 | - [azure-security](https://docs.microsoft.com/en-us/azure/security/security-best-practices-and-patterns) - Azure security best practices and patterns. 205 | 206 | ## Books 207 | - [Django Design Patterns and Best Practices](https://arunrocks.com/static/book/django-design-patterns-best-practices-2-ed) 208 | - [MongoDB Applied Design Patterns](http://shop.oreilly.com/product/0636920027041.do) 209 | - [Design-Patterns-Elements-Reusable-Object-Oriented](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612/ref=sr_1_4?s=books&ie=UTF8&qid=1528136036&sr=1-4&keywords=design+patterns) 210 | - [Head-First-Design-Patterns-Brain-Friendly](https://www.amazon.com/Head-First-Design-Patterns-Brain-Friendly/dp/0596007124/ref=pd_sim_14_4) 211 | - [Effective-Java-3rd-Joshua-Bloch](https://www.amazon.com/Effective-Java-3rd-Joshua-Bloch/dp/0134685997/ref=pd_sim_14_7) 212 | - [Node.js Design Patterns](https://www.packtpub.com/web-development/nodejs-design-patterns-second-edition) 213 | - [Game Programming Patterns](https://github.com/munificent/game-programming-patterns) 214 | - [Object Design Style Guide](https://www.manning.com/books/object-design-style-guide) 215 | - [Spring Boot in Practice](https://www.manning.com/books/spring-boot-in-practice) 216 | - [Designing Microservices](https://www.manning.com/books/designing-microservices) 217 | 218 | ## Other Awesome Lists 219 | - Other amazingly awesome lists can be found in the [awesome](https://github.com/sindresorhus/awesome) list. 220 | 221 | ## Contributing 222 | - Your contributions are always welcome! Please read the [contribution guidelines](contributing.md) first. 223 | 224 | ## License 225 | 226 | [![CC0](http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg)](https://creativecommons.org/publicdomain/zero/1.0) 227 | 228 | 229 | To the extent possible under law, [Dov Amir](https://github.com/DovAmir) has waived all copyright and related or neighboring rights to this work. 230 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-architect -------------------------------------------------------------------------------- /contributing.md: -------------------------------------------------------------------------------- 1 | # Contribution Guidelines 2 | 3 | Please ensure your pull request adheres to the following guidelines: 4 | 5 | - Good design patterns resources should describe and explain several patterns (not describe a single pattern only). 6 | - Search previous suggestions before making a new one, as yours may be a duplicate. 7 | - Use the following format: `[name](link) - Description.` 8 | - New categories, or improvements to the existing categorization are welcome. 9 | - Keep descriptions short and simple, but descriptive. 10 | - End all descriptions with a full stop/period. 11 | - Check your spelling and grammar. 12 | - The pull request should include a link to the package and why it should be included. 13 | - Patterns should be software related 14 | 15 | 16 | Thank you for your suggestions! 17 | 18 | # Contribution to GitHub steps 19 | 20 | - Fork it! 21 | - Create your branch: git checkout -b my-new-branch 22 | - Commit your changes: git commit -am 'fix stuff' 23 | - Push to the branch: git push origin my-new-branch 24 | - Submit a pull request 25 | 26 | (or manually edit the readme file in github and create a pull request) 27 | --------------------------------------------------------------------------------