Hybrid Storage System
The CAIPE UI supports two storage modes with automatic fallback for resilient operation:
- MongoDB Mode (Default) - Persistent storage with sharing and collaboration features
- localStorage Mode (Fallback) - Local-only storage when MongoDB is unavailable
User Experience
MongoDB Mode Indicators
- ✅ No special indicators (default expected mode)
- Sidebar syncs conversations from MongoDB on load
- New conversations appear immediately in sidebar
localStorage Mode Indicators
- 📦 Amber banner in sidebar: "Local Storage Mode"
- 📦 Small badge in chat view: "Local storage mode"
- Console logs indicate fallback:
[ChatStore] MongoDB unavailable - using localStorage only
Testing Strategy
Test MongoDB Mode
# Start MongoDB
docker run -d --name caipe-mongo -p 27017:27017 \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=changeme \
mongo:7.0
# Verify in UI
# ✅ No storage mode banner
# ✅ Conversations persist across browser sessions
Test localStorage Mode
# Stop MongoDB
docker stop caipe-mongo
# Verify in UI
# ✅ Amber "Local Storage Mode" banner appears
# ✅ Conversations work but are local-only
# ✅ No errors in console
Test Automatic Fallback
# Start with MongoDB running
# Create some conversations
# Stop MongoDB mid-session
docker stop caipe-mongo
# Continue using the app
# ✅ Existing conversations still visible (from Zustand cache)
# ✅ New conversations save to localStorage
# ✅ Banner appears indicating local mode
Best Practices
For Development
# Option 1: Quick local development (no MongoDB needed)
# Just comment out MongoDB env vars
# Pros: Fast setup, no dependencies
# Cons: Local-only data
# Option 2: Full-stack development (with MongoDB)
make caipe-mongodb # Start MongoDB
# Set MongoDB env vars
# Pros: Full feature testing
# Cons: Requires Docker
For Production
Always use MongoDB mode in production:
- ✅ Persistent storage
- ✅ Multi-user support
- ✅ Sharing features
- ✅ Server-side search
- ✅ Data backups possible
For Demos
localStorage mode is fine for single-user demos:
- ✅ No infrastructure needed
- ✅ Fast setup
- ✅ Core features work
- ⚠️ Data is local-only
Summary
The hybrid storage system provides:
- ✅ Zero-config local development - No MongoDB required to start coding
- ✅ Production-ready persistence - MongoDB for shared environments
- ✅ Graceful degradation - Continues working if MongoDB fails
- ✅ Automatic detection - No manual configuration needed
- ✅ User transparency - Clear indicators of storage mode
- ✅ No data loss - Cached data remains accessible
Bottom line: The app "just works" regardless of backend availability! 🎉
Related
- Architecture: architecture.md