# Task Dashboard ## Project Goals The Task Dashboard aims to provide a unified, single-pane-of-glass view of your daily obligations and resources. It aggregates data from multiple specialized tools into one streamlined interface, allowing you to: * **Centralize Information:** View tasks, notes, and meal plans from Todoist, Trello, Obsidian, and PlanToEat in one place. * **Increase Efficiency:** Quickly assess your day's priorities without context-switching between multiple applications. * **Facilitate Action:** Perform key actions like completing tasks and creating new items directly from the dashboard. ## Current Status The project is a functional web application built with Go. * **Backend:** Written in Go (1.21+), utilizing `chi` for routing. It features a clean architecture with decoupled service integrations. * **Frontend:** Server-side rendered HTML templates styled with Tailwind CSS. * **Integrations:** * **Todoist:** Full integration for fetching and managing tasks. * **Trello:** Integration for viewing and managing board cards. * **Obsidian:** Read-only access to local markdown notes. * **PlanToEat:** Retrieval of meal planning data. * **Storage:** SQLite is used for robust caching of external API responses to improve performance and reduce rate limiting. * **Entry Point:** The application entry point is located at `cmd/dashboard/main.go`. ## Future Plans * **Deepened Integrations:** Expand capabilities to include editing notes and more complex project management features. * **Interactive UI:** Enhance the frontend responsiveness and interactivity, potentially leveraging HTMX for dynamic updates without full page reloads. * **Resilience & Observability:** Improve error handling, logging, and metrics to ensure long-term reliability. ## Architectural Principles 1. **Aggregation:** The system is designed primarily as an aggregator, normalizing data from various external sources into a cohesive internal model (`DashboardData`). 2. **Decoupling:** External services are abstracted behind strict interfaces (`internal/api/interfaces.go`), allowing for easy substitution, testing, and mocking. 3. **Performance via Caching:** A heavy emphasis on caching (via SQLite) ensures the dashboard remains fast and responsive, even when external APIs are slow or unavailable. 4. **Simplicity:** The stack prefers simple, proven technologies (Go templates, Tailwind, SQLite) over complex single-page application frameworks to maintain ease of maintenance and deployment.