Begin by preheating the oven to 350°F (176°C), then prepare three 8-inch cake pans with non-stick baking spray and parchment paper on the bottom.
In a large mixer bowl, combine flour, sugar, cocoa, baking soda, baking powder, and salt. Set aside.
In a medium-sized bowl, mix milk, vegetable oil, vanilla extract, and eggs.
Combine the wet and dry ingredients, beating until well mixed.
Gradually add hot water to the batter, mixing on low until fully incorporated. Scrape the bowl's sides as needed for thorough mixing.
Divide the batter evenly among the pans and bake for 22-25 minutes, until a toothpick comes out with a few moist crumbs.
Let the cakes cool for 2-3 minutes, then transfer them to a cooling rack.
For the coconut filling, mix shredded coconut and sweetened condensed milk in a medium bowl.
For the frosting, blend butter and shortening in a large mixer bowl until well combined.
Add half of the powdered sugar and mix until smooth.
Mix in coconut extract and 4-5 tablespoons of water or milk until smooth.
Gradually add the remaining powdered sugar, adjusting with water or milk as needed.
To assemble the cake, level the cake layers using a large serrated knife. Refer to my cake leveling tips for guidance.