Preheat the oven to 350 degrees F. Grease a 9x13-inch baking dish and set it aside.
In a stand mixer bowl, combine flour, salt, and ¼ cup of sugar. Mix on low speed until just combined.
Meanwhile, in a jar, combine the milk, remaining ¼ cup of sugar, and yeast. Mix with a fork and let the mixture stand for 5 minutes until the yeast activates. Add the egg and melted butter, and mix well.
Slowly pour the wet mixture into the stand mixer and increase the speed to high. Knead the dough for 5-7 minutes until it is soft and smooth. Add the vanilla extract. Transfer the dough to a greased bowl, cover it, and place it in a warm area to proof for 1-2 hours, until the dough has almost doubled in size.
While the dough is rising, prepare the filling by combining butter, brown sugar, salt, and ground cardamom in a bowl. Mix until smooth and set aside.
Dust a marble countertop with flour and transfer the risen dough. Spread the dough into a rectangular shape using a rolling pin.
Spread the prepared filling generously all over the dough. Roll the dough tightly from the long end to form a log.
Using a sharp knife, cut the rolls into 9-12 equal pieces and place them in the greased baking dish. Allow the rolls to rise for another 30 minutes.
Before baking, pour the heavy cream generously over the rolls. Bake at 375 degrees F for 30-35 minutes until the center roll is cooked through. Allow the cinnamon rolls to cool for 10 minutes.
Meanwhile, prepare the cream cheese frosting by combining cream cheese, butter, powdered sugar, vanilla extract, and heavy cream. Mix until smooth and creamy.
Drizzle the frosting over the cinnamon rolls and spread it evenly. Serve the cinnamon rolls while they are still warm.