Database
Firebase
Firestore fits this stack when your screens are subscriptions rather than page loads: presence, chat, notifications and activity feeds update without polling. That works from Next.js client components, while server code uses the Admin SDK. Model documents around how a screen reads, not how the data relates, because joins do not exist here. Denormalize the Clerk organization ID and the resolved Stripe plan onto documents you query so access checks never need a second read.