In a large pot, heat some oil over medium heat. Add the shallots, lemongrass, ginger, and garlic. Sauté gently and keep stirring until fragrant (about 3 minutes).
Stir in the curry paste, turmeric, curry powder, coriander, and cardamom. Cook gently for 1-2 minutes to release all the flavors.
Pour in the coconut milk, stock, and lime leaves (if using). Bring it all together to a gentle boil, and then reduce the heat and simmer for 3-4 minutes.
As the broth simmers, soak the rice noodles in boiling hot water until al dente (or make egg noodles according to the directions on the packaging). Then, drain the noodles, and toss them with a little amount of oil - an optional step to prevent the noodles from sticking together.
Add in the following to the broth: bell pepper, fish sauce, soy sauce, and sugar. And your selected protein, then stir to combine, and simmer until thoroughly cooked. Tofu or shrimp will be ready in about 2 to 3 minutes, while chicken or fish will take longer.
Sample the broth and make adjustments as necessary - add more fish sauce or soy if you require saltiness, more curry paste if you need more spice, a squeeze of lime if you want brightness, or sugar for some sweetness.
Separate the noodles into bowls. Pour the steaming hot coconut curry broth over the noodles until they are nearly submerged. Top with your choice of garnish and serve!