Preheat oven to 350°F. Grease two 9-inch cake pans with butter or baking spray, line bottoms with parchment, and grease the parchment.
In a medium bowl, whisk together flour, baking powder, and salt until evenly combined. Set aside.
In a stand mixer, beat butter and sugar on medium-high for 4-5 minutes until pale and fluffy, scraping down the bowl as needed.
With mixer on medium-low, add eggs one at a time, mixing until each is just incorporated. Add vanilla and mix for 15 seconds.
On low speed, add one-third of the flour mixture, then half the milk, mixing after each. Repeat with another third of flour and remaining milk. Finish with the final third of flour, mixing until just combined.
Divide batter evenly between prepared pans and smooth the tops. Bake for 30-35 minutes until a toothpick comes out clean.
Cool cakes in pans for 15 minutes, then loosen edges, invert onto a wire rack, remove parchment, and cool completely to room temperature.
For frosting, beat butter until creamy. Sift powdered sugar and cocoa into bowl, add salt and vanilla, then mix on low. Add cream and beat on medium-high for 2-3 minutes until fluffy.
Place one cooled cake layer on serving plate. Spread about 1/2 inch of frosting on top. Add second layer, flat-side down.
Apply a thin crumb coat over entire cake, chill for 20 minutes, then apply final layer of frosting. Smooth with an offset spatula and decorate as desired.