From 9fe0998436488537a8a2e8ffeefb0c4424b41c60 Mon Sep 17 00:00:00 2001 From: Peter Stone Date: Mon, 12 Jan 2026 09:27:16 -1000 Subject: 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 --- README.md | 197 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 197 insertions(+) create mode 100644 README.md (limited to 'README.md') diff --git a/README.md b/README.md new file mode 100644 index 0000000..ae05263 --- /dev/null +++ b/README.md @@ -0,0 +1,197 @@ +# Personal Consolidation Dashboard + +A unified web dashboard that aggregates tasks, notes, and meal planning from multiple services into a single interface. + +## Features + +- **Task Management**: View and manage Todoist tasks +- **Notes**: Access recent Obsidian notes +- **Meal Planning**: View upcoming meals from PlanToEat +- **Responsive Design**: Works on desktop and mobile +- **Auto-refresh**: Updates every 5 minutes +- **Caching**: Fast performance with SQLite cache + +## Tech Stack + +- **Backend**: Go 1.21+ +- **Database**: SQLite +- **Frontend**: HTMX + Tailwind CSS +- **APIs**: Todoist, PlanToEat, Trello, Obsidian (filesystem) + +## Prerequisites + +- Go 1.21 or higher +- API keys for: + - [Todoist](https://todoist.com/app/settings/integrations) - **Required** + - [Trello](https://trello.com/app-key) - **Required** (generates both API key and token) + - [PlanToEat](https://www.plantoeat.com/) - **Optional** (API not publicly available) + - Obsidian vault path - **Optional** (if using Obsidian) + +## Installation + +### Quick Start (5 minutes) + +See **[QUICKSTART.md](QUICKSTART.md)** for the fastest way to get running. + +### Detailed Setup + +1. **Clone the repository**: + ```bash + git clone + cd task-dashboard + ``` + +2. **Install dependencies**: + ```bash + go mod download + ``` + +3. **Set up environment variables**: + ```bash + cp .env.example .env + ``` + +4. **Get your API keys**: + + **Todoist** (required): + - Go to https://todoist.com/app/settings/integrations + - Copy your API token + + **Trello** (required): + - Go to https://trello.com/power-ups/admin + - Create a Power-Up (any name, e.g., "Personal Dashboard") + - Go to "API Key" tab and click "Generate a new API Key" + - Copy the API Key (NOT the Secret - you won't use that) + - In the API Key description, find the "testing/for-yourself" instructions + - Click the Token link to generate your personal token + - Click "Allow" and copy the token + - **Note:** You need API Key + Token, NOT Secret + +5. **Edit `.env`** with your keys: + ```bash + TODOIST_API_KEY=your_todoist_token + TRELLO_API_KEY=your_trello_key + TRELLO_TOKEN=your_trello_token + ``` + +6. **Run the application**: + ```bash + go run cmd/dashboard/main.go + ``` + + Migrations run automatically on startup. + +7. **Open your browser**: + Navigate to `http://localhost:8080` + +## Configuration + +All configuration is done through environment variables. See `.env.example` for all available options. + +### Required Variables + +- `TODOIST_API_KEY`: Your Todoist API token (Settings → Integrations → API token) +- `TRELLO_API_KEY`: Your Trello API key (https://trello.com/app-key) +- `TRELLO_TOKEN`: Your Trello token (generate at https://trello.com/app-key) + +### Optional Variables + +- `OBSIDIAN_VAULT_PATH`: Path to your Obsidian vault +- `PLANTOEAT_API_KEY`: PlanToEat API key (not publicly available - leave empty) +- `AI_AGENT_API_KEY`: For Claude.ai access (generate with `openssl rand -hex 32`) +- `PORT`: Server port (default: 8080) +- `CACHE_TTL_MINUTES`: Cache duration (default: 5) +- `DEBUG`: Enable debug logging (default: false) + +## Project Structure + +``` +task-dashboard/ +├── cmd/dashboard/ # Application entry point +├── internal/ +│ ├── api/ # External API clients +│ ├── config/ # Configuration management +│ ├── handlers/ # HTTP request handlers +│ ├── models/ # Data models +│ └── store/ # Database operations +├── web/ +│ ├── static/ # CSS and JavaScript +│ └── templates/ # HTML templates +└── migrations/ # Database migrations +``` + +## Development + +### Running Tests + +```bash +go test ./... +``` + +### Running with Live Reload + +```bash +# Install air for live reload +go install github.com/cosmtrek/air@latest + +# Run with air +air +``` + +### Building for Production + +```bash +go build -o dashboard cmd/dashboard/main.go +./dashboard +``` + +## API Endpoints + +### Dashboard +- `GET /` - Main dashboard view + +### API Routes +- `GET /api/tasks` - Get all tasks (JSON) +- `GET /api/notes` - Get recent notes (JSON) +- `GET /api/meals` - Get upcoming meals (JSON) +- `POST /api/refresh` - Force refresh all data + +## Roadmap + +### Phase 1: Read-Only Aggregation (Current) +- [x] Project setup +- [ ] Display Todoist tasks +- [ ] Display Obsidian notes +- [ ] Display PlanToEat meals +- [ ] Responsive UI + +### Phase 2: Write Operations +- [ ] Create Todoist tasks +- [ ] Mark tasks complete +- [ ] Create Obsidian notes +- [ ] Add meals to planner + +### Phase 3: Enhancements +- [ ] Unified search +- [ ] Quick capture +- [ ] Daily digest +- [ ] PWA support + +## Troubleshooting + +### Database locked error +If you see "database is locked", ensure only one instance of the application is running. + +### API rate limits +The app caches responses for 5 minutes. If you need fresh data, use the refresh button. + +### Obsidian notes not showing +Verify `OBSIDIAN_VAULT_PATH` points to the correct directory and the application has read permissions. + +## Contributing + +This is a personal project, but suggestions and bug reports are welcome via issues. + +## License + +MIT License - feel free to use this for your own personal dashboard. -- cgit v1.2.3