diff options
| author | Peter Stone <thepeterstone@gmail.com> | 2026-03-22 23:45:19 +0000 |
|---|---|---|
| committer | Peter Stone <thepeterstone@gmail.com> | 2026-03-22 23:45:19 +0000 |
| commit | 8abc63efdbc0bb96cd6c9aa99d6e9166e0bcabae (patch) | |
| tree | f4d6a082eed9b10bc67436a3ca5188e0182961eb /IMPLEMENTOR.md | |
| parent | 11b905fd437d651b2e39745aa82a5dd36f70331e (diff) | |
chore: unify and centralize agent configuration in .agent/
Diffstat (limited to 'IMPLEMENTOR.md')
| -rw-r--r-- | IMPLEMENTOR.md | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/IMPLEMENTOR.md b/IMPLEMENTOR.md deleted file mode 100644 index ba77c2b..0000000 --- a/IMPLEMENTOR.md +++ /dev/null @@ -1,47 +0,0 @@ -# Implementation Plan: Timeline Feature - -## Phase 1: Database Layer (Store) -**Goal:** Enable fetching data by date range. - -1. **Update Interface:** Modify `internal/store/store.go` to add: - * `GetTasksByDateRange(start, end time.Time) ([]models.Task, error)` - * `GetMealsByDateRange(start, end time.Time) ([]models.Meal, error)` - * `GetCardsByDateRange(start, end time.Time) ([]models.Card, error)` -2. **Update Implementation:** Modify `internal/store/sqlite.go` to implement these methods using SQL queries. -3. **Test:** Create/Update `internal/store/store_test.go` to verify the queries work correctly. - -## Phase 2: Core Logic & Models -**Goal:** Aggregate and normalize data into a timeline structure. - -1. **Create Models:** Create `internal/models/timeline.go` with `TimelineItem` and `TimelineItemType`. -2. **Create Logic:** Create `internal/handlers/timeline_logic.go`. - * Implement `BuildTimeline(store Store, calendarClient *api.GoogleCalendarClient, start, end time.Time)`. - * **Logic:** - * Fetch Tasks, Meals, Cards from Store. - * Fetch Events from Calendar Client. - * Convert all to `TimelineItem`. - * **Apply Meal Defaults:** - * If `MealType` == "breakfast" -> Set time to 08:00 - * If `MealType` == "lunch" -> Set time to 12:00 - * If `MealType` == "dinner" -> Set time to 19:00 - * Else -> Set time to 12:00 - * Sort items by `Time`. -3. **Test:** Create `internal/handlers/timeline_logic_test.go` to test merging and sorting (TDD). - -## Phase 3: HTTP Handler & Routing -**Goal:** Expose the timeline via HTTP. - -1. **Create Handler:** Create `internal/handlers/timeline.go`. - * Inject `Store` and `GoogleCalendarClient`. - * Parse query params (`start`, `days`). - * Call `BuildTimeline`. - * Render template. -2. **Register Route:** Update `cmd/dashboard/main.go` to map `/timeline` to the new handler. - -## Phase 4: UI -**Goal:** Visualize the timeline. - -1. **Create Template:** Create `web/templates/partials/timeline-tab.html`. - * Iterate over items grouped by day. - * Show time, icon, title, and details. -2. **Update Main View:** Update `web/templates/index.html` to add the "Timeline" tab and HTMX trigger. |
