Toss the chicken pieces with 1 tbsp of the curry powder and 1 tsp of the salt. Set aside while you prepare everything else.
Blend the shallots, garlic and ginger with 1 tbsp of water into a rough paste (or mince them very finely). Mix the remaining 2 tbsp curry powder with 3 tbsp water into a thick paste.
Heat the oil in a Dutch oven or heavy pot over medium heat. Add the cinnamon, star anise and curry leaves and let them sizzle for 20 seconds. Add the sliced onion and the shallot paste and cook, stirring, for 5 to 6 minutes until soft and lightly golden.
Add the curry powder paste and fry for 2 to 3 minutes, stirring constantly. It is ready when it darkens slightly, smells toasted rather than raw, and the oil starts to separate at the edges. Add a splash of water if it catches.
Add the chicken and stir to coat in the paste. Cook for 3 to 4 minutes until the outside is no longer pink.
Add the potatoes, lemongrass, stock and half the coconut milk. Bring to a simmer, cover, and cook on low for 20 minutes until the potatoes are tender when pierced.
Uncover, stir in the remaining coconut milk, fish sauce, sugar and the remaining 1/2 tsp salt. Simmer uncovered for 8 to 10 minutes until the gravy coats the back of a spoon. Taste and adjust salt. Remove the lemongrass, cinnamon and star anise.
Cool for 20 minutes, then divide into four containers alongside cooked rice. Refrigerate up to 4 days.