Heat a medium saucepan over medium-high heat. Add oil to pan and swirl to coat.
Add in shallots, ginger, and garlic. Cook for 1-2 minutes, stirring frequently.
Add in curry paste, chicken broth, coconut milk, fish sauce, and brown sugar. Whisk until well-combined. Bring to a simmer and simmer for 20 minutes, stirring occasionally.
Add in bell pepper, snow peas, zucchini, and mushrooms. Stir to coat vegetables in sauce. Cover and simmer for 10-15 minutes.
Add in lime juice and zest. Stir to combine.
Add in fish and stir to combine. Simmer covered for 3-5 minutes or until fish is starting to flake and vegetables are crisp tender.
To each bowl, add ¾ cup rice. Divide curry sauce with vegetables and fish among bowls. Top with a pinch of red pepper flakes, if desired. Top with 1 tablespoon each of Thai basil ribbons and sliced green onions.
Note: You can remove a small amount of sauce and cook the fish in a separate pan to avoid overcooking and losing the fish in the sauce.