The article seems written soundly but I can't stop thinking that all these patterns discribed there are just a huge overengineering and are solving problems which don't really exist.
Please note the "adaptability" feature mentioned several times in the text. Applying each of the techniques/patterns/tests should always be a conscious decision. The tutorial explicitly demonstrates, for instance, that not all modules got a separate "infra module", because their logic didn't justified it.