hoangsonww/AI-Gov-Content-Curator
View on GitHubEnable customizable topic subscriptions and real-time alerts
Open
#28 opened on Aug 6, 2025
backendci/cdcrawlerdocumentationenhancementfrontendgood first issuehelp wanted
Repository metrics
- Stars
- (29 stars)
- PR merge metrics
- (PR metrics pending)
Description
Description:
Currently SynthoraAI sends a single daily newsletter covering all articles. To improve relevance and engagement, allow users to subscribe to specific topics, keywords or sources and receive real-time alerts (via email and/or in-app/web notifications) when new matching articles are ingested.
Acceptance Criteria:
- Users can select one or more topics, keywords, or sources from the frontend “Preferences” or “Subscriptions” page.
- Subscriptions are persisted in the user profile (MongoDB).
- When the crawler/backend ingests a new article that matches a user’s subscription criteria, the system immediately enqueues a notification job.
- Notifications support both:
- Email: via existing Resend integration
- Web Push / In-app: via a new notifications endpoint and WebSocket or polling fallback
- Users can manage (add/remove) their subscriptions and toggle real-time vs. daily digest modes.
- All subscription and notification APIs are documented in Swagger.
Tasks:
- Add
Subscriptionschema in Mongoose (fields: userId, topics, keywords, sources, mode) - Build frontend “Subscriptions” UI: multi-select topics, keyword input, source checkboxes, mode toggle
- Create backend endpoints:
GET /api/subscriptionsPOST /api/subscriptionsPUT /api/subscriptions/:idDELETE /api/subscriptions/:id
- Extend crawler/backend ingestion pipeline to evaluate article metadata against active subscriptions and enqueue notification jobs
- Implement notification service:
- Email notifications via Resend
- Web Push / in-app notifications via Socket.io or polling
- Add notification preferences to user settings and persist choices
- Write Playwright and Jest tests for subscription flows, ingestion triggers, and notification delivery
- Update Swagger docs with new subscription & notification endpoints
Estimated Effort: ~2 sprints