summaryrefslogtreecommitdiff
path: root/PROJECT_SUMMARY.md
diff options
context:
space:
mode:
Diffstat (limited to 'PROJECT_SUMMARY.md')
-rw-r--r--PROJECT_SUMMARY.md242
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