Skip to main contentLessons Learned from a Vue SaaS App by Abdelrahman Awad
- Rasayel — means "messages" — allows businesses to communicate with customers (marketing, etc)
- A fully featured realtime WhatsApp Inbox
- Dynamic bot builder
- Campaigns, contact manager, reporting dashboard, AI conversational toolkit, CRM integrations, permission/role system
- Vue.js, GraphQL, TypeScript
- Use
readonly for fixing mutability - Provide/Inject
- Pros: top-down direction, provider ownership
- Cons: which keys to inject, which functions to avoid
- Singletons
- Single instance, shared across component trees, but unclear ownership (the first component that called it owns it)
- Have to avoid teardown with lifecycle hooks
- Doesn't work with composables
- Self-Inject
- Top-down flow, hides implementation details
- May end up with multiple instances, doesn't work with composables with arguments
- Polling vs WebSockets