diff options
Diffstat (limited to 'PROJECT_SUMMARY.md')
| -rw-r--r-- | PROJECT_SUMMARY.md | 242 |
1 files changed, 242 insertions, 0 deletions
diff --git a/PROJECT_SUMMARY.md b/PROJECT_SUMMARY.md new file mode 100644 index 0000000..de7cd00 --- /dev/null +++ b/PROJECT_SUMMARY.md @@ -0,0 +1,242 @@ +# Project Summary + +## What This Is + +A **unified personal dashboard** that aggregates your productivity data into one place: +- 📋 **Trello boards** (your primary task system) +- ✓ **Todoist tasks** +- 📝 **Obsidian notes** (optional) +- 🍽️ **PlanToEat meals** (optional) + +Plus a dedicated **AI agent API** for Claude.ai to access your data. + +## Current Status: ✅ Phase 1 Complete + +### What Works +- ✅ Trello integration (all boards + cards) +- ✅ Todoist integration (tasks + projects) +- ✅ Obsidian integration (20 most recent notes) +- ✅ PlanToEat integration (optional - API not public) +- ✅ Mobile-responsive web UI +- ✅ SQLite caching (5-min TTL) +- ✅ Auto-refresh (5 min) +- ✅ AI agent endpoint (`/api/claude/snapshot`) +- ✅ Full test coverage (9/9 tests passing) + +### Statistics +- **Binary size:** 17MB +- **Code:** 2,667 lines +- **Dependencies:** chi router, sqlite3, Go 1.21+ +- **Tests:** 5 unit tests, 4 acceptance tests + +## Quick Start + +### 1. Get API Keys (5 minutes) + +**Todoist:** +1. Go to https://todoist.com/app/settings/integrations +2. Copy API token + +**Trello:** +1. Go to https://trello.com/power-ups/admin +2. Create a Power-Up +3. Go to **API Key** tab → Generate new API key (NOT Secret!) +4. Follow "testing/for-yourself" instructions → Click **Token** link +5. Copy both API Key + Token + +### 2. Configure + +```bash +cp .env.example .env +# Edit .env: +TODOIST_API_KEY=your_todoist_token +TRELLO_API_KEY=your_trello_key +TRELLO_TOKEN=your_trello_token +``` + +### 3. Run + +```bash +go run cmd/dashboard/main.go +``` + +### 4. Open + +http://localhost:8080 + +**That's it!** 🎉 + +## Documentation + +- **[QUICKSTART.md](QUICKSTART.md)** - Get running in 5 minutes +- **[SETUP_GUIDE.md](SETUP_GUIDE.md)** - Detailed setup instructions +- **[AI_AGENT_SETUP.md](AI_AGENT_SETUP.md)** - Claude.ai integration guide +- **[CLAUDE.md](CLAUDE.md)** - For future Claude Code instances +- **[README.md](README.md)** - Full project documentation + +## Architecture + +### Request Flow +``` +Browser → chi Router → Handler + ↓ + Check SQLite Cache (5min TTL) + ↓ + Fresh? → Return cached data + Stale? → Fetch from APIs in parallel + ↓ + Trello + Todoist + Obsidian + PlanToEat + ↓ + Save to cache → Return data +``` + +### Key Files +``` +cmd/dashboard/main.go Entry point +internal/ + ├── api/ API clients + │ ├── trello.go Trello (PRIORITY) + │ ├── todoist.go Todoist tasks + │ ├── obsidian.go Markdown notes + │ └── plantoeat.go Meal planning + ├── handlers/ + │ ├── handlers.go Web handlers + │ └── ai_handlers.go AI endpoint + ├── middleware/ + │ └── ai_auth.go Bearer token auth + ├── config/config.go Environment config + └── store/sqlite.go Database ops +web/ + ├── templates/index.html Dashboard UI + └── static/ CSS/JS +``` + +## API Endpoints + +### Web Dashboard +- `GET /` - Main dashboard view +- `POST /api/refresh` - Force refresh all data +- `GET /api/tasks` - Tasks JSON +- `GET /api/notes` - Notes JSON +- `GET /api/meals` - Meals JSON +- `GET /api/boards` - Trello boards JSON + +### AI Agent +- `GET /api/claude/snapshot` - AI-optimized JSON + - Auth: `Authorization: Bearer <token>` + - Returns: tasks (today/overdue/week), meals (7 days), notes (10 recent), all Trello boards + +## What's Optional + +### Optional Features +- **PlanToEat:** API not publicly available - leave blank +- **Obsidian:** Only if you use Obsidian notes +- **AI Access:** Only if you want Claude.ai integration + +### Required Features +- **Todoist:** Yes - tasks integration +- **Trello:** Yes - your primary task system + +## Configuration + +All via `.env` file: + +```bash +# Required +TODOIST_API_KEY=... +TRELLO_API_KEY=... +TRELLO_TOKEN=... + +# Optional +OBSIDIAN_VAULT_PATH=/path/to/vault +AI_AGENT_API_KEY=... + +# Server (with defaults) +PORT=8080 +CACHE_TTL_MINUTES=5 +DEBUG=false +``` + +## Development + +### Run Tests +```bash +go test ./... +``` + +### Build Binary +```bash +go build -o dashboard cmd/dashboard/main.go +``` + +### Run with Live Reload +```bash +go install github.com/cosmtrek/air@latest +air +``` + +## For Claude.ai + +### Setup +1. Generate API key: `openssl rand -hex 32` +2. Add to `.env`: `AI_AGENT_API_KEY=...` +3. Share with Claude: + - URL: `http://localhost:8080/api/claude/snapshot` + - Token: (your key) + +### Usage Examples +- "What tasks do I have today?" +- "What's for dinner?" +- "Show me my overdue items" +- "What have I been working on?" + +Claude fetches your dashboard and answers naturally. + +## Troubleshooting + +### "TODOIST_API_KEY is required" +Make sure `.env` has all three required keys: +```bash +TODOIST_API_KEY=something +TRELLO_API_KEY=something +TRELLO_TOKEN=something +``` + +### "No boards showing" +- Check Trello credentials at https://trello.com/power-ups/admin +- Need **both** API key (from Power-Up's API Key tab) and token (click "Token" link) + +### "PlanToEat not working" +- Expected - API not public +- Just leave `PLANTOEAT_API_KEY` empty +- Dashboard works fine without it + +## What's Next + +### Phase 2 (Future) +- Create tasks via AI +- Mark tasks complete +- Quick note capture +- Create Trello cards + +### Phase 3 (Future) +- Unified search +- Daily digest +- PWA support +- Rate limiting for AI + +## License + +MIT License - personal use project + +## Support + +- Check logs: Terminal where you ran `go run cmd/dashboard/main.go` +- Test endpoints: `curl http://localhost:8080/api/tasks` +- Verify API keys: Try them directly in curl (see SETUP_GUIDE.md) + +--- + +**Built with:** Go 1.21+ • SQLite • chi router • Tailwind CSS • HTMX + +**Last Updated:** January 2026 |
