Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/madetech/clean-architecture
A (work-in-progress) guide to the methodology behind Made Tech Flavoured Clean Architecture
https://github.com/madetech/clean-architecture
bce clean-architecture clean-code ddd guide work-in-progress
Last synced: 27 days ago
JSON representation
A (work-in-progress) guide to the methodology behind Made Tech Flavoured Clean Architecture
- Host: GitHub
- URL: https://github.com/madetech/clean-architecture
- Owner: madetech
- Created: 2016-12-13T16:21:26.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2019-01-17T13:31:57.000Z (almost 6 years ago)
- Last Synced: 2023-11-07T17:08:27.172Z (about 1 year ago)
- Topics: bce, clean-architecture, clean-code, ddd, guide, work-in-progress
- Language: Ruby
- Homepage:
- Size: 150 KB
- Stars: 155
- Watchers: 54
- Forks: 17
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Clean Architecture
How to begin with "Made Tech Flavoured Clean Architecture".
This style of architecture has had many names over the years including "Hexagonal", "Ports & Adapters" and "Boundary-Control-Entity".
# Getting started
## Architectural Concepts
* [Use Case](use_case.md)
* [Domain](domain.md)
* [Gateway](gateway.md)
* [Bounded Contexts](bounded_contexts.md)## Learn by example (Ruby)
The best way to learn Clean Architecture is through deliberate practice.
*(Work-in-progress)*
### Basics
* [The Mindset](learn/the-mindset.md)
* [Start with Acceptance Testing](learn/basics/start-with-acceptance.md)
* [Writing Fake Gateways](learn/basics/fake-gateways.md)
* [Use Cases organise your code](learn/basics/use-cases-organise.md)
* [Constructors are for collaborators](learn/basics/constructors-for-collaborators.md)
* [Don't leak your internals!](learn/basics/do-not-leak-your-internals.md)
* [TDD everything](learn/basics/tdd-everything.md)
* [Build in a reliable dependency upgrade path](learn/basics/reliable-dependencies.md)
* [Your first Real Gateway](learn/basics/gateway-101.md)
* [Your first Delivery Mechanism](learn/basics/delivery-mechanism-101.md)### Intermediate
* [Presenters are more flexible](learn/intermediate/flexible-presenters.md)
* [Keep your wiring DRY](learn/intermediate/keep-your-wiring-DRY.md)
* [Extend Use Case behaviour with Domain objects](learn/intermediate/extend-with-domain.md)
* [Extracting a Use Case from a Use Case](learn/intermediate/extract-use-case-from-another.md)
* [Authentication](learn/intermediate/authentication.md)
* [Authorisation](learn/intermediate/authorisation.md)### Advanced
* [Consider the Actors](learn/advanced/consider-the-actors.md)
* [Substitutable Use Cases](learn/advanced/substitutable-use-cases.md)
* [Feature Toggles](learn/advanced/feature-toggles.md)
* [Keep your Domain object construction DRY](learn/advanced/keep-your-domain-object-construction-dry.md)## Examples in Languages
* [Ruby](ruby/README.md)
* [Kotlin](kotlin/README.md)
* Go
* Clojure
* JS# Further Reading
[Clean Architecture](https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html) by Robert C. Martin is extremely similar in nature to
* [BCE](https://www.amazon.com/Object-Oriented-Software-Engineering-Approach/dp/0201544350) by Ivar Jacobson and,
* [Hexagonal Architecture](http://alistair.cockburn.us/Hexagonal+architecture) (also known as **Ports & Adapters**) by Alistair Cockburn.The Made Tech flavour is slightly different still to exactly what is described in [Robert C. Martin's book about Clean Architecture](https://www.amazon.co.uk/Clean-Architecture-Craftsmans-Software-Structure/dp/0134494164), the choice to rename certain basic concept is deliberate to aid:
- Learning as a Junior
- Relating Interactors (Robert's name for UseCase objects) to Use Case Analysis sessions
- Retaining an eye on Domain-Driven-Design i.e. What are Domain objects?
- Avoiding overloading terminology e.g. Entity (Robert's name for Domain Objects) with EntityFramework EntitiesMade Tech flavour Clean Architecture is more [prescriptive than any of these other examples](learn/practicality.md)
## Reference
* [Clean Coders videos](https://cleancoders.com/videos/clean-code)
* [Clean Architecture Book](https://www.amazon.co.uk/Clean-Architecture-Craftsmans-Software-Structure/dp/0134494164/)