A curated collection of software architecture styles and design patterns used to build scalable, maintainable, and modular software systems.
This repository is a learning hub and reference for developers, architects, and engineers who want to deepen their understanding of how large-scale software is structured — from client-side UIs to distributed backend systems and behavioral programming constructs.
This repository is divided into two major categories:
| Pattern | Description |
|---|---|
| MVC | Model-View-Controller |
| MVP | Model-View-Presenter |
| MVVM | Model-View-ViewModel |
| MVVM-C | MVVM + Coordinators (navigation separation) |
| VIPER | View, Interactor, Presenter, Entity, Router (used in iOS) |
| Micro-Frontend | Independently deployable frontend modules |
| Pattern | Description |
|---|---|
| Clean Architecture | Core domain logic isolated from infrastructure |
| Onion Architecture | Layers built around domain models |
| Hexagonal Architecture | Ports and Adapters model for flexible I/O |
| DDD (Domain-Driven Design) | Model-driven design for complex business logic |
| Model | Description |
|---|---|
| Monolithic | All logic in one deployable unit |
| Microservices | Independently deployable services |
| Serverless | Functions triggered by events, no infra management |
| SOA (Service-Oriented Architecture) | Interoperable, contract-based service communication |
| Pattern | Description |
|---|---|
| CQRS | Separate write (command) and read (query) models |
| Event Sourcing | Persist all state changes as immutable events |
| Event-Driven Architecture | Services communicate via events (pub/sub or brokers) |
| Pattern | Description |
|---|---|
| ECS (Entity-Component-System) | Data-oriented design for real-time, dynamic systems |
- Singleton
- Factory Method
- Abstract Factory
- Builder
- Prototype
- Adapter
- Decorator
- Facade
- Proxy
- Composite
- Observer
- Strategy
- State
- Command
- Chain of Responsibility
- Iterator
- Thread Pool
- Actor Model
- Futures/Promises
- Reactor
- Currying
- Immutability
- Higher-Order Functions
- Memoization
- Middleware
- Repository
- DAO (Data Access Object)
- Active Record
- Data Mapper
- Unit of Work
- Dependency Injection
We welcome contributions from the community! Here's how you can help:
- Fork this repository
- Add your pattern to the appropriate folder
- Include:
- A short
readme.mdexplaining the pattern - A code example (TypeScript preferred)
- When and why to use it
- A short
- Submit a Pull Request (PR)
- Fix typos, clarify descriptions, or add references to real-world examples
- Link to blog posts, case studies, or books that reinforce the pattern
- Design Patterns: Elements of Reusable Object-Oriented Software — GoF
- Domain-Driven Design — Eric Evans
- Clean Architecture — Robert C. Martin
- The Art of Scalability — Abbott & Fisher
- Building Microservices — Sam Newman
MIT License — free to use, modify, and share. Give credit where it’s due 💙
🌱 Learn architecture, not just frameworks. Patterns evolve — principles last.