1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# 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.
|