In a medium bowl, stir together 1 tablespoon of oil, ginger, curry powder, cardamom, and salt and pepper to form a paste. Transfer 1 tablespoon of the paste to a large sauce pan.
Add the chicken to the bowl and toss to coat with the remaining paste. Set aside while you cook the rice.
In a large glass measuring cup, combine the chicken broth and coconut milk. Add the rice plus 1 3/4 cups of the broth/milk mixture to the past in the saucepan. Bring to a boil, then cover and reduce heat to low until the rice is tender but still firm, about 10-12 minutes. Remove rice from heat and fluff with a fork.
In a large skillet, heat the remaining 2 tablespoons oil over medium-high heat. Add the shallots and garlic and cook until soft, 3-5 minutes. Add the chicken and cook until the chicken is golden brown, about 3 minutes.
Add 1/4 cup of the remaining broth/coconut milk mixture. Cook and stir until the liquid has evaporated, about 1 minute.
Add the rice to the skillet with the chicken, along with the remaining 1/2 cup of broth/coconut milk and the dried cranberries. Cook without stirring over medium-high heat until the rice starts to brown and turn crispy on the bottom.
Remove from heat and stir in the lime juice and cilantro. Reseason with more salt and pepper, if needed.