I've seen setups with Pulumi where there almost all code was in one huge stack with 700+ resources, for very different lifecycles and purposes (some infra, some app related).
This raises the issue of how to communicate values between projects/stacks. I like to have a separate parameterisation system with templating across all projects, so that predictable values like resource names, domain names, etc, can be passed to all projects.
For non-predictable values such as resource IDs, and system-allocated domains (e.g. AWS RDS hostnames, or account IDs), I like to tag them with a predictable name, then write a helper function to find a resource based on that name. In some cases where this is impractical, saving the generated values in AWS Parameter Store or similar would work too.
Overall, decoupling projects, as with software modules generally, will help future evolution, and is worth going for as long as the required code remains relatively simple.
I've just realised I'm reviving an old thread here, sorry! I'm curious to see how @refined-furniture-67680 solved this.