Bring water to a boil over high heat. Once boiling, add lentils, bring back to a gentle boil, then reduce heat to a simmer and cook uncovered for 7-10 minutes or until just tender. You want them to be cooked through but not mushy. Drain well and set aside.
In the meantime, heat a large rimmed skillet or pot over medium heat. Once hot, add oil (or water), mustard seed, cumin seed, coriander seed, and cardamom pods. Cook for 30 seconds to 1 minute, or until fragrant and popping (stirring occasionally).
Add shallot, ginger, and serrano pepper and stir. Sauté for 3 minutes, stirring occasionally. The shallot should be soft and translucent. Then add garlic and stir once more.
Add cauliflower, red bell pepper, potato, curry powder, and salt and stir. Cook for 4 minutes, stirring occasionally.
If grating your tomatoes, do so and add to the pan now. If using diced canned tomatoes, I recommend giving them a quick blend in a food processor or small blender to create more of a purée. Once tomatoes have been added to the pan, also add vegetable broth and bring to a simmer over medium heat. Cover and cook for 10 minutes or until potatoes are tender.
Add cooked drained lentils, coconut aminos, maple syrup, and coconut milk and stir. Bring back to a simmer and cook for a few minutes to let the flavors meld. You can simmer this for up to 15 minutes, but it’s not necessary.
Taste and adjust flavors as needed, adding more maple syrup for sweetness, curry powder to intensify the curry flavor, salt to taste, or coconut aminos for saltiness / depth of flavor. We added a bit more of each.
To serve, divide between serving bowls and enjoy as is or with a side of naan, rice, steamed greens, or quinoa (optional). Fresh lime juice and cilantro make lovely additions as well (optional). NOTE: Be careful not to eat the cardamom seeds as they can have quite a kick!
Store cooled leftovers in the refrigerator up to 5 days or in the freezer up to 1 month. Reheat in the microwave or in a saucepan. Add more vegetable broth or coconut milk as needed to rehydrate.
*Nutrition information is a rough estimate calculated with avocado oil and without optional ingredients.