Preheat the oven to 350°F and line two baking sheets with parchment paper.
Stencil heart shapes all over the parchment paper (leaving about an inch of space between each). I find it easiest to trace a small heart-shaped cookie cutter, but you may make a template for yourself. You want all of the hearts to be the same size. Then flip the parchment paper over so that you can still see the hearts but will not be placing batter directly on the pencil markings.
Whisk together the flour, cocoa, baking soda, and salt in a medium mixing bowl.
In a separate, large bowl, use a stand mixer or hand mixer to cream the butter. Add the sugars and beat for 3 minutes on medium-high speed until fluffy.
Then beat in the eggs until smooth and add the buttermilk and red food coloring and mix just until incorporated.
Add the dry ingredients to the wet ingredients, mixing at low speed just until combined.
Then add the vinegar and vanilla, again mixing just combined. You do not want to over mix the batter. The batter should be thick but still able to pipe.
Transfer the batter into a piping bag fitted with a Wilton 1A round tip. If you don’t have one, you could cut the corner out of a large ziplock bag instead.
Pipe the batter onto stenciled heart shapes leaving about an inch of space between them. The cakes will spread a bit while baking. I find it easiest to pipe an outline of the heart and then fill it in then smooth out the batter a bit with an offset spatula.
Bake the cakes for 8 to 10 minutes or until no longer shiny and spring back slightly when touched. Allow them to cool on the pan for a couple of minutes before transferring them to a wire rack to cool completely.
Prepare the filling by beating together the cream cheese and softened butter until light and fluffy, about 2 minutes.
Next, add the powdered sugar 1 cup at a time and beat for another minute or two after each addition until silky smooth. Transfer the frosting to a piping bag fitted with a Wilton 1A tip.
Match up pairs of cakes that are similar in shape and size. Pipe about 2 tablespoons of filling onto the flat side of one cookie and gently top it with a matching cookie. Repeat for the remaining sets.