Marinate the shrimps/prawns atleast 30 mins before cooking with ingredients mentioned under marination. As well wash the basmati rice atleast 3 times and then soak it in water for 30 mins.
After 30 mins, discard the water used for soaking the rice. In a sauce pan, add the rice and 3 times water (1.5 cups of rice : 4.5 cups of water). Add a few drops of ghee/oil, pinch of salt, bay leaf, green cardamom, black cardamom and cinnamon stick. Bring this to a boil.
Once the rice comes to a boil, lower the heat and put a lid on top of it. And let it cook for 7-8 mins or till the rice is 70% cooked. Different rice brands have different cooking time.
Meanwhile, in a deep pan. Add a tbsp of ghee and a tbsp of oil. Add cumin seeds and let it start sizzling. Add the chopped onion and tomatoes and cook it for 3-4 mins. Follow this with the marinate shrimps. Give everything a good mix.
By now the rice would be cooked. Take it off the flame, and using a colander drain off the water. Transfer the semi-cooked rice to a large plate or bowl to prevent it too keep cooking in its own steam.
Moving to the pan with shrimps, add turmeric powder and cook for 5 more minutes. Don't add any water. Transfer all this to a bowl.
In the same pan, add a few drops of oil or ghee at the bottom and now start layering the Biryani. It is the most important part of making a great biryani. Turn off the flame if you are not sure of how quickly you can layer the rice.
First layer 1/4 of the rice at the bottom and 1/3 of the cooked shrimp mixture on top and then rice and shrimp on top of it. At this stage at the fried onion and some mint and corainder leaves. You can also add some roasted almonds and cashews to this layer. Repeat the process of layer of rice and shrimp and the last layer should be rice.
Add fried onion and fresh herbs on top. Sprinkle the saffron water on top of the rice. Don't mix anything. Make three holes to the rice till the bottom and pour some liquid ghee through all these three holes. This will helps the rice stay moist and mix well with the sauce.
Wrap a towel on the lid of the pan and cover the pan. The lid will soak all the steam the rice creates without letting the rice get soggy. If you don't have a towel, you could use an aluminium foil as well, though the chances of soaking the steam is low in this case. Cook the rice with the lid for 12 mins on low flame.
After 12 mins, left the lid and check the rice with a fork. If the rice is cooked, open the lid and let it stay so for 5 mins before stirring it. After 5 mins, serve the biryani with some more fried onion and nuts on top. Enjoy this biryani with a cooling raita. I paired mine with Beetroot raita.