Heat oil or ghee in a saucepan over medium high heat and add the mustard seeds. Once they start spluttering, add the onion, garlic, ginger, green chilli, cardamom pods, fenugreek seeds, fennel seeds and the curry leaves along with ½ teaspoon salt. Cook, stirring often, for 3-4 minutes.
Reduce heat to medium and add the ground coriander, cumin, chilli powder and turmeric. Cook for 1 minute.
Add the diced tomato and cook, stirring often, for about 6-8 minutes or until it starts to break down and thickens. Add ¼ cup of water and continue cooking for a further 2 minutes.
Add the coconut milk, stir to combine then add the fish. Bring to a simmer then reduce heat to low and cook for 4-5 minutes or until the fish is just cooked through. Season to taste with salt and pepper.
Serve fish curry with steamed basmati rice and naan bread (or other flat bread). Garnish with Crispy Curry Leaves, toasted shredded coconut and fresh coriander if desired.