Paper 41: One App Database — Firestore + Code-Served Catalog
Why we unified the Solace Browser app catalog into a single Firestore collection synced to both the local browser and the cloud. User apps, team apps, and global apps in one place.
The problem with multiple app catalogs
Browser automation platforms typically maintain separate lists: built-in tools, user scripts, team workflows, marketplace listings. Each list requires its own API, its own UI, and its own update mechanism.
Solace unified these into one Firestore collection with three scopes: user (private), team (shared), global (community). One query. One update path. One UI.
Code-served catalog
The global catalog is code-served: the list of community apps is checked into the repository and deployed with the application. No database round-trip for the default view.
User and team apps overlay the code-served catalog at render time. The merge is deterministic: user scope overrides team, team overrides global.
- Single Firestore collection for all three scopes
- Code-served global catalog (zero DB cost for anonymous users)
- Deterministic merge: user > team > global
- Sync protocol: local browser + cloud in 30-second intervals