diff --git a/README.md b/README.md index 9623dd6..983924f 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,46 @@ -# ClauDash - Personal Dashboard +# ClauDash - Personal AI Dashboard -## Description +## Project Overview +A local-only React application that aggregates data from multiple sources and uses Claude AI to generate a personalized daily briefing. Features a persistent chat interface and configurable data widgets. Give it sources to parse, and generate a summary of the news you care about. -ClauDash is a personal dashboard application that aggregates data from multiple sources and uses Claude AI to generate contextualized daily briefings. The application fetches data from configurable sources including Reddit APIs, RSS feeds, web pages, and weather services, then leverages Claude to create personalized summaries that track changes and follow up on stories over time. Features include intelligent caching to minimize API costs, an interactive chat interface, and customizable widget layouts. +## Main Features: +- Customizable daily briefing (tone, sources, length, etc) with optional vocalization (read-aloud) +- Changes since past briefings referenced in current briefing if relevant +- Claude cost and usage details for each briefing (Sonnet 4.5 = $.05-.10 avg per briefing, depending on sources used) +- Local storage of session information (no data sent to 3rd parties except Claude / open-meteo) +- Localized weather via open-meteo with charts +- Automatic parsing of news sources in JSON, XML, and RSS formats +- Automatic web scraping and summarization of new sources in web format (increases usage, YMMV) +- Customizable list of quick links +- Interactive Claude chat portal with briefing as context +- Light/Dark theme + +![Briefing](./claudash/screenshots/cl-briefing.png) +![Usage](./claudash/screenshots/cl-usage.png) +![Weather via OpenMeteo](./claudash/screenshots/cl-weather.png) +![News Feed](./claudash/screenshots/cl-feed-row.png) +![Web Source](./claudash/screenshots/cl-scraped.png) +![Chat](./claudash/screenshots/cl-chat.png) + +--- + +## Security Notes +Since this is only intended to run locally: +- ✅ API key in `.env.local` is safe (never deployed) +- ✅ localStorage data never leaves your machine +- ✅ All Claude API calls are direct (no third-party servers) +- ✅ Local proxy server included ## Tech Stack - -**Frontend** -- React 19 -- Material-UI 7 (MUI) -- Emotion (CSS-in-JS) -- Vite 4 - -**Backend** -- Express 5 (proxy server) -- Node.js +- React 18+ +- Material-UI (MUI) v5 + MUI-X Charts (free tier) +- Anthropic Claude API +- localStorage for persistence +- No backend required (runs entirely in browser) **APIs & Services** - Anthropic Claude API (claude-sonnet-4-5-20250929) -- Open-Meteo API (weather data) +- [Open-Meteo API](https://open-meteo.com/) (weather data) - RSS2JSON API (RSS feed parsing) **Storage** diff --git a/claudash/README.md b/claudash/README.md deleted file mode 100644 index 18bc70e..0000000 --- a/claudash/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# React + Vite - -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. - -Currently, two official plugins are available: - -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh - -## React Compiler - -The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation). - -## Expanding the ESLint configuration - -If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) for information on how to integrate TypeScript and [`typescript-eslint`](https://typescript-eslint.io) in your project. diff --git a/claudash/screenshots/cl-briefing.png b/claudash/screenshots/cl-briefing.png new file mode 100644 index 0000000..a748caf Binary files /dev/null and b/claudash/screenshots/cl-briefing.png differ diff --git a/claudash/screenshots/cl-chat.png b/claudash/screenshots/cl-chat.png new file mode 100644 index 0000000..51ffa8c Binary files /dev/null and b/claudash/screenshots/cl-chat.png differ diff --git a/claudash/screenshots/cl-feed-row.png b/claudash/screenshots/cl-feed-row.png new file mode 100644 index 0000000..9b918b7 Binary files /dev/null and b/claudash/screenshots/cl-feed-row.png differ diff --git a/claudash/screenshots/cl-scraped.png b/claudash/screenshots/cl-scraped.png new file mode 100644 index 0000000..fd46bf8 Binary files /dev/null and b/claudash/screenshots/cl-scraped.png differ diff --git a/claudash/screenshots/cl-usage.png b/claudash/screenshots/cl-usage.png new file mode 100644 index 0000000..2f63f38 Binary files /dev/null and b/claudash/screenshots/cl-usage.png differ diff --git a/claudash/screenshots/cl-weather.png b/claudash/screenshots/cl-weather.png new file mode 100644 index 0000000..b4631b3 Binary files /dev/null and b/claudash/screenshots/cl-weather.png differ