To a blender, add the tomatoes first, then the shallot, garlic cloves, ginger, and water (or vegetable broth). Blend until smooth and transfer to a medium pot over medium heat.
Bring to a simmer and cook, stirring occasionally, until the onions no longer smell raw, about 5-6 minutes.
To the pot, add the coriander, garam masala, cumin, curry powder, turmeric, entire can of coconut milk, and the diced potatoes. Stir; increase to high heat, bringing it to a slow simmer. Then reduce the heat to medium-low, bring to a low boil and cover. Cook until potatoes are tender, 18-20 minutes, stirring occasionally (time will vary depending on how large you diced the potatoes).
Next add the salt, sweet peas, chickpeas (if using), and chopped cilantro. Stir until warm (and sweet peas are no longer frozen).
Remove from heat and add lime juice and cayenne pepper (if using); stir. Let sit at least 10 minutes before serving to absorb flavor.
Serve this curry on top of rice, or with a side of toasted naan bread. The dish will thicken as it sits.
Store in an airtight container in the fridge for 5-6 days. This stores very well and the flavors will develop more over time.