summaryrefslogtreecommitdiff
path: root/PROJECT_SUMMARY.md
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-01-12 09:27:16 -1000
committerPeter Stone <thepeterstone@gmail.com>2026-01-12 09:27:16 -1000
commit9fe0998436488537a8a2e8ffeefb0c4424b41c60 (patch)
treece877f04e60a187c2bd0e481e80298ec5e7cdf80 /PROJECT_SUMMARY.md
Initial commit: Personal Consolidation Dashboard (Phase 1 Complete)
Implemented a unified web dashboard aggregating tasks, notes, and meal planning: Core Features: - Trello integration (PRIMARY feature - boards, cards, lists) - Todoist integration (tasks and projects) - Obsidian integration (20 most recent notes) - PlanToEat integration (optional - 7-day meal planning) - Mobile-responsive web UI with auto-refresh (5 min) - SQLite caching with 5-minute TTL - AI agent endpoint with Bearer token authentication Technical Implementation: - Go 1.21+ backend with chi router - Interface-based API client design for testability - Parallel data fetching with goroutines - Graceful degradation (partial data on API failures) - .env file loading with godotenv - Comprehensive test coverage (9/9 tests passing) Bug Fixes: - Fixed .env file not being loaded at startup - Fixed nil pointer dereference with optional API clients (typed nil interface gotcha) Documentation: - START_HERE.md - Quick 5-minute setup guide - QUICKSTART.md - Fast track setup - SETUP_GUIDE.md - Detailed step-by-step instructions - PROJECT_SUMMARY.md - Complete project overview - CLAUDE.md - Guide for Claude Code instances - AI_AGENT_ACCESS.md - AI agent design document - AI_AGENT_SETUP.md - Claude.ai integration guide - TRELLO_AUTH_UPDATE.md - New Power-Up auth process Statistics: - Binary: 17MB - Code: 2,667 lines - Tests: 5 unit + 4 acceptance tests (all passing) - Dependencies: chi, sqlite3, godotenv Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
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