Preheat the Oven: Begin by preheating your oven to 350°F (175°C). Grease and flour two 9-inch round cake pans or line them with parchment paper for easy removal later.
Sift Dry Ingredients: In a medium bowl, whisk together the flour, baking powder, baking soda, and salt. Set it aside for later.
Combine Wet Ingredients: In a separate bowl, mix the coconut milk (or buttermilk), whole milk, coconut oil, and sour cream until smooth and well combined.
Cream Butter and Sugar: In a large mixing bowl, beat the softened butter and granulated sugar on medium speed for about 3-5 minutes until the mixture is light and fluffy.
Add Eggs and Vanilla: Add the eggs one at a time, beating well after each addition. Stir in the vanilla extract to enhance the flavor.
Add Dry and Wet Ingredients: Gradually add the dry ingredients to the butter mixture, alternating with the milk mixture. Start and end with the dry ingredients, mixing until just combined.
Fold in Coconut: Gently fold in the shredded coconut until it is evenly distributed throughout the batter.
Divide and Bake: Divide the batter evenly between the prepared cake pans and smooth the tops with a spatula. Bake for 25-30 minutes, or until a toothpick inserted into the center comes out clean. Cool in the pans for 10 minutes, then transfer to a wire rack to cool completely.
Make Creamy Frosting: In a large bowl, beat the softened cream cheese and butter together on medium speed until smooth and creamy. Gradually add the sifted powdered sugar until fully incorporated and fluffy. Stir in vanilla extract and enough coconut milk to achieve the desired consistency.
Assemble the Cake: Once the cake layers have completely cooled, place one layer on a serving plate. Spread a generous layer of frosting over the top. Place the second layer on top and frost the sides and top of the cake. Decorate by pressing shredded coconut into the frosting and sprinkling more on top.