Preheat the oven to 350°F (175°C). Grease and flour two 9-inch cake pans or line them with parchment paper for easy removal.
Whisk together flour, baking powder, baking soda, and salt in a bowl. Set aside.
Beat the butter and sugar on medium-high speed for 3-4 minutes until light and fluffy.
Add eggs one at a time, mixing well after each. Stir in the vanilla extract.
Mix in the dry ingredients and buttermilk alternately, starting with the dry mix. Don’t overmix.
Divide the batter between the pans and smooth the tops. Bake for 25-30 minutes, or until a toothpick comes out clean.
Cool the cakes in the pans for 10 minutes, then transfer to wire racks to cool completely.
Beat the butter for 2-3 minutes. Gradually add powdered sugar, then heavy cream, vanilla, and a pinch of salt. Beat until fluffy.
Place the first cake layer on a plate. Frost with buttercream, then top with the second layer. Frost the top and sides, and decorate as desired.