Transform Buzz from a basic chat app into a portfolio-ready showcase with high-impact technical features.
Make messages interactive and visually impressive.
| Feature | Priority | Status | Complexity |
|---|---|---|---|
| Image Lightbox | High | ✅ DONE | Medium |
| Rich Link Previews | High | ✅ DONE | Hard |
| Giphy Integration | Medium | ✅ DONE | Medium |
- Install lightbox library (yet-another-react-lightbox)
- Create Lightbox component wrapper
- Integrate with message images
- Add zoom, download, and share options
- Keyboard navigation (arrow keys, ESC to close)
- URL detection in messages (regex pattern)
- Create LinkPreview component
- Set up link preview API (jsonlink.io - free, no key)
- Cache link previews to avoid repeated API calls
- Handle YouTube, GitHub special cases
- Graceful fallback for failed previews
- Sign up for Giphy API key
- Create GiphyPicker component
- Add GIF button in compose area
- Implement search with debouncing
- Trending GIFs as default
- Send GIF as message (store as img)
Prove understanding of performance and complex data synchronization.
| Feature | Priority | Status | Complexity |
|---|---|---|---|
| Optimistic UI Updates | High | ✅ DONE | Hard |
| Message Search | High | ✅ DONE | Medium |
| @Mentions | Medium | ✅ DONE | Medium |
- Update message state structure (add
status: 'sending' | 'sent' | 'failed') - Show message immediately in UI with "sending" indicator
- Perform Firebase write in background
- Update status to "sent" on success
- Show "failed" with retry option on error
- Handle offline scenarios
- Add search bar in chat header
- Client-side search through loaded messages
- Highlight matching text in messages
- Scroll to message on click
- Search across all chats option
- Consider Algolia/Typesense for full-text search (optional)
- Detect @username pattern in compose input
- Show autocomplete dropdown of group members
- Highlight mentions in message bubbles
- Notify mentioned users (separate notification)
- "Mentions" filter in chat list
Demonstrate security awareness for fintech/enterprise roles.
| Feature | Priority | Status | Complexity |
|---|---|---|---|
| Disappearing Messages | High | ⬜ TODO | Hard |
| E2EE Badge (Simulated) | Medium | ⬜ TODO | Medium |
| Session Management | Medium | ⬜ TODO | Medium |
- Add toggle in compose area for disappearing mode
- Add
expiresAtfield to message document - Set expiration (30s after read)
- Cloud Function to delete expired messages
- Visual indicator for disappearing messages (timer icon)
- Show countdown in recipient's view
- Install crypto-js library
- Generate/store encryption key per chat
- Encrypt message text before saving to Firestore
- Decrypt on client when displaying
- Show "🔒 Encrypted" badge on messages
- Key exchange simulation for new chats
- Store session info in Firestore (device, IP, timestamp)
- Create "Active Sessions" page in settings
- Show device name, location, last active
- "Log out other devices" button
- Firebase Auth token revocation
- Push notification on new login
- ✅ Image Lightbox - immediate visual impact
- ✅ Optimistic UI Updates - better UX
- ⬜ Rich Link Previews - wow factor
- ✅ Message Search - utility feature
- ✅ @Mentions - group chat enhancement
- ⬜ Giphy Integration - fun & API skills
- ⬜ Disappearing Messages - security feature
- ⬜ E2EE Badge - security showcase
- ⬜ Session Management - enterprise feature
- ⬜ Final testing & bug fixes
# Rich Media
npm install yet-another-react-lightbox # Lightbox
npm install @giphy/react-components @giphy/js-fetch-api # Giphy
# Security
npm install crypto-js # Encryption
npm install @types/crypto-js --save-dev # TypeScript types
# Optional
npm install react-mentions # For @mentions autocomplete- API Keys needed: Giphy API, Link Preview API (or custom Cloud Function)
- Firebase Functions: May need for link previews and message expiration
- Testing: Each feature should be tested across 1-on-1, group, and global chats
- Mobile responsiveness: Ensure all new UI works on mobile
- Read receipts with checkmarks
- Unread message counts
- WhatsApp-style date separators
- Group chat creation and management
- Avatar with initials and colors
- Group description and editing
- Photo indicator in message preview
- Empty state for chats