From 06c7485a7d05de86f9898e388161e8d932d5f3e6 Mon Sep 17 00:00:00 2001 From: Peter Stone Date: Mon, 12 Jan 2026 14:28:50 -1000 Subject: Modernize frontend with tabs, HTMX, and Tailwind build pipeline Complete UI overhaul implementing modern design patterns with HTMX for dynamic updates, proper Tailwind build pipeline, and improved UX. Build Pipeline: - Add npm + PostCSS + Tailwind CSS configuration - Custom design system with brand colors - Compiled CSS: 27KB (vs 3MB CDN), 99% reduction - Makefile for unified build commands - Inter font for improved typography Tab Interface: - Separate Tasks tab from Notes tab using HTMX - Partial page updates without full refreshes - Tab state management with proper refresh handling - New endpoints: /tabs/tasks, /tabs/notes, /tabs/refresh Template Architecture: - Modular partials system (7 reusable components) - Cleaner separation of concerns Empty Board Management: - Active boards in main 3-column grid - Empty boards in collapsible section - Reduces visual clutter Visual Design Enhancements: - Inter font, brand color accents - Improved typography hierarchy and spacing - Enhanced card styling with hover effects Co-Authored-By: Claude Sonnet 4.5 --- web/templates/partials/error-banner.html | 12 +++++ web/templates/partials/notes-tab.html | 22 +++++++++ web/templates/partials/obsidian-notes.html | 30 ++++++++++++ web/templates/partials/plantoeat-meals.html | 35 ++++++++++++++ web/templates/partials/tasks-tab.html | 22 +++++++++ web/templates/partials/todoist-tasks.html | 58 +++++++++++++++++++++++ web/templates/partials/trello-boards.html | 72 +++++++++++++++++++++++++++++ 7 files changed, 251 insertions(+) create mode 100644 web/templates/partials/error-banner.html create mode 100644 web/templates/partials/notes-tab.html create mode 100644 web/templates/partials/obsidian-notes.html create mode 100644 web/templates/partials/plantoeat-meals.html create mode 100644 web/templates/partials/tasks-tab.html create mode 100644 web/templates/partials/todoist-tasks.html create mode 100644 web/templates/partials/trello-boards.html (limited to 'web/templates/partials') diff --git a/web/templates/partials/error-banner.html b/web/templates/partials/error-banner.html new file mode 100644 index 0000000..eb4c08d --- /dev/null +++ b/web/templates/partials/error-banner.html @@ -0,0 +1,12 @@ +{{define "error-banner"}} +{{if .Errors}} +
+

Errors:

+
    + {{range .Errors}} +
  • {{.}}
  • + {{end}} +
+
+{{end}} +{{end}} diff --git a/web/templates/partials/notes-tab.html b/web/templates/partials/notes-tab.html new file mode 100644 index 0000000..526f387 --- /dev/null +++ b/web/templates/partials/notes-tab.html @@ -0,0 +1,22 @@ +{{define "notes-tab"}} +
+ + {{template "error-banner" .}} + + + {{if .Notes}} + {{template "obsidian-notes" .}} + {{else}} +
+ + + +

No notes found

+

+ Configure your Obsidian vault path in the settings to see your recent notes displayed here. +

+
+ {{end}} +
+{{end}} diff --git a/web/templates/partials/obsidian-notes.html b/web/templates/partials/obsidian-notes.html new file mode 100644 index 0000000..268a0fe --- /dev/null +++ b/web/templates/partials/obsidian-notes.html @@ -0,0 +1,30 @@ +{{define "obsidian-notes"}} +{{if .Notes}} +
+ +
+
+

Recent Notes

+
+ +
+ {{range .Notes}} +
+

{{.Title}}

+

{{.Content}}

+
+ {{.Modified.Format "Jan 2, 3:04 PM"}} + {{if .Tags}} +
+ {{range .Tags}} + #{{.}} + {{end}} +
+ {{end}} +
+
+ {{end}} +
+
+{{end}} +{{end}} diff --git a/web/templates/partials/plantoeat-meals.html b/web/templates/partials/plantoeat-meals.html new file mode 100644 index 0000000..78e403e --- /dev/null +++ b/web/templates/partials/plantoeat-meals.html @@ -0,0 +1,35 @@ +{{define "plantoeat-meals"}} +
+ +
+
+

Upcoming Meals

+
+ + {{if .Meals}} +
+ {{range .Meals}} +
+

{{.RecipeName}}

+
+ {{.Date.Format "Mon, Jan 2"}} + + {{.MealType}} + +
+
+ {{end}} +
+ {{else}} +
+ + + +

No meals planned

+

+ Schedule your meals to see them here. +

+
+ {{end}} +
+{{end}} diff --git a/web/templates/partials/tasks-tab.html b/web/templates/partials/tasks-tab.html new file mode 100644 index 0000000..5678193 --- /dev/null +++ b/web/templates/partials/tasks-tab.html @@ -0,0 +1,22 @@ +{{define "tasks-tab"}} +
+ + {{template "error-banner" .}} + + + {{template "trello-boards" .}} + + +
+ +
+ {{template "todoist-tasks" .}} +
+ + +
+ {{template "plantoeat-meals" .}} +
+
+
+{{end}} diff --git a/web/templates/partials/todoist-tasks.html b/web/templates/partials/todoist-tasks.html new file mode 100644 index 0000000..7595ac7 --- /dev/null +++ b/web/templates/partials/todoist-tasks.html @@ -0,0 +1,58 @@ +{{define "todoist-tasks"}} +
+ +
+
+

Todoist Tasks

+
+ + {{if .Tasks}} +
+ {{range .Tasks}} +
+ +
+

+ {{.Content}} +

+ {{if .Description}} +

{{.Description}}

+ {{end}} +
+ {{if .ProjectName}} + {{.ProjectName}} + {{end}} + {{if .DueDate}} + + Due: {{.DueDate.Format "Jan 2"}} + + {{end}} + {{range .Labels}} + {{.}} + {{end}} +
+
+ {{if .URL}} + + + + + + {{end}} +
+ {{end}} +
+ {{else}} +
+ + + +

No tasks found

+

+ All tasks completed or no tasks available. +

+
+ {{end}} +
+{{end}} diff --git a/web/templates/partials/trello-boards.html b/web/templates/partials/trello-boards.html new file mode 100644 index 0000000..bd460cf --- /dev/null +++ b/web/templates/partials/trello-boards.html @@ -0,0 +1,72 @@ +{{define "trello-boards"}} +{{if .Boards}} +
+ +
+
+

Trello Boards

+
+ + +
+ {{range .Boards}} + {{if .Cards}} +
+

{{.Name}}

+
+ {{range .Cards}} +
+

{{.Name}}

+
+ {{if .ListName}} + + {{.ListName}} + + {{end}} + {{if .DueDate}} + + Due: {{.DueDate.Format "Jan 2"}} + + {{end}} + {{if .URL}} + + View → + + {{end}} +
+
+ {{end}} +
+
+ {{end}} + {{end}} +
+ + +
+ + + Empty Boards + + + + + +
+
+ {{range .Boards}} + {{if not .Cards}} +
+

{{.Name}}

+

No cards

+
+ {{end}} + {{end}} +
+
+
+
+{{end}} +{{end}} -- cgit v1.2.3