Beamer Integration
The Beamer integration provides product announcements and changelog functionality for the DashClicks platform. Beamer is a notification center and changelog service that helps keep users informed about new features, updates, and improvements.
The Beamer integration code is currently commented out and returns empty data. This integration appears to be in a placeholder/inactive state. All endpoints return empty results with pagination metadata.
Architecture Overview
graph TB
subgraph "Client Layer"
A[Frontend Application]
end
subgraph "DashClicks External API"
B[Beamer Router]
C[Beamer Controller]
end
subgraph "External Service"
D[Beamer API<br/>api.getbeamer.com]
end
A -->|GET /v1/integrations/beamer/posts| B
B --> C
C -.->|Currently Disabled| D
C -->|Empty Response| A
style D fill:#f9f,stroke:#333,stroke-width:2px
style C fill:#ffa,stroke:#333,stroke-width:2px
Key Features
Product Announcements
- Post Listing: Retrieve product update posts (currently disabled)
- Pagination Support: Standard pagination for post retrieval
- Empty State: Returns properly formatted empty responses
Current Implementation Status
- ✅ Route structure defined
- ✅ Controller skeleton implemented
- ✅ Response format standardized
- ❌ Beamer API calls commented out
- ❌ No active data retrieval
- ❌ Returns empty data arrays
Integration Components
File Structure
external/Integrations/Beamer/
├── index.js # Main router
├── README.md # Integration documentation
├── Controllers/
│ └── getPost.js # Post retrieval controller (inactive)
└── Routes/
└── post.js # Post routes
API Endpoints
| Endpoint | Method | Purpose | Status |
|---|---|---|---|
/v1/integrations/beamer/posts | GET | List product announcements | Inactive (returns empty) |
Authentication
Beamer API Key
The integration is designed to use a Beamer API key stored in Firebase Firestore:
// Expected configuration (currently commented out)
const beamerApiKey = process.env.BEAMER_API_KEY; // From Firestore
Key Storage:
- Stored in: Firebase Firestore
- Collection: Integration configurations
- Access: Backend environment variable
- Security: Server-side only, not exposed to clients
Response Format
Post Listing Response
{
"pagination": {
"page": 1,
"per_page": 25,
"total": 0
},
"data": []
}
Pagination Fields:
page: Current page number (default: 1)per_page: Items per page (default: 25)total: Total number of posts (currently: 0)
Implementation Notes
Current Code State
The main controller (Controllers/getPost.js) contains commented-out code:
// getAllPosts function
// - Beamer API endpoint: https://api.getbeamer.com/v0/posts
// - Authentication via API key
// - Returns empty pagination result currently
Expected Beamer API Integration
When activated, the integration should:
- Retrieve Posts: Fetch announcements from Beamer API
- Filter Posts: Apply filtering based on user preferences
- Transform Data: Convert Beamer format to DashClicks format
- Cache Results: Implement caching for performance
Beamer API Structure (Commented)
// Expected endpoint
GET https://api.getbeamer.com/v0/posts
// Expected headers
{
'Authorization': 'Bearer {api_key}',
'Content-Type': 'application/json'
}
// Expected query parameters
{
page: 1,
per_page: 25
}
Usage Example
Fetch Product Posts (Current Behavior)
// Request
GET /v1/integrations/beamer/posts?page=1&per_page=25
// Response (empty state)
{
"pagination": {
"page": 1,
"per_page": 25,
"total": 0
},
"data": []
}
Error Handling
Standard Error Response
{
"status": false,
"errno": 400,
"message": "Error description",
"additional_info": "Additional error context"
}
Expected Error Scenarios (When Active)
- 401 Unauthorized: Invalid or missing Beamer API key
- 404 Not Found: Post resource not found
- 429 Rate Limited: Beamer API rate limit exceeded
- 500 Server Error: Beamer service unavailable
Environment Variables
# Beamer API Configuration (when active)
BEAMER_API_KEY=your_beamer_api_key_here
Integration Dependencies
Required Packages
{
"express": "^4.x",
"axios": "^1.x (for external API calls when activated)"
}
Internal Dependencies
- Utilities: Error handling utilities
- Firestore: Configuration storage (when active)
Future Activation Checklist
To activate this integration:
-
Obtain Beamer API Key
- Sign up for Beamer account
- Generate API key from Beamer dashboard
- Store in environment variables
-
Uncomment API Calls
- Activate code in
Controllers/getPost.js - Implement proper error handling
- Add API response transformation
- Activate code in
-
Configure Firestore
- Set up Firestore collection for API keys
- Implement secure key retrieval
- Add key rotation mechanism
-
Add Caching
- Implement Redis/memory caching
- Set appropriate TTL for posts
- Add cache invalidation logic
-
Testing
- Test API connectivity
- Validate response formats
- Verify pagination behavior
- Test error scenarios
Monitoring and Maintenance
Health Checks (When Active)
- Beamer API connectivity
- API key validity
- Response time monitoring
- Error rate tracking
Maintenance Tasks
- Monitor Beamer API changes
- Update API version as needed
- Rotate API keys periodically
- Review and update post filtering logic
Related Documentation
- Product Announcements (Frontend)
- Notification System (Internal)
Support Resources
Beamer Documentation
- API Docs: https://www.getbeamer.com/api
- Dashboard: https://app.getbeamer.com
- Support: support@getbeamer.com
DashClicks Support
- Integration Issues: Check with backend team
- API Key Access: Contact DevOps for Firestore access
- Feature Requests: Submit to product team
Last Updated: December 2024
Status: Inactive (Placeholder Implementation)
Complexity: LOW
Maintenance: Minimal (awaiting activation decision)