rss
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Viewing readonly version of main branch: v147View latest version
This is a newsletter aggregator built for Val Town with the following key components:
- feeds.json: Master configuration file containing feed definitions as
[normalizedKey, [categories], feedUrl, optionalDomain?]
- feed.cron.ts: Cron job that runs every 6 hours to fetch and cache RSS feeds via
RSSService.buildAndStore()
- services/rss.ts: Core RSS processing service that fetches, parses, and stores feed data
- http.ts: Main HTTP handler for serving the web interface
- frontend/app.tsx: Main React application component
- frontend/components/: Reusable UI components for filtering and display
- frontend/hooks/: Custom React hooks for data fetching and state management
- frontend/utils/: Utility functions for date formatting and data processing
- Cron job (
feed.cron.ts
) callsRSSService.buildAndStore()
every 6 hours - RSS service fetches feeds from URLs in
feeds.json
and stores processed data in Val Town blob storage - Frontend fetches cached data via
useAppData
hook and displays with filtering capabilities
- The main entry points are
feed.cron.ts
(cron job) andhttp.ts
(web handler) - Feed configuration is managed in
feeds.json
with the format:[normalizedKey, [categories], feedUrl, optionalDomain?]
- FilterContainer.tsx: Manages category and feed-based filtering UI
- TimeFilter.tsx: Handles time period selection (24h, 48h, 7d, etc.)
- ListingFilter.tsx: Controls feed-specific filtering
- CategoryFilter.tsx: Category-based filtering interface
- FeedsFilter.tsx: Individual feed selection controls
- Footer.tsx: Application footer component
- useAppData.ts: Manages RSS data fetching and state
- useFeedsConfig.ts: Handles feed configuration loading
- useTimePeriodFilter.ts: Time-based filtering logic
- useDateFormatting.ts: Date display utilities