# 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) - `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 - [x] Create Todoist tasks - [x] 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.