Implemented RSS feeds, newsletter subscriptions, email templates, and admin UI to encourage repeat visits from self-selected visitors. ## RSS Feeds - Created RSS 2.0 feed generation (main + topic-specific) - Endpoints: /feed.xml and /feed/:topic.xml - Added getPublished() and getPublishedByTag() to BlogPost model ## Newsletter Subscriptions - Created reusable newsletter modal component - Added to index, researcher, implementer, leader pages - Interest selection: research, implementation, governance, project-updates - Added newsletter trigger button to footer - Uses existing /api/newsletter/subscribe endpoint ## Email Templates - Created comprehensive specifications for 4 newsletter tiers - Research Updates (monthly) - scholarly audience - Implementation Notes (bi-weekly) - practitioners - Governance Discussions (sporadic) - stakeholders - Project Updates (quarterly) - general audience - Documented template variables, design guidelines ## Admin UI - Enhanced newsletter management with "Send Newsletter" section - Tier selection, subject/preview input, JSON content editor - Preview/test/send buttons (UI ready, email service TBD) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
17 lines
497 B
JavaScript
17 lines
497 B
JavaScript
/**
|
|
* RSS Feed Routes
|
|
* Public feeds for blog content
|
|
*/
|
|
|
|
const express = require('express');
|
|
const router = express.Router();
|
|
const rssController = require('../controllers/rss.controller');
|
|
const { asyncHandler } = require('../middleware/error.middleware');
|
|
|
|
// Main RSS feed (all posts)
|
|
router.get('/feed.xml', asyncHandler(rssController.generateMainFeed));
|
|
|
|
// Topic-specific RSS feeds
|
|
router.get('/feed/:topic.xml', asyncHandler(rssController.generateTopicFeed));
|
|
|
|
module.exports = router;
|