summaryrefslogtreecommitdiff
path: root/README.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 /README.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 'README.md')
-rw-r--r--README.md197
1 files changed, 197 insertions, 0 deletions
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 <your-repo-url>
+ 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.