In a large non-stick pot, heat the oil (medium - high heat) and fry the onion, garlic, and ginger for about 5 minutes. Add splashes of water as needed to prevent sticking.
When then onion is translucent, add the spices and the cayenne pepper / chili (if using). Fry for an additional minute.
Add all the rest of the ingredients to the pot (except for the serving ingredients of course). Bring to the boil, then reduce the heat to low and allow the curry to simmer.
At this point, taste and adjust the seasoning. Add more cayenne or chili for spice, and more salt + pepper if needed.
Simmer uncovered for about 15 - 20 minutes, stirring regularly. You can add more water if you want a soupy curry, or simmer for longer if you want to reduce it.
Garnish and serve!