Preheat the oven to 350 degrees F with the rack placed in the middle. Grease a 9x13-inch pan with coconut oil.
In a medium bowl, whisk together the flour, baking powder and salt. In a second medium bowl, whisk together the coconut milk, yogurt, lemon zest and juice and vanilla.
In a large bowl, use an electric mixer at medium speed to combine the coconut oil, sugar and butter until smooth- about 3 minutes. Add the eggs one at a time, beating well after each addition. Add the coconut milk mixture and beat until well combine, about 2 minutes (the mixture may appear curdled). Reduce the speed to low and add the flour mixture in two additions, mixing just to combine. Fold in the coconut with a rubber spatula, making sure to fully incorporate it.
Scrape the batter into the prepared pan and spread it evenly with the spatula. Bake until the cake is lightly golden on top and a cake tester inserted in the center comes out clean, 35 to 40 minutes, rotating the pan halfway through. Remove the cake from the oven and cool completely in the pan on a wire rack (leave the oven on).
MAKE THE FROSTING:
Spread the coconut in a single layer on a baking sheet and bake until golden and fragrant, 5 to 7 minutes. Let cool completely in the pan on a wire rack.
In a large bowl, use an electric mixer on medium-high to beat the ricotta and powdered sugar until the sugar is dissolved and the cheese is creamy (3 to 5 minutes). Add the cream and vanilla and beat until soft peaks form- about 3 minutes. Gently fold in 1 cup of the toasted coconut. Cover the frosting and chill until it sets a bit, at least 30 minutes (and up to 4 hours). Set the remaining coconut aside.
Spread the frosting over the top of the cake. Sprinkle with the reserved toasted coconut. Cut the cake into pieces and serve. The cake can be kept covered and refrigerated, for up to 3 days.