Toast the Coconut and Pecans: Preheat your oven to 350°F. Arrange the shredded coconut and chopped pecans on a bare rimmed baking sheet. Toast for 8–9 minutes, stirring once or twice, until golden and aromatic. Watch closely near the end to avoid burning. Move to a medium bowl and leave the oven on.
Cook the Frosting Base: In a medium saucepan, combine evaporated milk and cornstarch, whisking until smooth. Stir in both sugars, butter, salt, and egg yolks. Cook over medium heat, stirring constantly, until it begins to bubble and thickens enough to coat a spoon (about 6–7 minutes).
Finish the Frosting: Take the pan off heat and mix in the vanilla. Pour into the bowl with the toasted coconut and pecans. Stir until evenly blended, then let sit at room temperature for an hour to thicken.
Prepare Cake Pans: Line the bottoms of two 8-inch round pans with parchment. Lightly grease or spray the sides and parchment.
Melt Chocolate and Mix Liquids: Place chopped chocolate in a heatproof bowl. Pour hot coffee over it and wait one minute, then whisk until smooth. Stir in the nonfat milk, yogurt, and maple syrup.
Cream Butter and Sugar: In a mixing bowl, beat butter and granulated sugar with a mixer on medium until fluffy (about 2 minutes). Add the eggs and egg whites, one at a time, mixing thoroughly. Stir in vanilla.
Mix Dry Ingredients: In another bowl, whisk together whole wheat flour, all-purpose flour, cocoa powder, baking soda, and salt.
Combine Wet and Dry: With the mixer on low, alternate adding dry ingredients and chocolate mixture to the creamed butter. Begin and end with the dry mix, blending after each addition just until incorporated.
Bake the Cakes: Split batter evenly between pans and smooth the tops. Bake for 27–30 minutes, or until cakes spring back when touched and a toothpick comes out clean. Cool on racks for 10 minutes, then remove from pans and let cool completely.
Assemble the Cake: If the layers are domed, trim the top of one with a serrated knife to level it. Place the trimmed layer cut-side down on a serving plate. Spread half the frosting over the top, leaving a slight border. Add the second layer (domed side up) and spread remaining frosting over the top, leaving the sides bare.