summaryrefslogtreecommitdiff
path: root/docs/proposed_readme.md
blob: 1fa9f97e8eb560fb336d1ef463109ec8bf223f3b (plain)
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.