CRM 2.0
Real-Time Team Collaboration Platform
Full-stack engineer · Realtime + RBAC
Custom Firebase chat + workspace with typing indicators, @mentions, reactions, read receipts — plus a project-scoped Vault for team secrets.
Why not Slack + Notion?
Because context lives in three places — chat, tasks, and shared secrets — and every hand-off across those tools loses history. We collapsed them into one workspace scoped by project, with a Vault for credentials the team actually needs to share.
Realtime, done right
20+ pages subscribe to Firestore. The tricky part isn't onSnapshot — it's cleanup, offline persistence, and preventing zombie listeners after route changes. Every subscription is registered against the route lifecycle so nothing leaks.
RBAC without middleware theatre
Roles live in Firestore custom claims, enforced by security rules — no server round-trip to check permissions on every read. The client just asks; the database refuses illegal reads at the source.
- →20+ real-time pages on Firestore onSnapshot with proper cleanup + offline persistence
- →Granular RBAC (admin / manager / employee) enforced by Firestore security rules
- →PWA with Vite PWA plugin — installable, service worker cache, FCM push
- →Sidebar 'new content' indicators via lastViewed timestamp diff