Heat the canola oil in a dutch oven. Add tofu and pan fry until it stars to turn brown and get a little cripsy, about 15 minutes stirring occasionally. Remove from the pot and set aside.
Add coconut oil and onion to the dutch oven. Saute until the onion turns translucent. Add garlic, ginger, coriander, cumin, salt, turmeric, red pepper flake, cinnamon and cardamom. Saute for 1-2 minutes, or until toasted and fragrant.
Stir in sweet potato, tomato, and broth. Bring to a boil and simmer for 20 minutes.
Stir in coconut milk and tofu. Continue cooking until heated through.
Serve the curry over cooked rice.
Recipe by Alison's Allspice at https://www.alisonsallspice.com/sweet-potato-coconut-curry/