diff --git a/README.md b/README.md index 9c5c26c..f27fd50 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Personal Dashboard (ClauDash) -A React-based personal dashboard application that generates AI-powered daily briefings using Claude (Anthropic). The app aggregates data from multiple configurable sources—including weather, news APIs, Reddit, Hacker News, and RSS feeds—and uses Claude to create personalized, conversational briefings that highlight what's interesting and track changes over time. Includes an interactive chat interface and intelligent caching to minimize API usage. +A React-based personal dashboard application that generates AI-powered daily briefings using Claude (Anthropic). The app aggregates data from multiple configurable sources—including weather, news APIs, Reddit, and RSS feeds—and uses Claude to create personalized, conversational briefings that highlight what's interesting and track changes over time. Includes an interactive chat interface and intelligent caching to minimize API usage. ## Quick Setup @@ -45,8 +45,8 @@ After cloning the repository, follow these steps to get started: The application consists of three main layers: 1. **Data Fetching Layer** (`src/services/dataFetcher.js`) - - Fetches data from configured sources (Reddit JSON APIs, Hacker News, RSS feeds, etc.) - - Retrieves weather information from wttr.in + - Fetches data from configured sources (Reddit JSON APIs, RSS feeds, etc.) + - Retrieves weather information using Open-Meteo API - Implements intelligent caching with configurable TTL to minimize API calls - Handles multiple data sources in parallel with graceful error handling @@ -104,10 +104,10 @@ npm run dev ### Source Parser The `sourceParser.js` service intelligently handles various data formats: -- **JSON APIs**: Reddit, Hacker News, custom JSON endpoints +- **JSON APIs**: Reddit, custom JSON endpoints - **RSS/XML Feeds**: Parses RSS feeds with full article content - **HTML Pages**: Uses Claude to extract and summarize web page content -- **Weather**: Standardizes wttr.in weather data into a consistent format +- **Weather**: Standardizes Open-Meteo weather data into a consistent format All sources are normalized into a common schema before being sent to Claude. @@ -130,7 +130,9 @@ The `storageService.js` handles all persistence with automatic cleanup of old da - **Token Tracking**: Real-time display of API usage and estimated costs - **Theme Support**: Toggle between light and dark themes - **Responsive Layout**: Flexible widget grid adapts to screen size -- **Weather Integration**: Location-based weather pulled from wttr.in +- **Weather Integration**: Location-based weather from Open-Meteo API (supports zip codes and city names) +- **Row-based Layout**: Configure widgets in multiple rows using JSON object format +- **Enhanced Reddit Display**: Shows post age, upvotes, comments, and optimized images - **Debug Mode**: Developer tools for testing and troubleshooting ## Configuration Options @@ -140,8 +142,8 @@ All configuration is done via environment variables in `.env.local`: | Variable | Description | Default | |----------|-------------|---------| | `REACT_APP_ANTHROPIC_API_KEY` | Your Anthropic API key (required) | - | -| `REACT_APP_LOCATION` | Location for weather | - | -| `REACT_APP_DATA_SOURCES` | Comma-separated URLs | Reddit & HN | +| `REACT_APP_LOCATION` | Location for weather (zip code or city name) | - | +| `REACT_APP_DATA_SOURCES` | JSON object for rows or comma-separated URLs | Reddit URLs | | `REACT_APP_CLAUDE_MODEL` | Claude model to use | claude-sonnet-4-5-20250929 | | `REACT_APP_CLAUDE_INSTRUCTIONS` | Custom briefing instructions | - | | `REACT_APP_REFRESH_INTERVAL` | Cache TTL in minutes | 15 | @@ -207,7 +209,7 @@ Set `REACT_APP_DEBUG_MODE=true` in `.env.local` to enable: - **API Costs**: The app displays token usage and estimated costs after each briefing generation. Typical briefings cost $0.02-0.05 depending on data source complexity. - **Caching**: Briefings are cached per day; use the refresh button to force a new generation. - **Custom Instructions**: Use `REACT_APP_CLAUDE_INSTRUCTIONS` to tailor briefing style (e.g., "Focus on tech news, be concise"). -- **Data Sources**: Reddit JSON endpoints (`/r/subreddit.json`) and Hacker News (`topstories.json`) work well. RSS feeds are also supported. +- **Data Sources**: Reddit JSON endpoints (`/r/subreddit.json`) work well. RSS feeds are also supported. Use JSON object format for row-based layouts: `{"row1":["url1","url2"],"row2":["url3","url4"]}` - **Clear Cache**: Use the trash icon button to clear all cached data and reset the app. ## License