Preheat the oven to 350° F. Line a muffin pan with paper or foil liners and set aside.
In the bowl of a stand mixer, combine the butter and sugar and beat at medium speed until light and fluffy.
Add the eggs, one at a time, and scrape the bottom of the bowl to make sure all the ingredients are well combined.
Place the all-purpose flour, baking powder, and salt in a mixing bowl and stir to combine.
Combine the milk and vanilla in a measuring cup. Alternate adding the milk/vanilla mixture and the dry mixture to the whipped butter/sugar mixture. Beat on medium speed for 1½ minutes, scrape the bottom and sides of the bowl, add the remaining milk mixture, and beat for another 30 seconds.
Fill paper liners ⅔ of the way with batter, and bake for 20 minutes, or until a toothpick inserted in the center of the cupcake comes out clean. Cool completely before topping with buttercream.
In the bowl of a stand mixer, beat the butter at medium speed for 2-3 minutes, or until pale in color and fluffy.
Add 3 cups of powdered sugar and turn your mixer on the lowest speed (so the sugar doesn’t blow everywhere) until the sugar has been incorporated with the butter.
Increase mixer speed to medium and add vanilla extract and 2 tablespoons of milk/cream and beat for 3 minutes. If your frosting needs a more stiff consistency, add remaining sugar. If your frosting needs to be thinned out, add remaining milk 1 tablespoons at a time. Optionally, you can add in a few drops of natural food coloring.