From d5a99df90c5b96b2b50d22d9eeb6598966efb985 Mon Sep 17 00:00:00 2001 From: Michael Villalba Sotelo Date: Sun, 12 Apr 2026 01:23:13 -0600 Subject: [PATCH 1/4] docs(themis): define product direction and prompts --- docs/README.md | 2 +- docs/products/README.md | 8 +- .../00_overview.md | 8 +- .../01_prd.md | 4 +- .../02_architecture.md | 2 +- .../03_workflow.md | 2 +- .../04_agent-integration.md | 4 +- .../05_ux-model.md | 2 +- .../06_delivery-plan.md | 2 +- .../themis-task-system/07_visual-discovery.md | 360 ++++++++++++++++++ .../08_stitch-dashboard-prompt.md | 61 +++ .../09_stitch-auth-prompts.md | 59 +++ 12 files changed, 500 insertions(+), 14 deletions(-) rename docs/products/{task-system => themis-task-system}/00_overview.md (91%) rename docs/products/{task-system => themis-task-system}/01_prd.md (95%) rename docs/products/{task-system => themis-task-system}/02_architecture.md (99%) rename docs/products/{task-system => themis-task-system}/03_workflow.md (98%) rename docs/products/{task-system => themis-task-system}/04_agent-integration.md (96%) rename docs/products/{task-system => themis-task-system}/05_ux-model.md (99%) rename docs/products/{task-system => themis-task-system}/06_delivery-plan.md (98%) create mode 100644 docs/products/themis-task-system/07_visual-discovery.md create mode 100644 docs/products/themis-task-system/08_stitch-dashboard-prompt.md create mode 100644 docs/products/themis-task-system/09_stitch-auth-prompts.md diff --git a/docs/README.md b/docs/README.md index e14337b..a4fcc06 100644 --- a/docs/README.md +++ b/docs/README.md @@ -14,5 +14,5 @@ Documentation in this repository is organized by concern. - `architecture/monolith-contact-architecture.md` - `architecture/turso-env.md` -- `products/task-system/01_prd.md` +- `products/themis-task-system/01_prd.md` - `redesign/projects.md` diff --git a/docs/products/README.md b/docs/products/README.md index d0bcea3..2443a69 100644 --- a/docs/products/README.md +++ b/docs/products/README.md @@ -4,4 +4,10 @@ This directory contains product concepts, PRDs, architecture notes, and supporti ## Current Product Areas -- `task-system/` - PRDs and architecture exploration for the structured developer-friendly task system +- `themis-task-system/` - PRDs and architecture exploration for Themis, the structured developer-friendly task system + +## Notable Docs + +- `themis-task-system/07_visual-discovery.md` - first-pass visual direction, screen priorities, and design guidance for Themis +- `themis-task-system/08_stitch-dashboard-prompt.md` - Google Stitch prompt for the Themis main dashboard visual exploration +- `themis-task-system/09_stitch-auth-prompts.md` - Google Stitch prompt for Themis sign-in diff --git a/docs/products/task-system/00_overview.md b/docs/products/themis-task-system/00_overview.md similarity index 91% rename from docs/products/task-system/00_overview.md rename to docs/products/themis-task-system/00_overview.md index f5f143d..8d00f8e 100644 --- a/docs/products/task-system/00_overview.md +++ b/docs/products/themis-task-system/00_overview.md @@ -1,8 +1,8 @@ -# Task System Overview +# Themis Overview -## Working Name +## Product Name -Structured Task System +Themis ## Core Problem @@ -19,7 +19,7 @@ Typical friction points: ## Product Intent -Build a simpler, developer-friendly task system that behaves more like a structured operational database than a traditional project management suite. +Build Themis as a simpler, developer-friendly task system that behaves more like a structured operational database than a traditional project management suite. The system should make it easy to: diff --git a/docs/products/task-system/01_prd.md b/docs/products/themis-task-system/01_prd.md similarity index 95% rename from docs/products/task-system/01_prd.md rename to docs/products/themis-task-system/01_prd.md index ab15e94..d1dde76 100644 --- a/docs/products/task-system/01_prd.md +++ b/docs/products/themis-task-system/01_prd.md @@ -1,8 +1,8 @@ -# PRD: Structured Task System +# PRD: Themis ## Goal -Create a task system that reduces friction in defining, documenting, updating, and executing work. +Create Themis, a task system that reduces friction in defining, documenting, updating, and executing work. The system should feel lightweight enough for daily use, but structured enough to support project management discipline and AI-assisted execution. diff --git a/docs/products/task-system/02_architecture.md b/docs/products/themis-task-system/02_architecture.md similarity index 99% rename from docs/products/task-system/02_architecture.md rename to docs/products/themis-task-system/02_architecture.md index 08ea31b..8af4446 100644 --- a/docs/products/task-system/02_architecture.md +++ b/docs/products/themis-task-system/02_architecture.md @@ -1,4 +1,4 @@ -# Architecture Proposal +# Architecture Proposal: Themis ## Recommended Direction diff --git a/docs/products/task-system/03_workflow.md b/docs/products/themis-task-system/03_workflow.md similarity index 98% rename from docs/products/task-system/03_workflow.md rename to docs/products/themis-task-system/03_workflow.md index 0c80b42..661ffea 100644 --- a/docs/products/task-system/03_workflow.md +++ b/docs/products/themis-task-system/03_workflow.md @@ -1,4 +1,4 @@ -# Workflow Design +# Workflow Design: Themis ## Desired Workflow diff --git a/docs/products/task-system/04_agent-integration.md b/docs/products/themis-task-system/04_agent-integration.md similarity index 96% rename from docs/products/task-system/04_agent-integration.md rename to docs/products/themis-task-system/04_agent-integration.md index e5a0b46..89415f3 100644 --- a/docs/products/task-system/04_agent-integration.md +++ b/docs/products/themis-task-system/04_agent-integration.md @@ -1,4 +1,4 @@ -# Agent Integration Model +# Agent Integration Model: Themis ## Why Agents Matter Here @@ -69,7 +69,7 @@ Example shape: "requirements": ["capture summary", "capture blocker", "capture next step"], "acceptanceCriteria": ["updates render chronologically", "new updates save without page reload"], "dependencies": ["task detail API"], - "references": ["/docs/products/task-system/03_workflow.md"], + "references": ["/docs/products/themis-task-system/03_workflow.md"], "latestUpdate": { "summary": "API shape is ready.", "nextStep": "Implement frontend composer." diff --git a/docs/products/task-system/05_ux-model.md b/docs/products/themis-task-system/05_ux-model.md similarity index 99% rename from docs/products/task-system/05_ux-model.md rename to docs/products/themis-task-system/05_ux-model.md index fe5c06e..7d06524 100644 --- a/docs/products/task-system/05_ux-model.md +++ b/docs/products/themis-task-system/05_ux-model.md @@ -1,4 +1,4 @@ -# UX Model +# UX Model: Themis ## UX Goal diff --git a/docs/products/task-system/06_delivery-plan.md b/docs/products/themis-task-system/06_delivery-plan.md similarity index 98% rename from docs/products/task-system/06_delivery-plan.md rename to docs/products/themis-task-system/06_delivery-plan.md index 901144a..a240374 100644 --- a/docs/products/task-system/06_delivery-plan.md +++ b/docs/products/themis-task-system/06_delivery-plan.md @@ -1,4 +1,4 @@ -# Delivery Plan +# Delivery Plan: Themis ## Suggested Phases diff --git a/docs/products/themis-task-system/07_visual-discovery.md b/docs/products/themis-task-system/07_visual-discovery.md new file mode 100644 index 0000000..776bcd0 --- /dev/null +++ b/docs/products/themis-task-system/07_visual-discovery.md @@ -0,0 +1,360 @@ +# Visual Discovery: Themis + +## Purpose + +This document translates the current Themis product docs into an initial visual direction for the first design explorations. + +It is based on: + +- `00_overview.md` +- `01_prd.md` +- `02_architecture.md` +- `03_workflow.md` +- `04_agent-integration.md` +- `05_ux-model.md` +- `06_delivery-plan.md` +- `../../branding/personal-brand-prompt.md` + +## Design Reading Of The Product + +The product is not a generic project management dashboard. + +It is a structured work surface for defining, clarifying, and executing tasks with low cognitive load. + +The UI therefore needs to communicate: + +- calm control instead of activity theater +- clarity of definition before execution +- structured operational data instead of chat-like chaos +- lightweight daily use without losing rigor +- human and agent readability from the same source of truth + +## Core Visual Thesis + +Recommended direction for the first visuals: + +**Operational notebook with system-grade structure.** + +This means: + +- editorial calm in spacing and typography +- interface rigor in layout, labels, status, and field grouping +- very limited accent color usage +- low chrome and low decoration +- repeated simple components instead of many custom surfaces + +The product should feel closer to a precise workspace than a management dashboard. + +## Product Personality + +The visual language should feel: + +- deliberate +- exact +- quiet +- modern +- technical without looking like a developer toy + +It should not feel: + +- playful +- crowded +- enterprise-heavy +- colorful by default +- like a generic SaaS template + +## Recommended Visual Direction + +### Direction A: Operational Notebook + +This is the recommended primary route for first mockups. + +Characteristics: + +- bright or softly tinted neutral canvas +- dense information, but with strong whitespace rhythm +- large, clear task titles +- mono metadata rows for status, owner, initiative, dates, and labels +- section blocks with calm separators instead of card overload +- timeline-like update history with concise operational entries + +Why it fits: + +- aligns with the "focused operational notebook" goal +- supports reading and writing equally well +- keeps the task detail view as the core screen +- avoids looking like backlog software from the last decade + +### Direction B: Structured Control Surface + +Good secondary exploration. + +Characteristics: + +- darker neutral surfaces or stronger contrast panels +- more explicit status rails and data grouping +- slightly more console-like density +- stronger use of mono and technical labels + +Risk: + +- can become too tool-like or cold +- may over-emphasize engineering aesthetics over clarity + +### Direction C: Editorial Planner + +Good for marketing or overview screens, but not the best default for V1 app screens. + +Characteristics: + +- more typography-led compositions +- broader spacing +- softer, more narrative layout rhythm + +Risk: + +- may under-serve dense daily operational use + +## First Screens To Design + +### 1. Inbox / Triage + +Goal: + +- turn captured work into defined work quickly + +Must visually emphasize: + +- missing definition markers +- task title and summary +- status and priority at scan speed +- lightweight bulk review rhythm + +Recommended composition: + +- compact top quick-create composer +- filter row below +- vertical list of tasks with definition completeness signal +- right-side preview panel on desktop optional, stacked on mobile + +### 2. Task Detail + +Goal: + +- become the single source of truth for one task + +This should be the first high-fidelity screen. + +Must visually emphasize: + +- title, summary, and current status immediately +- progressive definition sections +- visible scope boundaries +- requirements and acceptance criteria as structured lists +- updates and decisions as durable history +- next step as a first-class operational field + +Recommended composition: + +- persistent header with title, status, priority, owner +- primary content column for definition and updates +- secondary rail for metadata, linked items, completeness, dependencies +- update composer visually separated, but always easy to reach + +### 3. Today View + +Goal: + +- show active execution without backlog noise + +Must visually emphasize: + +- ready +- in progress +- blocked +- stale + +Recommended composition: + +- sectional grouping by execution state +- very concise task rows or compact cards +- age of latest update as a key signal + +### 4. Initiative View + +Goal: + +- show grouped work without losing task clarity + +This can stay lower priority for visual exploration round one. + +## Information Hierarchy Rules + +### Level 1 + +- task title +- task status +- current next step + +### Level 2 + +- summary +- problem +- expected outcome +- scope in / scope out + +### Level 3 + +- requirements +- acceptance criteria +- decisions +- update history +- links and relationships + +### Metadata Layer + +- owner +- priority +- initiative +- labels +- timestamps +- agent/human attribution + +The interface should make the difference between core task meaning and supporting metadata obvious at a glance. + +## Core Components For First Visuals + +Keep the component vocabulary intentionally small: + +- page header +- quick-create composer +- filter bar +- task row +- compact status badge +- completeness indicator +- section block +- checklist list +- update composer +- update timeline item +- decision item +- metadata rail block + +This directly follows the existing UX guidance to reuse a small number of components repeatedly. + +## Layout Principles + +- mobile first +- one strong reading column by default +- second column only when it reduces scrolling or improves scan speed +- use separation by spacing, rules, and typography before using filled cards +- avoid nested panel stacks where possible +- preserve a stable layout between read and edit states + +## Draft Visual System Direction + +### Color + +- neutral-first palette +- one restrained accent for interactive or active states +- one warning tone for blockers and missing definition +- status colors should be muted, not saturated + +Suggested posture: + +- background: warm-neutral or cool-neutral, but not pure marketing white +- surfaces: subtle elevation difference only where needed +- text: strong contrast for titles, softer contrast for metadata + +### Typography + +- sans-serif for primary reading +- monospace for metadata, ids, labels, timestamps, and system signals +- bigger task titles than a typical dashboard +- clear distinction between section heading, field label, and body copy + +### Spacing + +- generous outer spacing +- tight internal rhythm for structured lists +- section spacing should communicate task stages clearly + +### Shape + +- low to medium corner radius +- avoid overly rounded playful components +- borders should do more work than shadows + +### Motion + +- quick and subtle +- used mainly for state changes, panel reveals, and save feedback +- no decorative transitions + +## Screen-Specific Notes + +### Inbox / Triage + +- completeness should be visible before opening the task +- missing fields should read as guidance, not error states +- row density should support scanning many items quickly + +### Task Detail + +- problem and outcome should feel like anchor sections near the top +- scope in and scope out should appear as a paired block +- requirements and acceptance criteria should be easy to scan and edit inline +- updates need chronological clarity, not chat bubbles + +### Update Composer + +Use a compact structured pattern: + +- what changed +- blocker +- next step + +This composer should feel operational and fast, closer to a system input than a comment box. + +## Anti-Patterns To Avoid + +- colorful kanban-board aesthetics as the main product identity +- excessive cards inside cards +- heavy left navigation plus crowded top bars plus multiple side panels +- status colors carrying too much meaning alone +- oversized analytics widgets in V1 +- chat-style updates that hide structure +- decorative gradients and startup-marketing polish + +## Recommended First Mockup Sequence + +1. Task detail desktop +2. Task detail mobile +3. Inbox / triage desktop +4. Today view desktop +5. Quick-create interaction states + +Reason: + +The task detail screen is the product's center of gravity. Once that screen is visually solved, the surrounding views can inherit its system. + +## Design Decisions Already Supported By Existing Docs + +- The task detail view is the core screen. +- The UI must stay calmer than typical PM software. +- The product should avoid noisy dashboard patterns. +- Structure should be visible by default. +- Quick capture and quick updates are core workflows. +- Agent-readable data should remain legible to humans. + +## Open Questions Before Hi-Fi Design + +1. Should the first visual exploration lean light mode first, dark mode first, or both in parallel? +2. Should initiatives be visually present in the first round, or deferred behind task-first screens? +3. How prominent should agent-oriented actions be in V1 compared with human-only flows? +4. Should the first version optimize more for solo usage density or for future team readability? + +## Recommendation + +Start with **Operational Notebook** as the main direction and design the **Task Detail** screen first. + +That path is the closest match to the current PRD, workflow, and UX model. It gives us a clear visual center, keeps the interface calm, and avoids drifting into generic project-management patterns too early. diff --git a/docs/products/themis-task-system/08_stitch-dashboard-prompt.md b/docs/products/themis-task-system/08_stitch-dashboard-prompt.md new file mode 100644 index 0000000..91e2f00 --- /dev/null +++ b/docs/products/themis-task-system/08_stitch-dashboard-prompt.md @@ -0,0 +1,61 @@ +# Google Stitch Prompt: Main Dashboard + +## Purpose + +This prompt is for the first visual exploration of Themis in Google Stitch. + +Scope is intentionally limited to the **main dashboard screen only**. + +It should align with: + +- `05_ux-model.md` +- `07_visual-discovery.md` + +## Stitch Prompt + +Idea +A main dashboard screen for Themis, a structured project management app built for software engineers, technical leads, and solo builders. The product helps users define tasks clearly, track execution with low friction, and keep scope, requirements, decisions, and updates visible in one calm operational workspace. + +Theme +Operational notebook with system-grade structure. Calm, precise, modern, and technically mature. Neutral-first palette with restrained accent color. Typography-led layout. High signal-to-noise ratio. Clean spacing, subtle borders, low decoration, and a premium product feel. Avoid generic SaaS dashboard patterns, playful visuals, colorful kanban aesthetics, heavy analytics widgets, decorative gradients, and crowded enterprise UI. + +Content +Design only the main dashboard screen for daily work overview. + +Include: +- a top page header with the Themis brand or workspace label, global search, and a primary quick-create action +- a compact quick-create composer near the top for adding a task with title, short summary, and optional initiative +- a filter and view control row for status, priority, owner, and blocked state +- a main overview area focused on active work, with clear sections for Ready, In Progress, Blocked, and Stale tasks +- task items that show title, short summary, status, priority, owner, latest update age, and definition completeness +- visible markers for missing definition such as missing scope, missing requirements, or missing acceptance criteria +- a secondary side panel or summary rail on desktop for operational signals such as next step, blockers, recent decisions, and task counts +- a calm, structured layout that feels fast to scan and easy to act on + +The screen should feel like: +- a focused operational notebook +- a developer-native control surface +- a lightweight but rigorous task workspace + +The screen should not feel like: +- a noisy enterprise dashboard +- a chat workspace +- a generic startup PM template + +Interaction and layout notes: +- desktop-first composition for the mockup, but keep the layout realistic for responsive behavior +- use one strong primary content area and one lighter secondary rail +- prioritize readability and structure over decorative visuals +- make status and completeness visible at scan speed +- keep cards and panels minimal; use spacing, typography, and dividers before heavy containers + +## Short Stitch Prompt + +Idea +A main dashboard for Themis, a structured task system that helps engineers and technical leads manage active work with clarity, low cognitive load, and structured execution tracking. + +Theme +Calm operational notebook. Neutral palette, restrained accents, typography-led hierarchy, subtle borders, low visual noise, and a technically mature product feel. Avoid generic SaaS dashboard styling. + +Content +Create one main dashboard screen only. Include a top header, quick-create composer, filter row, and main task overview grouped into Ready, In Progress, Blocked, and Stale sections. Each task item should show title, summary, status, priority, owner, latest update age, and completeness markers. Add a secondary summary rail for blockers, next steps, recent decisions, and lightweight metrics. diff --git a/docs/products/themis-task-system/09_stitch-auth-prompts.md b/docs/products/themis-task-system/09_stitch-auth-prompts.md new file mode 100644 index 0000000..930905f --- /dev/null +++ b/docs/products/themis-task-system/09_stitch-auth-prompts.md @@ -0,0 +1,59 @@ +# Google Stitch Prompt: Sign In + +## Purpose + +This prompt is for the sign-in screen of Themis. + +They intentionally avoid repeating the full visual-system guidance already defined in: + +- `07_visual-discovery.md` +- `08_stitch-dashboard-prompt.md` + +Use the existing product design direction and design system context. + +Scope is intentionally limited to **one screen only** so Stitch can produce a more controlled result. + +## Stitch Prompt + +Idea +A sign-in screen for Themis, a structured project management app used by software engineers, technical leads, and solo builders. + +Content +Create a sign-in screen with: +- Themis brand at the top +- a clear heading and one short supporting sentence +- email field +- password field +- show/hide password control +- primary sign-in button +- secondary link to create an account +- forgot password link +- optional remember me control +- a subtle area for validation and error messages +- a calm, balanced form layout centered on the page +- realistic spacing for desktop and mobile + +The screen should feel focused, calm, exact, and efficient. + +Avoid: +- marketing sections +- testimonial blocks +- feature grids +- social sign-in options unless explicitly needed +- split-screen illustrations unless they are extremely subtle +- crowded layouts or too many competing actions + +Layout guidance: +- one primary form card or panel only +- strong visual hierarchy with the heading, fields, and primary action +- supporting actions should stay visually secondary +- keep the composition minimal and easy to scan +- prioritize form clarity over decoration + +## Short Stitch Prompt + +Idea +A sign-in screen for Themis. + +Content +Create one sign-in screen only. Include the Themis brand, a heading, short supporting text, email field, password field, show or hide password control, remember me option, forgot password link, primary sign-in button, create account link, and a subtle area for validation or error messages. Keep the layout centered, calm, minimal, and highly structured. Avoid marketing content, extra panels, or crowded UI. From cffb240ff9986f8a3d11b81ffef56ab172761a55 Mon Sep 17 00:00:00 2001 From: Michael Villalba Sotelo Date: Sun, 12 Apr 2026 02:56:46 -0600 Subject: [PATCH 2/4] docs(themis): capture approved visual directions --- docs/products/README.md | 4 +- .../themis-task-system/05_ux-model.md | 27 +- .../themis-task-system/07_visual-discovery.md | 51 ++- .../08_stitch-landing-page-prompt.md | 194 +++++++++++ .../09_stitch-auth-prompts.md | 41 ++- ...rompt.md => 10_stitch-dashboard-prompt.md} | 38 +++ .../11_stitch-projects-overview-prompt.md | 103 ++++++ .../assets/landing-page-dark.html | 316 ++++++++++++++++++ .../assets/landing-page-dark.png | Bin 0 -> 42800 bytes .../assets/landing-page.html | 312 +++++++++++++++++ .../assets/landing-page.png | Bin 0 -> 29303 bytes .../assets/projects-overview.html | 268 +++++++++++++++ .../assets/projects-overview.png | Bin 0 -> 64204 bytes .../assets/themis-sign-in.html | 164 +++++++++ .../assets/themis-sign-in.png | Bin 0 -> 9537 bytes 15 files changed, 1505 insertions(+), 13 deletions(-) create mode 100644 docs/products/themis-task-system/08_stitch-landing-page-prompt.md rename docs/products/themis-task-system/{08_stitch-dashboard-prompt.md => 10_stitch-dashboard-prompt.md} (75%) create mode 100644 docs/products/themis-task-system/11_stitch-projects-overview-prompt.md create mode 100644 docs/products/themis-task-system/assets/landing-page-dark.html create mode 100644 docs/products/themis-task-system/assets/landing-page-dark.png create mode 100644 docs/products/themis-task-system/assets/landing-page.html create mode 100644 docs/products/themis-task-system/assets/landing-page.png create mode 100644 docs/products/themis-task-system/assets/projects-overview.html create mode 100644 docs/products/themis-task-system/assets/projects-overview.png create mode 100644 docs/products/themis-task-system/assets/themis-sign-in.html create mode 100644 docs/products/themis-task-system/assets/themis-sign-in.png diff --git a/docs/products/README.md b/docs/products/README.md index 2443a69..2eb2c89 100644 --- a/docs/products/README.md +++ b/docs/products/README.md @@ -9,5 +9,7 @@ This directory contains product concepts, PRDs, architecture notes, and supporti ## Notable Docs - `themis-task-system/07_visual-discovery.md` - first-pass visual direction, screen priorities, and design guidance for Themis -- `themis-task-system/08_stitch-dashboard-prompt.md` - Google Stitch prompt for the Themis main dashboard visual exploration +- `themis-task-system/08_stitch-landing-page-prompt.md` - Google Stitch prompt for the Themis landing page exploration - `themis-task-system/09_stitch-auth-prompts.md` - Google Stitch prompt for Themis sign-in +- `themis-task-system/10_stitch-dashboard-prompt.md` - Google Stitch prompt for the Themis main dashboard visual exploration +- `themis-task-system/11_stitch-projects-overview-prompt.md` - Google Stitch prompt for the preferred Themis projects-first main screen exploration diff --git a/docs/products/themis-task-system/05_ux-model.md b/docs/products/themis-task-system/05_ux-model.md index 7d06524..8db6cf9 100644 --- a/docs/products/themis-task-system/05_ux-model.md +++ b/docs/products/themis-task-system/05_ux-model.md @@ -16,7 +16,26 @@ Not closer to: ## Primary Views -### 1. Inbox / Triage View +### 1. Projects View + +Purpose: + +- give a strong first impression +- orient the user across multiple active projects +- make it easy to enter the right workstream before looking at individual tasks + +Should show: + +- project name +- short project summary +- current health or momentum signal +- task counts by execution state +- notable blocker or next-step signal +- recent activity age + +This should become the recommended first screen. + +### 2. Inbox / Triage View Purpose: @@ -31,7 +50,7 @@ Should show: - owner - missing definition markers -### 2. Task Detail View +### 3. Task Detail View Purpose: @@ -50,7 +69,7 @@ Should show: This is the core screen. -### 3. Today View +### 4. Today View Purpose: @@ -63,7 +82,7 @@ Should show: - blocked tasks - stale tasks with no recent update -### 4. Initiative View +### 5. Initiative View Purpose: diff --git a/docs/products/themis-task-system/07_visual-discovery.md b/docs/products/themis-task-system/07_visual-discovery.md index 776bcd0..0595a2c 100644 --- a/docs/products/themis-task-system/07_visual-discovery.md +++ b/docs/products/themis-task-system/07_visual-discovery.md @@ -117,7 +117,44 @@ Risk: ## First Screens To Design -### 1. Inbox / Triage +## Screen Order For Documentation And Review + +Use this sequence when reviewing or presenting the current Themis visual explorations: + +1. Landing Page +2. Sign In +3. Dashboard +4. Projects Overview + +The initial dashboard exploration confirmed an important risk: when Themis starts from active-task density, the first impression drifts toward an overloaded PM tool. + +Because the user may be managing many projects at the same time, the first screen should orient around projects first, then drill into tasks. + +### 1. Projects Overview + +Goal: + +- give an immediate sense of control across multiple active projects +- create a stronger first impression than a dense task dashboard +- help the user enter the correct workstream quickly + +Must visually emphasize: + +- project name and concise summary +- current health or momentum +- active task counts by state +- most important next step or blocker +- recent activity signal + +Recommended composition: + +- strong page heading and short workspace context +- vertical or masonry-like list of project blocks +- each project block should feel like a calm operational briefing, not a KPI card +- each block should allow quick entry into project detail or active tasks +- optional light sidebar for cross-project signals only if it stays quiet + +### 2. Inbox / Triage Goal: @@ -137,13 +174,13 @@ Recommended composition: - vertical list of tasks with definition completeness signal - right-side preview panel on desktop optional, stacked on mobile -### 2. Task Detail +### 3. Task Detail Goal: - become the single source of truth for one task -This should be the first high-fidelity screen. +This should be the second high-fidelity screen after projects overview. Must visually emphasize: @@ -161,7 +198,7 @@ Recommended composition: - secondary rail for metadata, linked items, completeness, dependencies - update composer visually separated, but always easy to reach -### 3. Today View +### 4. Today View Goal: @@ -180,7 +217,7 @@ Recommended composition: - very concise task rows or compact cards - age of latest update as a key signal -### 4. Initiative View +### 5. Initiative View Goal: @@ -355,6 +392,6 @@ The task detail screen is the product's center of gravity. Once that screen is v ## Recommendation -Start with **Operational Notebook** as the main direction and design the **Task Detail** screen first. +Start with **Operational Notebook** as the main direction and design the **Projects Overview** screen first. -That path is the closest match to the current PRD, workflow, and UX model. It gives us a clear visual center, keeps the interface calm, and avoids drifting into generic project-management patterns too early. +That path gives Themis a stronger first impression, reflects the reality of managing multiple concurrent projects, and reduces the risk of the product looking like another crowded task dashboard. After that, design the **Task Detail** screen as the operational center of gravity. diff --git a/docs/products/themis-task-system/08_stitch-landing-page-prompt.md b/docs/products/themis-task-system/08_stitch-landing-page-prompt.md new file mode 100644 index 0000000..11afde8 --- /dev/null +++ b/docs/products/themis-task-system/08_stitch-landing-page-prompt.md @@ -0,0 +1,194 @@ +# Google Stitch Prompt: Landing Page + +## Purpose + +This prompt is for the first public-facing landing page exploration of Themis in Google Stitch. + +It should communicate what Themis is, why it exists, and why it feels different from overloaded project management tools. + +It should align with: + +- `00_overview.md` +- `05_ux-model.md` +- `07_visual-discovery.md` + +## Stitch Prompt + +Idea +A landing page for Themis, a calm and structured project management app for software engineers, technical leads, and solo builders who manage many projects at the same time. + +Theme +Calm, precise, and technically mature. Editorial structure mixed with subtle system-interface cues. Neutral-first palette, restrained accents, strong typography, generous spacing, and low visual noise. Avoid generic startup landing page patterns, decorative gradients, playful illustrations, bright SaaS marketing colors, and noisy dashboard mockups. + +Content +Create one landing page for Themis. + +Include: +- a clean header with Themis wordmark, simple navigation, and one primary call to action +- a hero section with a concise headline, short supporting copy, and a product preview area +- messaging that positions Themis as a calmer way to manage multiple projects and structured execution +- a section explaining the main product value: clarity, low cognitive load, project-first organization, and structured task definition +- a product preview section that highlights projects overview as the main entry screen +- a second product preview or feature section that shows task detail as the operational center of gravity +- a short section on how Themis differs from typical noisy PM software +- a final call to action section + +Suggested content direction: +- focus on clarity over busyness +- emphasize multiple concurrent projects +- show that Themis helps users move from project context into clear task execution +- speak in calm, direct, structured language + +The page should feel like: +- a premium product introduction +- a system built for focused technical work +- a serious but modern product + +The page should not feel like: +- a startup marketing template +- a page full of feature cards and badges +- a generic PM landing page +- a sales-heavy SaaS homepage + +Layout guidance: +- strong hero with clear message and one visual anchor +- sections with breathing room and clear hierarchy +- use product previews that feel believable and restrained +- avoid overloading the page with too many features at once +- show confidence through structure, not decoration + +## Short Stitch Prompt + +Idea +A landing page for Themis. + +Content +Create one landing page for Themis, a calm and structured project management app for engineers and technical leads managing many projects at once. Include a clean header, a strong hero with concise copy and a product preview, a section explaining the core value of clarity and low cognitive load, a product preview focused on projects overview, a second preview focused on task detail, a short comparison section showing how Themis differs from noisy PM software, and a final call to action. Keep the design minimal, premium, technically mature, and far away from generic startup SaaS styling. + +## Current Exploration + +### Approved Screen + +![Landing page refined exploration](./assets/landing-page-refined.png) + +### Alternate Light Screen + +![Landing page simplified exploration](./assets/landing-page-simplified.png) + +### Alternate Dark Screen + +![Landing page dark exploration](./assets/landing-page-dark.png) + +### Exported Assets + +- Approved screenshot: `./assets/landing-page-refined.png` +- Approved HTML export: `./assets/landing-page-refined.html` +- Approved Stitch screen: `Themis Landing Page Refined` +- Approved Stitch screen ID: `b13d3a79cf504f64be7250dec3addaae` +- Alternate light screenshot: `./assets/landing-page-simplified.png` +- Alternate light HTML export: `./assets/landing-page-simplified.html` +- Alternate light Stitch screen: `Themis Landing Page (Simplified)` +- Alternate light Stitch screen ID: `c2bc1d2d7ec344cebac3002d8ac46716` +- Alternate dark screenshot: `./assets/landing-page-dark.png` +- Alternate dark HTML export: `./assets/landing-page-dark.html` +- Alternate dark Stitch screen: `Themis Landing Page (Dark)` +- Alternate dark Stitch screen ID: `03e9700517ab4fe697fc2f4ae187f8df` + +## Review + +The landing page direction is now approved. + +The refined light version is the main baseline for Themis. The simplified version remains a useful alternate reference for clarity, and the dark version is a strong variant for future branding exploration. + +### Approved Qualities + +1. the hero is clear and product-focused +2. the overall structure explains Themis quickly +3. the product previews feel more aligned with the approved internal screens +4. the features section is more specific and less generic +5. the page feels calm, premium, and believable +6. the dark variant extends the system without losing the product tone + +### What To Preserve + +1. clear hero promise +2. simple product explanation +3. product-grounded feature language +4. alignment with approved projects and auth directions +5. restrained, technically mature visual tone + +### Documentation Status + +- status: approved baseline direction +- approved light variant: `Themis Landing Page Refined` +- alternate light variant: `Themis Landing Page (Simplified)` +- alternate dark variant: `Themis Landing Page (Dark)` + +### Recommended Structure + +1. Header +2. Hero with one clear promise and one product preview +3. Short explanation of the problem Themis solves +4. Projects Overview product preview +5. Task Detail product preview +6. Simple closing CTA + +### Recommended Copy Direction + +Prefer: + +- `Project management with less noise.` +- `Themis helps you manage multiple projects with clarity.` +- `See projects clearly. Define tasks properly. Keep execution visible.` +- `Built for engineers and technical leads managing parallel work.` +- `Projects, not chaos.` +- `Tasks with definition.` +- `Progress with signal.` + +Avoid: + +- `command center` +- `technical manuscript` +- `ledger architecture` +- `stakeholder velocity` +- `enterprise scale` +- `system is different` + +## Refined Prompt For Next Stitch Pass + +Idea +A landing page for Themis. + +Theme +Calm, direct, and product-focused. Minimal, premium, and technically mature. Neutral palette, restrained accents, strong typography, and low visual noise. Avoid sounding like an infrastructure platform, manifesto, or startup marketing site. + +Content +Create one landing page for Themis, a project management app for engineers and technical leads who manage multiple projects at the same time. + +Include: +- a simple header with Themis, a few normal navigation links, and one primary call to action +- a hero with a very clear headline, one short supporting paragraph, and a product preview based on the approved Projects Overview screen +- a short section explaining the problem: most PM tools create too much noise and make multi-project work harder to manage +- a three-part features or value section, but make it specific to Themis rather than generic marketing language +- a product section focused on Projects Overview as the main entry point +- a product section focused on Task Detail as the place where work becomes clearly defined and execution stays visible +- a short closing CTA + +Use simple, direct language. + +Avoid: +- conceptual platform language +- invented metrics and analytics widgets +- infrastructure-heavy copy +- manifesto-style sections +- generic feature cards or generic value statements +- fake dashboard complexity +- waitlist marketing language + +Layout guidance: +- keep the page shorter and more focused than the current version +- make the hero explain the product quickly +- use the real approved product directions as previews +- make the features section feel product-specific and concrete +- emphasize product clarity over atmosphere +- make the page feel believable, useful, and easy to understand in under one minute diff --git a/docs/products/themis-task-system/09_stitch-auth-prompts.md b/docs/products/themis-task-system/09_stitch-auth-prompts.md index 930905f..64d4868 100644 --- a/docs/products/themis-task-system/09_stitch-auth-prompts.md +++ b/docs/products/themis-task-system/09_stitch-auth-prompts.md @@ -7,7 +7,7 @@ This prompt is for the sign-in screen of Themis. They intentionally avoid repeating the full visual-system guidance already defined in: - `07_visual-discovery.md` -- `08_stitch-dashboard-prompt.md` +- `10_stitch-dashboard-prompt.md` Use the existing product design direction and design system context. @@ -57,3 +57,42 @@ A sign-in screen for Themis. Content Create one sign-in screen only. Include the Themis brand, a heading, short supporting text, email field, password field, show or hide password control, remember me option, forgot password link, primary sign-in button, create account link, and a subtle area for validation or error messages. Keep the layout centered, calm, minimal, and highly structured. Avoid marketing content, extra panels, or crowded UI. + +## Current Exploration + +### Screen + +![Themis sign-in exploration](./assets/themis-sign-in.png) + +### Exported Assets + +- Screenshot: `./assets/themis-sign-in.png` +- HTML export: `./assets/themis-sign-in.html` +- Approved Stitch screen: `Themis Sign In (Simplified)` +- Approved Stitch screen ID: `c8ad8798d7d047d184b696eb3cbfd096` + +## Review + +The sign-in direction is now approved for Themis. + +### Approved Qualities + +- the neutral palette is aligned with Themis +- the single-column composition is correct +- the overall restraint avoids generic SaaS auth patterns +- the input styling language fits the product system +- the page feels calm, exact, and product-focused +- the composition is tight enough to keep sign-in fast and clear + +### What To Preserve + +1. a single-column centered layout +2. one quiet primary form panel +3. plain language and straightforward field labels +4. limited secondary actions +5. minimal decoration and no extra marketing sections + +### Documentation Status + +- status: approved direction +- use this screen as the auth baseline for future sign-up, recovery, and verification screens diff --git a/docs/products/themis-task-system/08_stitch-dashboard-prompt.md b/docs/products/themis-task-system/10_stitch-dashboard-prompt.md similarity index 75% rename from docs/products/themis-task-system/08_stitch-dashboard-prompt.md rename to docs/products/themis-task-system/10_stitch-dashboard-prompt.md index 91e2f00..b2928bd 100644 --- a/docs/products/themis-task-system/08_stitch-dashboard-prompt.md +++ b/docs/products/themis-task-system/10_stitch-dashboard-prompt.md @@ -59,3 +59,41 @@ Calm operational notebook. Neutral palette, restrained accents, typography-led h Content Create one main dashboard screen only. Include a top header, quick-create composer, filter row, and main task overview grouped into Ready, In Progress, Blocked, and Stale sections. Each task item should show title, summary, status, priority, owner, latest update age, and completeness markers. Add a secondary summary rail for blockers, next steps, recent decisions, and lightweight metrics. + +## Current Exploration + +### Screen + +![Operational Dashboard exploration](./assets/operational-dashboard.png) + +### Exported Assets + +- Screenshot: `./assets/operational-dashboard.png` +- HTML export: `./assets/operational-dashboard.html` + +### Review Notes + +What is working well: + +- strong visual hierarchy +- calm neutral palette +- clear active-work grouping +- good scanability for task rows +- the overall system tone feels close to Themis + +What is not working well enough: + +- the screen still feels too overloaded for a first impression +- too many simultaneous control points make it drift toward a familiar PM dashboard pattern +- task density dominates too early before the user is oriented across projects + +What to preserve in later iterations: + +- the dashboard structure +- the restrained color usage +- the dense but readable task summaries +- the balance between overview and utility panels + +Recommended conclusion: + +Use this exploration as a reference for tone and component language, but move the next main-screen exploration to a **Projects Overview** entry screen instead of another task-heavy dashboard. diff --git a/docs/products/themis-task-system/11_stitch-projects-overview-prompt.md b/docs/products/themis-task-system/11_stitch-projects-overview-prompt.md new file mode 100644 index 0000000..7330966 --- /dev/null +++ b/docs/products/themis-task-system/11_stitch-projects-overview-prompt.md @@ -0,0 +1,103 @@ +# Google Stitch Prompt: Projects Overview + +## Purpose + +This prompt is for the next main-screen exploration of Themis in Google Stitch. + +It replaces the task-heavy dashboard as the preferred first impression. + +It should align with: + +- `05_ux-model.md` +- `07_visual-discovery.md` + +## Stitch Prompt + +Idea +A projects overview screen for Themis, a structured project and task management app for software engineers, technical leads, and solo builders who manage many projects at the same time. + +Theme +Calm operational notebook. Precise, modern, and technically mature. Neutral-first palette, restrained accents, strong typography, low visual noise, and minimal chrome. Avoid generic SaaS dashboard patterns, heavy KPI panels, crowded kanban layouts, colorful status overload, and enterprise control-room aesthetics. + +Content +Design one projects overview screen only. + +Include: +- a top page header with the Themis brand or workspace label, search, and one primary create action +- a short page heading that communicates this is the cross-project workspace +- a projects list or grid for multiple active projects +- each project block should show project name, concise summary, current status or momentum, task counts by state, one notable next step or blocker, and recent activity age +- each project block should include a clear path into the project without feeling like a dense dashboard card +- light filtering or sorting for status, owner, or recency +- a restrained secondary rail only if it adds calm cross-project context such as stale projects, major blockers, or recent decisions + +The screen should feel like: +- a clear entry point into multiple parallel workstreams +- a calm operational briefing +- a premium, structured product workspace + +The screen should not feel like: +- a task board +- a noisy analytics dashboard +- a grid of generic SaaS cards +- a PM admin console + +Layout guidance: +- prioritize projects over tasks +- give each project enough breathing room to feel important +- use typography and spacing before borders and filled cards +- keep the page easy to scan in under 10 seconds +- reduce secondary controls and avoid overcrowding the header + +## Short Stitch Prompt + +Idea +A projects overview screen for Themis. + +Content +Create one projects overview screen only for Themis. Show multiple active projects in a calm, structured layout with strong first-impression clarity. Include a top header, search, one primary create action, and a list or grid of project blocks. Each project should show its name, short summary, task counts by state, one important blocker or next step, and recent activity age. Keep the screen minimal, premium, and easy to scan. Avoid dense task dashboards, heavy analytics, and generic SaaS card grids. + +## Current Exploration + +### Screen + +![Projects Overview exploration](./assets/projects-overview.png) + +### Exported Assets + +- Screenshot: `./assets/projects-overview.png` +- HTML export: `./assets/projects-overview.html` +- Current Stitch screen: `Projects Overview (Utilitarian)` +- Current Stitch screen ID: `122fc46a33464f72a9391d72014a28b2` + +## Review + +The projects overview direction is now aligned for Themis. This utilitarian version is the right baseline for the product. + +### Approved Qualities + +- projects-first entry is still the right product decision +- clear orientation across multiple active projects +- project-level grouping is stronger than task-first entry +- the visual treatment is calmer and more believable +- repeated structure makes the page easier to scan +- the screen feels more useful than decorative + +### What To Preserve + +1. projects-first entry point +2. repeated project-block structure +3. restrained hierarchy and low visual noise +4. concise project summaries with operational signals +5. utilitarian tone over visual novelty + +### What To Watch In Future Iterations + +1. do not drift back into card variation or dashboard metrics +2. keep decorative ideas secondary to readability +3. preserve the utilitarian calm as more features are introduced + +### Documentation Status + +- status: approved baseline direction +- use this screen as the baseline for future project-level navigation and landing-page product previews diff --git a/docs/products/themis-task-system/assets/landing-page-dark.html b/docs/products/themis-task-system/assets/landing-page-dark.html new file mode 100644 index 0000000..213df60 --- /dev/null +++ b/docs/products/themis-task-system/assets/landing-page-dark.html @@ -0,0 +1,316 @@ + + + + + +Themis | The Technical Manuscript + + + + + + + + +
+ +
+

+ Clarity for complex execution. +

+

+ Themis is a technical ledger designed for leads who manage multiple concurrent workstreams without the noise of generic project management tools. +

+
+ + +
+
+ +
+
+
+
+
+

Projects Overview

+

Operational briefing for active workstreams

+
+
+search +notifications +
+person +
+
+
+
+
+ +
+
+
+

Project Alpha

+

System-wide migration of the legacy auth modules.

+
+Active +
+
+
+
+
+
+Technical Distribution +12 Ready / 4 In Progress +
+
+
+ +
+
+
+

Infrastructure Core

+

Provisioning new GPU clusters in the Western Node.

+
+Stale +
+
+ Awaiting hardware allocation from Cluster 4 +
+
+
+
+
+
Major Blockers
+
+
+
+

Memory Leak: Neural Edge

+
+
+
+

API Latency Spike: Core

+
+
+
+
+
Recent Decisions
+
+

Approved Project Alpha schema transition.

+

Deprioritized Hardware Provisioning for Q4.

+
+
+
+
+
+
+
+ +
+
+
+
+

Projects, not chaos.

+

See every active project, current state, and next point of attention in one place.

+
+
+

Tasks with definition.

+

Keep scope, requirements, decisions, and next steps attached to the work itself.

+
+
+

Progress with signal.

+

Track what changed, what is blocked, and what comes next without status-noise overhead.

+
+
+
+
+ +
+
+
Execution
+

Task Detail: The center of gravity.

+

+ Most tools bury technical context in comments. Themis treats documentation, spec links, and status markers as first-class citizens in a focused, distraction-free view. +

+
+
+data_object +Scope and Requirements Definition +
+
+description +Direct Status and Decision Tracking +
+
+
+
+
+
+TASK-442 / OPS +
+
+In Progress +
+
+

API Rate Limiter Implementation

+

+ Implement token bucket algorithm for the edge gateway to prevent upstream saturation during peak traffic. +

+
+
+
+link +Technical Spec +
+v2.1 FINAL +
+
+
+verified +Security Review +
+Passed +
+
+
+ +
+
+
+ +
+
+
+

Engineered for teams who ship.

+
+
+
+

Focused on State

+

+ Generic tools prioritize social chatter. We prioritize technical state and execution velocity. No fluff, no distractions. +

+
+
+

Relational Ledger

+

+ While other tools break at scale, our ledger architecture maintains integrity and performance for complex dependency trees. +

+
+
+
+
+ +
+
+

Ready for structural clarity?

+

Join technical leads who prioritize execution over noise.

+
+ + +
+
+
+
+ + \ No newline at end of file diff --git a/docs/products/themis-task-system/assets/landing-page-dark.png b/docs/products/themis-task-system/assets/landing-page-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..08f8bb7b8e9c914553b1976f964c59e0211bc132 GIT binary patch literal 42800 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 + + + + +Themis | The Technical Manuscript + + + + + + + + + + +
+ +
+Engineering Command Center +

+ Clarity for complex execution. +

+

+ Themis is a technical ledger designed for leads who manage multiple concurrent workstreams without the noise of generic project management tools. +

+
+ + +
+
+ +
+
+
+
+
+
+

Active Infrastructure Ledger

+
+
+search +filter_list +
+
+
+ +
+
+
+

Project Delta

+

Distributed Node Migration

+
+84% COMPLETE +
+
+
+
+
+
+24 Tasks Pending +Deployment Window: Oct 12 +
+
+
+
+
+

Resource Allocation

+

Latency Overhead

+
+
12ms
+
+
+

Recent Activity

+
+
+
+

Merged PR #1290 into main

+
+
+
+

Architecture review completed by @jake

+
+
+
+
+
+

Stakeholder Velocity

+Q3 Comparison +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+filter_center_focus +

Signal over Noise

+

+ Automated filters suppress trivial notifications, surfacing only high-impact decisions and technical blockers that require lead intervention. +

+
+
+account_tree +

Structural Rigor

+

+ Built on a relational ledger architecture. Tasks aren't just rows; they are interconnected nodes with strict dependency tracking. +

+
+
+layers +

Operational Calm

+

+ A neutral, editorial interface designed to reduce cognitive load during 12-hour high-concurrency development cycles. +

+
+
+
+ +
+
+

Task Detail as the
Center of Gravity

+

+ Most tools bury technical context in comments. Themis treats documentation, spec links, and status markers as first-class citizens in a focused, distraction-free view. +

+
    +
  • +check_circle + Inline Technical Specification Rendering +
  • +
  • +check_circle + Direct Link to Version Control PRs +
  • +
  • +check_circle + Automated Completeness Checklists +
  • +
+
+
+
+
+TASK-442 / OPS +
+
+IN PROGRESS +
+
+

API Rate Limiter Implementation

+

+ Implement token bucket algorithm for the edge gateway to prevent upstream saturation during peak traffic. +

+
+
+Technical Spec +link +
+
+Security Review +verified +
+
+
+ +
+
+
+ +
+
+
+

Why the System is Different

+
+
+
+

Not a "Social" Tool

+

+ Generic tools prioritize "likes" and chatter. We prioritize technical state and execution velocity. No fluff, no distractions. +

+
+
+

Designed for Concurrency

+

+ While other tools break at 50+ tasks, our ledger architecture maintains performance and clarity at enterprise scale. +

+
+
+
+
+ +
+
+

Ready for structural clarity?

+ +

Current Waitlist: 12 Business Days

+
+
+
+ + + \ No newline at end of file diff --git a/docs/products/themis-task-system/assets/landing-page.png b/docs/products/themis-task-system/assets/landing-page.png new file mode 100644 index 0000000000000000000000000000000000000000..4ce279544dd83bddb8c78c426f2dd46efd27b91b GIT binary patch literal 29303 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 literal 0 HcmV?d00001 diff --git a/docs/products/themis-task-system/assets/projects-overview.html b/docs/products/themis-task-system/assets/projects-overview.html new file mode 100644 index 0000000..27d4ab1 --- /dev/null +++ b/docs/products/themis-task-system/assets/projects-overview.html @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + +
+
+
+
+search + +
+
+
+ + +
+ +User profile +
+
+
+
+

Projects Overview

+

Active technical ledger for Q4 initiatives.

+
+
+
+
+
+
+

Core Infrastructure Migration

+Active +
+

Transitioning legacy databases to distributed cloud architecture with zero downtime requirements.

+
+42 Tasks +0 Blocked +Updated 45m ago +
+
+
+

Next Step

+

Finalize validation scripts for staging environment sync.

+
+
+
+
+
+
+
+

Security Audit Framework

+Blocked +
+

Automated compliance mapping for international data protection standards across all microservices.

+
+18 Tasks +3 Blocked +Updated 2h ago +
+
+
+

Primary Blocker

+

Awaiting legal clearance for third-party scanning tool integration.

+
+
+
+
+
+
+
+

DevOps Pipeline Refactor

+Stale +
+

Optimizing CI/CD build times by implementing advanced caching and parallel test execution.

+
+12 Tasks +0 Blocked +Updated 5d ago +
+
+
+

Next Step

+

Assign secondary reviewer for pipeline-as-code definitions.

+
+
+
+
+
+
+
+

API Documentation Engine

+Active +
+

Generating real-time interactive developer documentation from live OpenAPI specifications.

+
+31 Tasks +0 Blocked +Updated 1h ago +
+
+
+

Next Step

+

Integrate with authentication middleware for private endpoints.

+
+
+
+
+
+
+
+

Frontend Component Library

+Active +
+

Standardizing UI patterns across internal tools using a centralized, theme-able CSS framework.

+
+54 Tasks +0 Blocked +Updated 15m ago +
+
+
+

Next Step

+

Export final design system tokens for mobile engineering team.

+
+
+
+
+
+ +
+
+
+ \ No newline at end of file diff --git a/docs/products/themis-task-system/assets/projects-overview.png b/docs/products/themis-task-system/assets/projects-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..cacf3a7cf6ae652b4d45be4c728c74a0d52c5a01 GIT binary patch literal 64204 zcmb@tWmHt(8$WtT2P6hT8U#VQLqc*?y1To(yBRvAk&>2{?iLV+kd_t@kd|(^=li?s zzt(+mU)&e>4KruWVa}etpS_>w6HkV_5ohr);;@ko$$TzxdmEn+c9&Ut!T=4Yb`@fS(7hw{IwHkL`f497WXEDNQ=0xmFc=3?_mP9u(RTJQS1hY+4H4rHd*sz49H%jtO&2M{@gf@qkQiMiOqEQOJai2P>SRr&J^_H!Hoj zQu?vruIst>H1izjGxe#ZhRZU|FVU?iug#2{Aop|7yx|Ym!Gj&-Lx3K#C<5(j#x}RXXZgOAu5%5^6$RvUU_H z`>AkH9CCva+$%r@hq|<`ob12)`i3C|A3$)VW_cLgpOg8%yLEWjoIZ%mx&EX^)^x0_ zcXB2gP)CqLyLxuNbn6;8HRt~KgFg-&8uasdcbDsX%cu9v`ufM0SEzl}PCU>}!H0b4 z&{F89JOiQ4e#yYI4aeifpF1K15bwfTg}|>XL>>E6XHEP#3VVTH)!FG^z(7a8gmZCTu2vq0m_ZXqW*_qHmWcL*6N2!B{R zdGKkg&Q&$pK0#l!w1{ec_tMSnLarj?o5k6s67A>oRF7j(gTR~M_HAJ&Nf{Lr`-k4) z%^`=idUnR%jy-nVA7*u$q7SEyk^wIu=&W?A(&DQ$j{ZqsG~&zMVv|+v1d|_&)p;Ea zbDjfUe`Ea3E#7maEe3jNd+~=S2SZ^V1Xu@0B;jRc)wy>!J28Z8S}jJs%M+ru*46?_ zntYx|J6xG|Msmb?y%epHPwc687fAyeIWpBsel(}nXoD?ZzZhM7ZmgKA=Kkwu)k6b? zHR#y8)KyjNgC~*;e-38r@-eQ}ENQFW(b)|r9m($Qq!tVPyCn-*m5SK~?M!7hbU>*> ztyMs~Rtw9NlSWvWFlKveTjI5{IMnCvc82L?KZpDnE82~B*p0VO&YT&S4KHc9@gK}q z6>rjJ`Yo(y$Uz&nH7@8-uFvVjG1qm^ONO$8Pm^GcFb&QU2$kFAcNgbKgR?rkC^jZ|@dTb-fMl|FL(UJVTagJvcu07pyYrD=Hvk z8cbkjWcj(@AnY+z?Rc<7f!jA79_m4q+J2*2$l?*>K?}z*(ZWD_KEkL!cRkFDirw9xfq_q*v3ae;K#my(4Iwra1K>aR&%$AZx#@&u9789) zMoQlcu)f(e$`q@Zz$!5a)0Zf4Bvq2^C#_frH`Qd`0N-l5MJH|IJ`@H4jXEEjS(Frr zsNkO%cCf?smB)iHAkM2|Kkc|eKCK#uiyx2bV#V$mK5UMWS!mpwi@$+LYC8P#xi~mO zH8zvI`NWJ4PzUXVS+3n)ulqWzw6)vlSx;7X@*31!JsI5m+Y()VPE4@bGGyrgv_E&` z-Q9&EuBNWq+-|(uq_1xN<|9jJ-L$IVqu1l{ahv(&sOzQLap1;I^TX|$;~N{bLKaa% zOfy5DX3kQrl7Cz-Tchs+i)|JH{~>TCQ?Hjs#lX$5YACwDJ3mCs+h0_35zh2<8sls} z;Jk(2&moh#H%R8dz{nPGa597@o+0XZH2vh)Yx47WrS5Ul+i?7|`+Arw+d{V~H(;b_ z-#N6O$?L!OW`6mbU2jMFn$Pk4)hZfbb?jcL)pgL-e)RVWJ-Jd~PtCQZb3OUyIeV_~ zotC;ZecG`RIwmz0DhJjkE^5Q)Cutc}V+Qhg2~&%D4AX;4FBS_|9?~r@gNjL`SaYsS zhG>-*hG?$L*iG*+z17Ku;>oY_5`_c|CI=qv_*HZ9gX@WKFl*Tx1SE z{O1nt3~!U&a^vyI&Hm$E#8Lz4#X;tDILU(;By|0oMinKgB$(0<+AWLTU}4e1TV8X9 z!d8i*t<3GTpzd66e>|5aH8*7VT(0W-nzIu&NJXoEZR%&raeBSABTpi_-68tGz4TRD zh4~JqOcEj}K=$&(KA-OsHjd-Oy9u4x@L)`Tcp^*#8Sx@SXvM0BYp(K5AGXGge9&Er3$QXI@l zac~>m`!8CaP^i!6caHo|7d$`q&}70eZXOLvdw!${GSis0R-;210`6aRi$VM)kvJk5 z*rgV}K}QyptGaP%se7|OCyj7K?(hR*CIuJ4hAWOdnW)MDkReA`zfh@C5hp&=Fv}XM~2F!iI3Vw-gX>3=P=R7w(OHXI-0=e$LcsC$Z zjXbZXOOZhj4_5Nh^+){U`chxYCoHVrw%tMu1VMjacvAzGiaD5IRMbzX2XtB;^}U(< zzzm2He9T*;A0q>Rg2>|d)y`*rb+_ zQo}e#QJ%tc7j6Q)O=Y(G7qIy9CnUfKIk&?(ZD>c59ubH^Z6ssRrcp?uMiyH;V79k+ z=ymQm0iID60Pqfd`C+%_>9|Z()QU4R+_7SP4zR%`@7OUsF4><2g5C%JYsY;kXy6bX zbZ)<#6FME=nMx@|yb9RC^-N%7B-g@%|J-un#G=983GFqaC0D3h&|@P4dQ55~3w|vw z+BE8nS-5f#pWi)TU|*(O{_V0!D?yl(dzrgP( z#;ADH4)*6zKr1{ST{>kN(i$rq@|G7U@)Jlukz#SaD^7Q_BE@oSmLR zsD&n&Q)Naor5xg`xN85>grzn>jHNTMKqUdUl?4UIf#MR{_1Q7K8^~hM#LuC+S?M`rx0xE8MzK@S>N#@~vSRWzOksQ6wx`V+) zzke8`B{?TGyn1QM(pu9?EK8S=v`sJaGV$nz990O4s{hrF2<2~2cS%_gx0Sva+J4UP zv6NB-8TPfcxVW=ZSXg+)q?U(=$E>K7o{r9bp>4pTUK_tsrnqnO8k7_Cqh%s|wbn2OznPtagb|w}(YkO8EmV@Rc zb1rQUjk)1;B&9l~4MjK}F$fUvzhJQg5&|O>-&!#?`$9tEZG|%H9P_F_+dpBMz?)13*kxcd6KQo1Z-X=*S^QV`*t=|H5Y- zFPqI$K|!IvH}v(O{McBhzkenPiD)Dr88XmM)f$^$@dBJ&H%nq9u*RtJr=0j!O(Zl9 z1UV&Q{YDf2PHb8^Z9@_+EhY8U(aNb+k8zmMbTD>zcNY)UcsYa9o`M2Bl+qLn>9;`j z`fqXc{IofZ&|W3YK(WF(HxG|D^h-RXagoj}gjoUO0;#t160avy{`@(%fcTkEsXe{V zR|>$w@}#AO|J-%K75zyEr_~w_9jCzwgOSFCZ{7s0v1>BKqQ5r`>=v(i22jCK#f^w1 z2tKBna}I_ul&8qVMj^K3WMnW=ktGTz_b=*L$ROw!J~^;zNJM{9`=$~DZSpV_)k%1yuo{1>EHVVM7W z#QS{YAXvWAxYAbuWCH&G{#c;t{W{|i28`C1eve`hN)ySh7?soCP0A_l7D#_pSwy4hf)O@XWrlY#VmY3qjB2@ z%hO-2^^J`eX<3exaacjnL4F))ff7UbZXg~Ep19(Bd474$loDNQI#g2p%VgQge3XL< zuCui0aq!Fe#ys7chm;8gds>VTQf1G(+O}t7j;dU@C;8m4*hmd0a6OxQG)Rx7=A0t=_5zo&^t< zlpIu6D)E!YeV9^F^?MX^b>)VCYiZG9OOJWoWj3Cj$!+lu*+Tm*ISwDWP$U%#6O#%9 zK>@?amYuC_#ENk<9qpeTi)ME><5*X_sH(#pX#Qv{Px{i*%nWThLN;1fE3KCpq2)F| zalG&N)!NP)F*Y16(Hi))BkH*tuz&5mg;@+MR(Z2z2T!!(SzKAMmsNO6dL9=iZ&1Vc z=FJ;nVRfjJs;jGtNdc_vVDA7GT2fT>HAMzuY-ni6LCnI;`f$*H<*vhu8kAal(vZ1Z z=8hfblf%ZyhynckHItH*T{&yh|4GWz(^JNUD~D5wfj$n8Fc?i7f(|Ahs3|!XI=C%a z2t(g1L?`TjN|3pq<8Tg_zS!)ydz(47okF{B&$j}#uDJ3NGL?zWeVXr1elhC0GvR1w z^Oo%5Wip*yF26yAMpJV$Li_yj*{eV1mLu9~hK7zmtxM!Sb9irfGARmp?tleJ zrm@~{AU?{Ty43M27-?VTKYN7=RO&UJR@4w$7MIqsn2=Z;wz-3_gLu>T=+0bPxp$_X zsg7%Ed;AVIUQoBuM`Yk9U89^DFVNiZ^-En{k~s-U4A->k&iGS7Ny%Gwdc^Tn4Dp)x zMCVCEOd8AG!CC9hXsh0M!Fyq0@Fx?p=+IhD4#trUr4WcqRlQ(HNgi@qBkSjgi;E*N z@Z7Albv*ccknOTCOJwLdy*FDy5>7%K2c4Q;+H~SCa*Cr!n(GPfRUc1JlO)Bl#9o(R0S;PW_KxVtudykF>GzwiAa zThn>+$MBW4{n|z8-7(YX@N0O-$w*Az1jt16z}+bK{LiCGeSLhO$R6z!Kw^3pO(ZH1 z#A!j|H6$#W*X^}CtErCxSlKw3L%mKK`EtFs7u@&f{Qu4EUp&jgpw1h=+ejm;xq3ze z^mGf~{ED8n^}#s|JOJ0(cl`}|NZOnS(BnRDKohra&b82S12S62hhB>nH7yN(%Pr%J z!U_pBZEd8$ztgN^0O-*Af*@T#moi`KO!!=5gt{)5K(q%yr zRW1u$(`{^SDKb0U$y@W-uX1R9M~+ikRP>=xxqT%!Gqcqjk#@4RH9R~Fu8&3i$C~*} zIl5S9Nl8fw33T|kiVB2HBM1ocCg>p{!*)l9hgD@&Io!UNe-8~5$VPY3S{F{b_ee>- zbDsgDf%^l}_#r*-g1|38$@NPfPvE$Mv0uc&D0sabtjN`v&$ciEt1gKE) z>jTvUOLKE%pt@s2Ce8e)>ufx4#lKl)T%wRuoB#uOjjlQ&LIwm;fn{m4L)Y%$Mu?CB z?fWq}6~GyP7SV_1EdT_K={9A=4q`K>cU?~e3Y{&Bo(l}*O=OWpedrK*1$^l&qySF; z8B(@;&E334N*{0i6D9d-xA9%G-3mIuz|5%AY>W>C8E2rybW^6xS@8e>DJki8z{ys( zq0hw??(*8NsmsZBM^^nV86jg0DFRG$GYKd_yeX0{`JGtI>v1#_2>M?1J>Qf^x322z zx1YOCs3E=E+ZNV2&eJ9G(oSe ztt&98i#*wQBkRz8*aVWYzjs92clK+#b9tOi6cvvXT+x3Ym6uniBL2XC9~{^ftE{`V z0f0>L3lu67ECBjZIhuJP_5}c-0)RBRLN>=^Wi+NZK~2Yo3uJxnaH;nbuU4A5ISVoX z6(a^`u7JUS<7_!s7rmI3iK*?dI`84GIGrfqahUnZ+ju@#7+3fdEazKJ zo#}t#q{8xJe>gEw#X4J9Y`3#_{_ACC*BRZ8$o1Q9B{Hb2cn8&7`5p|shG(-8h5S5n zg2VESsGL?uGw=5IUVn;Qup1v9HrCQ07^s_?0;l)<{G5Rxx}!q~5G zcI3oFD^6o&RKU!<1O;e1{FRxNrJI=dG=BH$a_LZ&P7xjOYxLrrILq_9B?omVpw4dVw8=I~99X)-7xpw^K zAD32@vSmX}`i1-oH6~>Ob*5DCy316OfuQX)nz>-|?^LlYH#awU90Yx1k%cHTrV?)! zegCdrp)p`mdwkX#NX#FP0z`%|)S(=RfUL$pAw`H0af7Af*!L4td&BYMByu|kG)eRs zXwYKYEobq7q2Fz-+tpRK{}&F?E6>3DX;wZ1`Y@r>U&+>GO$$VZ=lAuB^civ8j}M`q zYd6#MPq&c}EZE-T^p_j>X8E_Ga|baK|!i_Ytn z+8t5>E_e21Zyj?*E?5{BpR;$CYm6WP>rNjq@lb_q=g#oXk&75SrgM`~+Gy`uQ9 z{Eo4mVxfQ9^wzISj4ClHiA$;dO|*%jVP3D%&t119(xKz4C!!<6xlJ%m~kq~n++h-hqo74{Tx{J?R!q}5fa^ha~GVAbh__x$0LEUoauKE(!dwr z2{zievk=NQy{Xn|cR22{DONdIxMz)G+$Cu!lK>O(b(C^A)06W zlkB+5QdTZ@&;&dkoZDA0=HO_CtPWOoBO{}F?E&xY_5H1#CnfX7>}?#HbXXM9$*9#@ zJ@g$N^9)LL8!f6<)}`bce1up3{3#j-)8%A~&tcnbczDQthkB~*=g+!@oNTPD7cpUm zvlRS^xt|wjmg{_v4N#3AdI!t>XN%u_#EID7f5}{`Q1+|I)pB-q?}Ke$Iq$xngQkW> z$;$e_8~^mNE)LSIklw^$v*j+=bgF2y8!)#tUB+wiH2FHt9+h{7-Q0i_h-_L-wvcgO zer_(vtS`2q2v&IAbydc3UIi;h{I)tq9F3 z@HdZ+kC3;a<-qdE>CX!Vy*aQJTfALm>g+eus`8!G%9NJf4%I>81RpU}{HqeDboz7R z&y}SK4y*m9L+L1uQpA=^D*$W`#j`Sw8g_c*uyQ(It@>v*+jX9_+17MzxF|#E48BCxkoVMBG zT9BVNX!Tz5XpPNr9#@NXrh>{f=y-pkrPJwO|2L0FpWyfO;V1ueiR;_3s>JW7@$sXC z&gbbZt}MBi_(S`ROr_JQN!dw8Z|7%@^0Y*%8AO}c9M~BdR}DRTj+{UqAiChI8dH|8 z4oGs;jnSnK|HpGE@Y4jUvHNozA4%qQAD;v+ zK*ANo%oSZt$l24Gxu&M8FbHFvEj2xN@>eh8hyHP9TT~)fN_FP&$DaV`XJ?u(3WoI07{?@77jbkAw0B!)MfT zin3tcL?PuN zp03cK1~Gwml=1fL`xd~;RWko*Q!tZ*81d1nl3rNu}Z&KB~!kHc&L^ohBJP^1iceX1yGnAovQ!)_ck)oGR1=01{?ZhCh>5 zYNuC3SmA0+Zw51n;7nX>5?i#IvZ`eFye&c}hshhIPuuARw=0SCJKQVJ^v_X4) z=~|f@lSK~qR-+=J*{@2=ICfX>4rz?E+wG@59YO_4%ahi;Zw3Ym7zT0uUj5CrQtAtCrbQ>c|1OM-UHMB{*VO7w zFW*=i0EEgEfguL}bjVELvhXZM!`^yNjROKe@tyO>xV~M1Oe@55W-ftwq}^+9hVSui z;BekRW9g^YfVbt2r6rqwy8tt5rg^44FLwHbknP}~+N`S?J?=Z9LW5_(57}C#m(kB0 zT3ya^_f88sR8@g&G4zY_&_{AFf3=}^Cq35#%G~6f7J3ce*@?q5xx7`D5kHkGrt>kL zt&-00;#N&4-yP*QQV<)qQToJywG4xVMmgKB)~B4#XYWJ)#-AJ!8y;dV`<$GMI}@Yl zh`OH&yu=3p!MM+xH>XntBlha-{^tY5J9+OR>-_7h`|MT1zZOkBSKSuEYW(Z|ousd! z0JQWOf;bmP6^^m(6vg*SQn$CS+6e#C7&z-Ntvtt&A`mE(>x@DZ&vz7aDwQiF3~D%A z1b{&#bH-Ic!6LKwH+OLNm|50qaiU;Gf{}#qUM8yl>L`K{5@dap|5v)0#F!?-4LaKc z9d`cp#R_F5Gp@^SZxx&zr2w&Td;qK8ZneYvp+w##Q*N)cHnN_J+oAPlJD4j7y5ZK! zF$iv%GBq3*A&jow7b>@T#>BC;^ZV*$YA&the$%&+G9Wby6TrYKMTS8RE6OrO>=#pp zlfhk-E#$m0Q$GP>a}s{~AZR#jo#LHGWJnMv4tgjH0v#DC&HV26mR7MlU+Kr82R9Zz zP6Rcae27)6g#(J^LQX$Me|vYQofaoiNSUy+q(BKWyFvfnVD`&GMEQau7;Ut*;8XFowNPI!| z7Q}DhB_8Y>!{z0LGkNphiW=nLo?Kzyw+@Sc&ThK&zKIFiXM%J~%YD$Y4Kp!wBE?NKG3l6w#r5gPEut(JWtI>8|V7deYoX_!ziM1yGyO6M$ zklrr_H8qu$r~vJfox1PU$d*g;@Ly+NB6e*Rk?L$?5@mud7lHpfOp<$yG@&TqQQX}8 z>T8W93A)%1j#vgrl(h6F0FoyrX>mDS%SOnBOKX|hm*7xr!U;J;kp!Z{d?iR3i+uq*3 zHsF9s70l|Wsqv_x`(?R41+Sk2|5H@li51YkbBuP}7{)R(Gc&QIJf^0m2GlxD{?xZj zny|F42B^us@S;8xS)&d)2a8b!Jjddfpvwhgn;n?hn8;lyf%28^ zr@1T#8%M`<#8yq`4IQe{dO?j4rJ}8FmfoNsc|2MS;fc_iW3%Hz-N5EaLu2FNaw|7E z4!d3hh_~$5x(dt6tP`iH!Cji~R}=el$0QaHZiAqatoi4#c=AaakqK6;URO}z@ zl`pmv!L&p?Dq;Df!{el2oPx!4q_eYg?Sk2BxD^j6Ov+te-rL*TRW=53*rde*rd_+Y z7Z+F4>!RTIXUj=^Lq-M|{?ysO^Q>8E&}K_6OU2|cyIz}_aqGXBw=}n4({GC1@kZwq z%$eJAVb|^I`0_=pOf9bpbe|2bAQeP~36gK71cwT;cF4VY@&=DSDhOxq#$UbnG?4YgL1S$~@t%{u=3-<( z>iJ_xA;JK6#2iOQqrL^9F#R$H&KOek{}M#6+s(;qhPL!U{+| z9HWC2?OE?|dXw;BzL&tNwJpDYps78NRfq-bl$qKHbbH+{(~v`1QPNemrR*5IMl~aBu)mK8WP@z3KSX;LBc;M^N^m4 z1d3Iu3~yOFSn`re7;j(T;Vm<3& zjzf(io2l<@PM6rv-BSR9`?h(2-+(L6y+zp2@z)VHYUsL@tt1gUWTi7cEAZmf(Xo45 zDX*UhBDj)EJjC17a27&ksvWVkv^+OlHyVAROX7x)}?snel4=eZxf@=A1?b2 zRh;Q8zQcp_J={IK%YD*fOI~rG{Rl-)m{{9!TF}oGW0+Z4T03@$fuEnh6U4n>G8>I{ z|K9+NXfG?s*pm@juphl?O;S8erVCBg@7Jvwsw#ZHhH)Y#ky8gjKauCMxFF+F|3M4J zM^pF>#_*>`Mx+={@yL_=b+dDQ;VLnx;PTN}d%4eHycLUv>KZg|fC_%N65*jf4+FkM zR$R_Y_lJqJ7j{;(&pSjw+$r~*+m<2uD~)%ij#nfP5fKqL-4RbhepsjA zqBJU)n?Y(vJvp^tkR12bP=v^xu21ygrS^`N++bkWne}_yoo*3bu43Bb6>nJ){Z?vr z-rfACjw}b>m6L=0W<7p=>hyQZM@>hRY^46{n`oU6mzvuFIq7NV&i)Sr0}F=g4!34E z;RN;Tna!fIid=?w*Ru5^F~`1_sULFM%8!gB6FT$jk3$%@1e)*h!u!$;+?pIvLZ|Yp?*@;PY6IGq2-z%>A9zHW<`NTO2UwhC$=dY4@ zaD2MZD49L~iFmc_vx^1|mVbAZqnUkp>7^!9tng>f{ancD=El6+@AMHdUcd6Med@!C z_e2+OJBRN^=!9)wun|Xt!_pCoyuCtmb5~Wxe*=p?b)J7bx$@KtxH!(6VKz$_xtn`P zAD3(23#NT}HlavVO6u;dy?a6fL#d6_qfXaRq}HUpzq!;!j33oru`ai`yk9w@?cB9= z6y|1oV|kccWsz)t(R2arTZy~dsn$19v6-@CRN=#0H=!GFnud&&p};wyn2cM|C70s| z=M4d+s)Z^f=YnbG;0i{co$=T-u568uNe#ijvCu#YhIS^Tq~o2lC%?>>&$8y|6DCU+ zYVbCD>Wq~Xp*}xs1g*FqjYgti--*4vGUdWS>^ze%bzU2>o&2*-;EpV4GVWRbO1btL|+_u#9P%r*`5$senzO`TfPQ_kB0m_yo za8VuDS)s;Yp^yoP=weedNONh-QeOW{pMUtXD2vWD=H=e8`_=t?#9VR`TUo&y z0${f4)yzg|eSm&GzZGNneg^CA7jWOWe&6X|HvBf(fF2v~1D>y6K&M71hB6ZYOaBX4 ztYFU2jx0x3v`hW8O474x4V7@1{IMb>7vaNtYlVpRw}!R#wzG+e!wOr#lKw(a2z%_% zT6&I{J(9RWz5G$?piP$Tdg~&6d&kT~4gzAmXyOo^_UP^1o$(O?6V8C4^- zvJH3)dPmGz5dRte{?0tP!J#IcnGK}w&H=f4Z0sWlR%Vt&g!vn^8=W{h0Y+tlf%|N` zSWfB>g&N=pKd0w_GD64zXktQD&gQAEto$a%W~!R>!unYBHBChjL+JH5sKpJ(4sY6$ zlBV1L^4RjWH01Fgk)IwEJ-LA8FYfhV8kcQjMz>FJ8BGlorN>!($H?`{q6&nxP(&qEI6kiV?$Amrr7CuBs~*&BoMWisSz4 zlNi1eD6OC(ujnYzgj|62hrcR_3eM6m2H~I!VR#MKLdOG8*S{6B3}%=Ue-{fuVuye{ zJyg)H`uztygjppOgavWh(NkB+Ltvtf4h5*7A4fSL$W$h=oW|PdF~pow&=0W4So2~@ z=*Lgu5KgEm6$BZUXih8+#S5iHkjG+hQ>k}=O;Ty*Mb3gSCFqCD*q5lvbfyOi6UUDy zw{i6)4{LYNuR8BM8)bS=kVB#URMuMT(HlLtQZExJRYzzYcvu=|ttx{grhm_1M#661 zeg*j7#s|LYNq7lQ6oodlFK3o9a-|78;t;|9Mxj3V{qb@afSZy2$CJh*zXXQRUxM~K z>~+O2jl?S$a$sGr#7s4Uu?Z)`RBhknhC=ciC_XGEd#OD`!s;ilFm5Z7G$)qOAxT4L zK8cG!;S;6YmnB+52>ioCH%F#6($*mMK)L52JAHG7Iiyyh466zPp>`QEoP#{d?{wD^ z^mr^S%r>^wsnD7JXS4)G?m8Ak9q9O4Y^><&T0L_5VHWWoTmro@u|Ht_0{_k0?CcKrDs zM~V51>GnHaq+puO_(_Jh=(%a!esIUuI|>`V+fl`$s4Wg`mr8mx>^R@-DxQs+e=GdT zt#Kk*_$nLHzto>opWpcTKRocQI92r;oqKg^eQ&=yD66VsWnD=x3Q$QPtI5x>TR%*B?JW zcY`bW`#*qpoj35new60wbWELvo~H{-7R$aeJkCd&hF;4 z>GBe^deixGl?f*X?HNTOojwhmT!9|Jfz^Ng5RkjGiMR3k`??#BP_4HS4#+8* zEPoM7(E0fVq!pl`W=8uWPPY6yMaaO7mNX8xabp3S)x=19>Ia%%J^rVWXbICtF{;Pd zsUA#n19hAag_FV6D7~LFrqW*cYt-(B*) zZT#!jhJinb0(gltFf;q_=XiquIMMaD;OOYcisyE4$#KndLjSnyNnBoj?0k2J<u&=I`bh%q78 z)Y7`{lda)tZrF8eyT9)M8I`@yHmE&=@>$jG+n=|XH3I%kN;a?gZCajfQ@eG%&cqB# zem3}P=gj}#FnvIG-X?#-d<^GN^AgC~4VZ{@8-C9)CN4#QIh285QB!wmW|=&05JEj^ zHM4V7kA)v6k;6uW;8LLj?IKezU3k7pWMG2>r4*&v40lU zj|YbiYJEPG@z>*j@kvBSoB$=*Xlt>Ni^SBE{{t+W%@e!;)m3ZlH0>^%M#N!SmwkIb zb>!>N#I;wEA6~N{d^!wrcSyoN!HVp50#4oxIb-#oUtDoZ`kr6{} zczA5sX~Bx9TbH6G#*$9Tn{sSE(gl;~|3# zVF3erNbl<7BY1$^`E`9>eCQGj5{Dpz2rrv0eSXK3n9e|k_QlEF0~{JL%_vO;SGxB$ zm&|1&kD`JXOfrOmyAK?XLVAq3c9}y!V9+Li^AHN)1a9RuHnzphVk|#P{&*VrzYr=6 zrrl>ri;^;AF$3|ROV346fJ+Tc+3u8cjf8D(ybmYgwl&`WJaPYC=-|bmnilpNagll+ ztsc6yy13STjKzIdXr9?f_EtWZA6#-2;M}MG;c6v@gN+jeXb__me1#th&&rVn zE#ilW5?O~qPp#|fxphtFgMo*J1*rW~7d2K@m3VZkFQ_FHwkecQltL#6{1Ygsq(q&PZ*Ub?B6}u6Pfw740gk4R%@H`{LRwU<#Sxh{cJbA>$dJh z3zF8$bsx)=&d)E8esxNg&W=8~^nS>if$u`JbKDfKLSCq>{M{l!gWh7_Tb{_>v zRMoyC-{*4}85z+5<@(r7{`md9qtz}~&7|2j>-{+?{-jT7bkQ4W6z>M(8Si{C$PFtC;lie=JE$t4m7Ss?bPJPi4_nUszlmuC9ZF%5wiZAD_EeiBOFSY)M@_v7i6P3-B83qF7I= zK@7!e*9U~IILz<6v3H$l48TvG6S7a*@Ko6!g5uw!n34I`XHY8qx&K*LhjY-D&o1^u z-|*WdVch%2q!^3YgBsm$UQxqV{4>+j{$ERrzP8w`b!~4G#_2qO=8IUL_l|~!?($U{ zg$qrlmd?i1{a@&x9`946@zdE1^HrEYpD(!C3TJJ)v|7GWvDXw=Q6O)C%b>diMpN3S z+$Qh+w>cX1md9OS4CH$sEwtB^m1*ZE*67sFnemu_WmdwM2{4^G9WDoms`Q)3ZRDk- z6$n30+BA}$wy>#K5Ft0)_< zgZ|2qp?LL**LY+EY@iWiv@7_?4h|P}7o%pGW`)2W~AO$93l;M9=!o0kE%!Q9eG$B8C&JbpG zoNqqLvsSeVEbQ~y_i25AWRB4#56}4jRdTi6KetxJXGwD>dmGQnDqLZ*ajI@h4ECW= zs;bPaPI`Y?|NYXHP3D_ck>hjN?-QRD2SqAk@RB&3k(o{C*9_Rk3(M!2IO_yCGBmX0 z!GxC_e-96rzFF^&?oM+Kg2zqKSEs&~I?(^{Kg+~2W%HyJ$lrr{cfL}_W{VTQkhR~< zuc`lwwzrOoGHS!U2PB3Nh7eI{hVD*@p#0i*>41O!A%T2wj)K}5Q{ zyWwo#Z@ueV=by9ATIZbq)WrZS)dt$%kat<}uaR=v)=zGGiFq44 zM|1#(BN?Y{(~oexq#kQ~Ha48{hY(GDQ$rJ92)LY!4`0N^B`_ei)jiLJPbaAx#>esS zQo+mDL&j29Qx}sj>c4R>^nMBRd|b@3G7nxK;hlqYh+pdm{naP=KprgvC{oJ9?L<}e309>zI~6b{hP0h zv~E?X#^He0un+xV~wl zgm?Pb%i!^`q#jmSn#E-6$0CRBWt=eMehTQfvok+qSe&929qc1Jk4b}9mAvfj+iHlQI zbe;L9@>or6OjoaM@1V@$`pVASZ+R4V=e)aSHgur$UegJ6cV7?Rh7b&ru;@_6eu0By zP;Oec`)$58T=wm+7uANWg^+JT9I1}A#zWDPtgdV{#_uRC&J4%HedP^XF}UJm5N7#udHYpk?#gNYy&C5Ib1=ii2qACUV*PV|P$^-|`OgSQCGZhp$x(IMR-d2s=upmg zc-KZH(gdE@mOJW~e?UIL>aN4`;Ku(}`{>W@a)-gA43njCYy7YQTj1ZLOa7qC?(wDi zghq0K7;Cr$MHdsnYRqL@iLUn^o4E-OuO0g|-sq^|lbQ{CE}X8|DH%vityQKcF#mwa zN;VmACvu)o1s~p1(3)wP8lSEXyv^%9_@c@B(^8f7uF~`NAyqe9+ksNOq!+3=Ux{(# z0E8aWFB)f7kmFSBxjJ*_+}|HLq-q2Zc`Hc)GNJ+Gf5>og_XAYKDjq#lHeqp4P*Cdj zz;UzENXO7{Z({KAjB;+rb1{#tv&Pyn`TSom1nV3+VjklX(Mb82mS}3Ks4*{o_|Mhn zS>8vx3yqFW`tHVdEO-lnKkPVcZkg&DG@Z`Ti#-OiBPo%RyfOmH7{>-7YH}XCi7Xxz z1UQ)Z{X0r!qgnPZI5}D0*k$1#5HK^_Jp~%*j#i?1@nqoMYq&C1A|7NDctBzpIw>_( zSj#IusTOKeRF6A=Wv9ki&C0WyH3ovI@>((!Xvy2h=O?t{x<*?QOXvrjqiZ@-%h!K0cYgT-g6Q;_?8zdKD%D{NhD=9P~(149PAa zNfgk$M9|N2QPL~tL)(wXK4Ey4NrY)b^UMp_*|?K;A5`~zz1^#FuN-rz%BqkKTycuz zRN2W@+Z@A$k|6G*#BQ6%ouu3^;>IMR`4Z#{iqV2U7x!Z;al01_f;e~M)6kkK3R?YF z22yX}Y@XWW9p}}m57g*#(bg!Q9y@*mGzmAY9jP5wOg<||vTB6t#iod>dZB_?Y?f0< zFu#IbOy+Fox!RlCUf)3$shcWv$OoEGcFL>3t{)0kvE{AdJ#L(|J65}s^Rf3!A;cpqg_GsKk zd*;&(rmB}@8TkC*;Mo}{B4OgSgWcsOU*jU;8ox7{9oU!)VG5yF;{!tq=g zrDRlQ@Zy$2nd&ot=nn!OOsqV~<5)iCWGs3FWp4`l1DZ2kTV)wymmYwCEX~^Z92izW z5D(H1f6Vm6HbUvo$0WPHlL~uou|3PbQIa6=l6b#Y7t+B8@o+u=?5AIh zG-SNa?>@|;>%SS8diLxO9&TDg7ys()o=N}Bm#Hfvf9J^)3D;ZR?ATGpHgnU@p@T{3 zVmu-kgV=saeT}+umxKqTvDzg;f#dDXdoNv0zU$%WK+-xdJy||q)v;#cSP#9B%fXxLwc8sW^x^GZiALz^>}^YF z{_~OAN2j!+XO*`H0~R+I^$p`j4^tM3BzDiyyTSFK5oWBhylymWI{mxtQ?AdU%+U3( z648(KcQ?zHhC!7Wd@{M_h@YSWBy%Dnu5QBHcSBYuDGOL~t|GMyCqBDO$MUo>5X^qH z4A${{s^Pjze7kr_EPWvXX}6QUw(r~G?-|9b#%#2n=}`pMHg^)9o$^wQmHF3B(bxzQ&Cf!wL00usm7cAtGgD@w~D3qn`Wi$>&K;T(>1oIL*J}^ zO_X-C2n_5pXgzw#sFb)p(G3SAS33$BXa-;l7%<$lWcz? z<6&6`zpzx2N--z%$cA3oC;g|6CX=s@H+Ne$iC$_mp?%HP6Z|Wm-FXn%?gv5>*tpo} zNoAqS%gY^$cv`6ERcG-cQ=c6=hEw`dfqM)hBS|B&QJbA@X5zaw@ioMZKOGD5VPsvG z9UB4|)%+*PJxkt?ME3Aof$5zlv9Ce!;lNEK?(((HTdCZUc~QU)^)5dh`_!~8Co%(4 z7nqd68W!u|=(|00*kzZSnUN8)zHG3xecyn|>F(UHUuXpeFQoy9`p{*+7u!`%@svMB zd#{-e3IG)I8@1vQNp$gu{Y!)_8!#sLG;z^rbeCa5!us{Z#sGgk?UH7IIlNv2P^OF= zz-oV?R_CSc@AXi>yhAK~utwZ^+v3N-WJ2Xem8MS6V?AumKiH2v4wxPlC-_PJt+1UO z61i`FXZ7m&AXmTn8IND^vd>`72G>%=p{aN8hrksrl zo(ZzZyN~iw{}PL0awQPAm^+t&tVrNy&;C86R_xt=dAQ-$F5Z^+aJ7MF0OcK0#?y9> zF>=2>;xT>Ny@W*^TwK1+_GfO-+<3_xF%hEMr-^Y1jf#rAo#D?kbAkZMen(D@GA})y z7w!3_tYh8&_MP3;Lcyah_eeQ8k7qHeB;hh{f0r>K@(d*B<+${}MR@5XlH)oS?#TV1 zTzmqLfF%dt;$XJ7=gk{R(!_Q|y)rBDx?m88V7^f;)>*G%jR7hJjF70w6!sl7L_Hi5 zaZ9|ZlbbXT?lIZ_U8c$1V?dhjkj(x*x^jtDEQp|k>y+eK8i-OU6MR<{jpGATq``j7 zuIGH?WGqotj@EEWe0n52`snD`q5~(0uu~$6Evyf>Yd-bQpNvv`njen?PlW^p35ke$ z?+6zDwic}O@eq zT|%N9aqkO*w)6NcJ6cE>iTLEy^Xduptcu-@^%THI?hO61(vP*d&0|c4Q;YlbTMGh9 zGytcGo2IQ6$*7_Rg@sm^S6=+y_>({suULIMG#@JnV^}&=Q&YSAk@VW``{dNbj+ZDA zt;Da8S~e|o?ms}+He8_r^@?-FdUBL-}N1lv?8El9Spy_wd8ZFRME$TNs! zG@E`*4rwtL**?8JE;R5b4BeY0Rz}J|`4k77w+G6%B@;~~#M$yHlC%)r71x*5SqWyB zM5Z0W|85i#+$bz0Z;Fcab@6J*QFX4;V$bDnn`{3f8yj0sb3X8N0`73kzWMD4PIg^w z0RiN*{q;mbg$tG?NFdu@>mBH6r{tIoZpc{peUl ztNWSI2#6Ku?)Upl>rS3e6^!r-bq615z{Q&a|5OSU~IwodaX681bUkxIJCWuVkg(%e+H+jDBY`YxrXzu0(}dTz^kV?0U|5(Xz3>;C&~ zj~DaVl!TFyJ{93BQ2wbGxEl^Qq~LSTJut^vT;RoaJBKOkTb<6Xf@c$J-YWMBEDi^L zlId&@$L~B0d*4#+*|(ym9>tYHnqfTYpQBNvEndF!mUyaZcgPa)#K1LIzFXl+1cpfE zG{5>un*%IVp0;9kV_#VnU|K3RPdC796K~gAS!;eqPN}Q2rSRqX50}%{A6<%_Kp?ib z*(yGzmBOc&q3kmv$M2Z8Vu{FmQ1ENdHr5t3>{MLcTDAVSN9VjjjJ?pKujsDF3j(pq zp7)u1>J=u{>`70;j8@$b2&JABf&y(Yr#1VMsNARl;WMLcY)YQkLE2-@OaAcK&q<$v zemKVFX=A`;%)ucm6SO_2^@eNA*|g2}_)VbG=s_VMjWX4X@8U!P3C8#A9o0Z&`!iFR zElz-aGns&?^A-rbJd_a& zOSV62i8m)#_JkvSpGj<%gCYse*%bBj-C%9R52@zuoRL8C&r2Qx+%u*Z
3^?y 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 literal 0 HcmV?d00001 diff --git a/docs/products/themis-task-system/assets/themis-sign-in.html b/docs/products/themis-task-system/assets/themis-sign-in.html new file mode 100644 index 0000000..2b456a4 --- /dev/null +++ b/docs/products/themis-task-system/assets/themis-sign-in.html @@ -0,0 +1,164 @@ + + + + + +Themis - Sign In + + + + + + + + + + + + + +
+

+ Themis +

+
+ +
+
+

Sign in

+

+ Enter your details to access your workspace. +

+
+ +
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+ +
+ + + Forgot Password? + +
+ + +
+ + +
+ \ No newline at end of file diff --git a/docs/products/themis-task-system/assets/themis-sign-in.png b/docs/products/themis-task-system/assets/themis-sign-in.png new file mode 100644 index 0000000000000000000000000000000000000000..e1c0036ca79e932286dc16bafc5e40c219a6dc82 GIT binary patch literal 9537 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 Date: Sun, 12 Apr 2026 02:58:22 -0600 Subject: [PATCH 3/4] docs(themis): add obsidian vault config --- docs/.obsidian/app.json | 1 + docs/.obsidian/appearance.json | 1 + docs/.obsidian/core-plugins.json | 33 ++++++ docs/.obsidian/graph.json | 22 ++++ docs/.obsidian/workspace.json | 183 +++++++++++++++++++++++++++++++ 5 files changed, 240 insertions(+) create mode 100644 docs/.obsidian/app.json create mode 100644 docs/.obsidian/appearance.json create mode 100644 docs/.obsidian/core-plugins.json create mode 100644 docs/.obsidian/graph.json create mode 100644 docs/.obsidian/workspace.json diff --git a/docs/.obsidian/app.json b/docs/.obsidian/app.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/docs/.obsidian/app.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/docs/.obsidian/appearance.json b/docs/.obsidian/appearance.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/docs/.obsidian/appearance.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/docs/.obsidian/core-plugins.json b/docs/.obsidian/core-plugins.json new file mode 100644 index 0000000..639b90d --- /dev/null +++ b/docs/.obsidian/core-plugins.json @@ -0,0 +1,33 @@ +{ + "file-explorer": true, + "global-search": true, + "switcher": true, + "graph": true, + "backlink": true, + "canvas": true, + "outgoing-link": true, + "tag-pane": true, + "footnotes": false, + "properties": true, + "page-preview": true, + "daily-notes": true, + "templates": true, + "note-composer": true, + "command-palette": true, + "slash-command": false, + "editor-status": true, + "bookmarks": true, + "markdown-importer": false, + "zk-prefixer": false, + "random-note": false, + "outline": true, + "word-count": true, + "slides": false, + "audio-recorder": false, + "workspaces": false, + "file-recovery": true, + "publish": false, + "sync": true, + "bases": true, + "webviewer": false +} \ No newline at end of file diff --git a/docs/.obsidian/graph.json b/docs/.obsidian/graph.json new file mode 100644 index 0000000..e21a18d --- /dev/null +++ b/docs/.obsidian/graph.json @@ -0,0 +1,22 @@ +{ + "collapse-filter": true, + "search": "", + "showTags": false, + "showAttachments": false, + "hideUnresolved": false, + "showOrphans": true, + "collapse-color-groups": true, + "colorGroups": [], + "collapse-display": true, + "showArrow": false, + "textFadeMultiplier": 0, + "nodeSizeMultiplier": 1, + "lineSizeMultiplier": 1, + "collapse-forces": true, + "centerStrength": 0.518713248970312, + "repelStrength": 10, + "linkStrength": 1, + "linkDistance": 250, + "scale": 1, + "close": false +} \ No newline at end of file diff --git a/docs/.obsidian/workspace.json b/docs/.obsidian/workspace.json new file mode 100644 index 0000000..2c6b57e --- /dev/null +++ b/docs/.obsidian/workspace.json @@ -0,0 +1,183 @@ +{ + "main": { + "id": "636a27d281398fe3", + "type": "split", + "children": [ + { + "id": "c41fb81829fb2b2d", + "type": "tabs", + "children": [ + { + "id": "8fba877cb69b6c92", + "type": "leaf", + "state": { + "type": "graph", + "state": {}, + "icon": "lucide-git-fork", + "title": "Graph view" + } + } + ] + } + ], + "direction": "vertical" + }, + "left": { + "id": "043aef78f2e8defa", + "type": "split", + "children": [ + { + "id": "ca3c8b02f18f864d", + "type": "tabs", + "children": [ + { + "id": "51eea273d067a704", + "type": "leaf", + "state": { + "type": "file-explorer", + "state": { + "sortOrder": "alphabetical", + "autoReveal": false + }, + "icon": "lucide-folder-closed", + "title": "Files" + } + }, + { + "id": "66d0d9f5112438c7", + "type": "leaf", + "state": { + "type": "search", + "state": { + "query": "", + "matchingCase": false, + "explainSearch": false, + "collapseAll": false, + "extraContext": false, + "sortOrder": "alphabetical" + }, + "icon": "lucide-search", + "title": "Search" + } + }, + { + "id": "7f6d0f5d0e982ad4", + "type": "leaf", + "state": { + "type": "bookmarks", + "state": {}, + "icon": "lucide-bookmark", + "title": "Bookmarks" + } + } + ] + } + ], + "direction": "horizontal", + "width": 300 + }, + "right": { + "id": "a53108dd427f93cb", + "type": "split", + "children": [ + { + "id": "45b9b60f84ec3a73", + "type": "tabs", + "children": [ + { + "id": "91d17d650ebe79db", + "type": "leaf", + "state": { + "type": "backlink", + "state": { + "collapseAll": false, + "extraContext": false, + "sortOrder": "alphabetical", + "showSearch": false, + "searchQuery": "", + "backlinkCollapsed": false, + "unlinkedCollapsed": true + }, + "icon": "links-coming-in", + "title": "Backlinks" + } + }, + { + "id": "78672ad3f4f22d10", + "type": "leaf", + "state": { + "type": "outgoing-link", + "state": { + "linksCollapsed": false, + "unlinkedCollapsed": true + }, + "icon": "links-going-out", + "title": "Outgoing links" + } + }, + { + "id": "6118dbd5f1b25a40", + "type": "leaf", + "state": { + "type": "tag", + "state": { + "sortOrder": "frequency", + "useHierarchy": true, + "showSearch": false, + "searchQuery": "" + }, + "icon": "lucide-tags", + "title": "Tags" + } + }, + { + "id": "5a225945434b1020", + "type": "leaf", + "state": { + "type": "all-properties", + "state": { + "sortOrder": "frequency", + "showSearch": false, + "searchQuery": "" + }, + "icon": "lucide-archive", + "title": "All properties" + } + }, + { + "id": "2ee3d212d6663f5f", + "type": "leaf", + "state": { + "type": "outline", + "state": { + "followCursor": false, + "showSearch": false, + "searchQuery": "" + }, + "icon": "lucide-list", + "title": "Outline" + } + } + ] + } + ], + "direction": "horizontal", + "width": 300, + "collapsed": true + }, + "left-ribbon": { + "hiddenItems": { + "switcher:Open quick switcher": false, + "graph:Open graph view": false, + "canvas:Create new canvas": false, + "daily-notes:Open today's daily note": false, + "templates:Insert template": false, + "command-palette:Open command palette": false, + "bases:Create new base": false + } + }, + "active": "8fba877cb69b6c92", + "lastOpenFiles": [ + "README.md" + ] +} \ No newline at end of file From a635ecbe62559b8453a11277ff326e3140e94971 Mon Sep 17 00:00:00 2001 From: Michael Villalba Sotelo Date: Sun, 12 Apr 2026 17:57:53 -0600 Subject: [PATCH 4/4] docs(themis): define backend content model --- docs/products/README.md | 1 + .../12_backend-content-model.md | 386 ++++++++++++++++++ 2 files changed, 387 insertions(+) create mode 100644 docs/products/themis-task-system/12_backend-content-model.md diff --git a/docs/products/README.md b/docs/products/README.md index 2eb2c89..290a509 100644 --- a/docs/products/README.md +++ b/docs/products/README.md @@ -13,3 +13,4 @@ This directory contains product concepts, PRDs, architecture notes, and supporti - `themis-task-system/09_stitch-auth-prompts.md` - Google Stitch prompt for Themis sign-in - `themis-task-system/10_stitch-dashboard-prompt.md` - Google Stitch prompt for the Themis main dashboard visual exploration - `themis-task-system/11_stitch-projects-overview-prompt.md` - Google Stitch prompt for the preferred Themis projects-first main screen exploration +- `themis-task-system/12_backend-content-model.md` - backend recommendation for markdown-backed content, structured persistence, and revision history in Themis diff --git a/docs/products/themis-task-system/12_backend-content-model.md b/docs/products/themis-task-system/12_backend-content-model.md new file mode 100644 index 0000000..66380bd --- /dev/null +++ b/docs/products/themis-task-system/12_backend-content-model.md @@ -0,0 +1,386 @@ +# Backend Content Model: Themis + +## Purpose + +This document defines the recommended backend content model for Themis. + +It answers a key product question: + +Should projects and tasks be stored as markdown files? + +## Short Answer + +Yes, but not as the only source of truth. + +Recommended direction: + +- use markdown for rich long-form task and project documentation +- use the application database for structured metadata, workflow state, relationships, permissions, and querying +- version the markdown content explicitly inside the product + +This gives Themis the strengths of documentation-first workflows without losing the operational capabilities of a real application. + +## Recommendation + +Themis should use a **hybrid model**. + +### Use Markdown For + +- project briefs +- task descriptions +- problem statements +- outcome definitions +- scope notes +- decisions +- update narratives +- agent-readable long-form context + +### Use The Database For + +- ids +- status +- priority +- owner +- labels +- relationships +- project membership +- timestamps +- filtering fields +- audit records +- permissions +- version metadata + +## Why Pure Markdown Files Are Not Enough + +Using plain markdown files alone sounds attractive, but it breaks down once Themis becomes a real multi-user product. + +Problems with markdown-only storage: + +1. querying by status, owner, blocker, or stale state becomes harder +2. concurrent edits become fragile +3. version history is available only if the system is tightly coupled to Git +4. cross-entity relationships become harder to enforce +5. permissions and audit trails become less reliable +6. product-level actions like `ready tasks`, `blocked tasks`, or `projects with stale updates` become less efficient + +Markdown-only would fit a personal knowledge base better than an operational product. + +## Why Markdown Still Matters + +Markdown is still a strong fit for Themis because the product is not only a workflow engine. + +It is also a structured documentation system. + +Markdown gives Themis: + +- durable, readable task definitions +- easy exportability +- strong human readability +- agent-friendly textual context +- future compatibility with repository-based workflows + +That makes markdown valuable as a **content format**, even if it is not the whole persistence strategy. + +## Recommended Canonical Model + +### Core Principle + +The database is the canonical operational source. + +Markdown is the canonical narrative format for long-form content fields. + +That means: + +- the product does not rely on filesystem files as its main store +- markdown content is stored and versioned in the database +- the UI renders and edits markdown content through structured fields + +## Entity Model + +### Project + +Suggested structured fields: + +- `id` +- `slug` +- `title` +- `summary` +- `status` +- `ownerId` +- `visibility` +- `labels` +- `createdAt` +- `updatedAt` +- `lastActivityAt` + +Suggested markdown-backed fields: + +- `briefMarkdown` +- `goalsMarkdown` +- `scopeMarkdown` +- `notesMarkdown` + +### Task + +Suggested structured fields: + +- `id` +- `projectId` +- `parentTaskId` optional +- `slug` +- `title` +- `summary` +- `status` +- `priority` +- `ownerId` +- `confidence` +- `blocked` +- `dueAt` optional +- `createdAt` +- `updatedAt` +- `lastActivityAt` + +Suggested markdown-backed fields: + +- `problemMarkdown` +- `expectedOutcomeMarkdown` +- `scopeInMarkdown` +- `scopeOutMarkdown` +- `implementationNotesMarkdown` + +### Task Requirement + +- `id` +- `taskId` +- `content` +- `order` +- `completed` optional + +### Acceptance Criterion + +- `id` +- `taskId` +- `content` +- `order` +- `completed` + +### Update Entry + +Structured fields: + +- `id` +- `taskId` +- `authorId` +- `authorType` (`human` or `agent`) +- `summary` +- `nextStep` +- `blocker` +- `createdAt` + +Markdown-backed field: + +- `detailsMarkdown` + +### Decision + +Structured fields: + +- `id` +- `taskId` +- `authorId` +- `createdAt` + +Markdown-backed fields: + +- `summaryMarkdown` +- `rationaleMarkdown` +- `consequenceMarkdown` + +## Versioning Model + +Versioning should be built into Themis itself, not left only to external Git history. + +### Recommendation + +Every markdown-backed field change should create a revision record. + +This allows: + +- restore previous versions +- compare revisions +- inspect who changed what +- keep agent edits visible and auditable + +## Revision Entities + +### Content Document + +Represents the current editable markdown document for a field or content block. + +Suggested fields: + +- `id` +- `entityType` (`project`, `task`, `update`, `decision`) +- `entityId` +- `fieldName` +- `currentRevisionId` +- `createdAt` +- `updatedAt` + +### Content Revision + +Represents a single historical version of markdown content. + +Suggested fields: + +- `id` +- `documentId` +- `revisionNumber` +- `markdown` +- `renderedText` optional cached plain text +- `changeSummary` +- `authorId` +- `authorType` (`human` or `agent`) +- `createdAt` + +## Versioning Rules + +1. every save to a markdown-backed field creates a new revision +2. the current entity points to the latest revision +3. the UI should allow viewing revision history on important fields +4. agent-created revisions must be clearly labeled +5. major changes should optionally require a change summary + +## Git Integration + +Git can still be useful, but it should be optional. + +### Good Uses Of Git + +- export projects or tasks as markdown files +- sync approved content to a repo +- archive important project documentation +- support developer-first workflows + +### What Git Should Not Be Responsible For + +- real-time application persistence +- permissions +- status transitions +- operational querying +- multi-user collaboration control + +So the correct posture is: + +- Themis owns the live data model +- Git can be a downstream export or sync target + +## API Shape + +Suggested endpoints: + +- `GET /api/projects` +- `POST /api/projects` +- `GET /api/projects/:id` +- `PATCH /api/projects/:id` +- `GET /api/tasks` +- `POST /api/tasks` +- `GET /api/tasks/:id` +- `PATCH /api/tasks/:id` +- `GET /api/content-documents/:id/revisions` +- `POST /api/content-documents/:id/revisions` +- `POST /api/content-documents/:id/restore/:revisionId` + +## Rendering Model + +The frontend should not treat markdown as loose blobs everywhere. + +Instead: + +- use structured fields in forms +- render markdown only where long-form context is appropriate +- keep list views driven by structured metadata, not markdown parsing + +That preserves speed and clarity in the UI. + +## Search Model + +Search should combine: + +- structured filters from the database +- full-text search across markdown-backed fields + +This allows queries like: + +- all blocked tasks in project X +- tasks mentioning `rate limiting` +- projects updated in the last 7 days +- tasks with missing scope definition + +## Agent Fit + +This hybrid model is strong for agents because it separates: + +- structured state for reliable automation +- markdown context for richer reasoning + +Agent-safe export shape should include both. + +Example: + +```json +{ + "id": "task_123", + "title": "Implement project revision history", + "status": "ready", + "priority": "high", + "project": { + "id": "project_themis", + "title": "Themis Core" + }, + "content": { + "problemMarkdown": "...", + "expectedOutcomeMarkdown": "...", + "scopeInMarkdown": "...", + "scopeOutMarkdown": "..." + }, + "requirements": ["save markdown revisions", "restore older revisions"], + "acceptanceCriteria": ["history is visible", "restore creates a new revision"], + "latestUpdate": { + "summary": "data model drafted", + "nextStep": "design revision endpoints" + } +} +``` + +## V1 Recommendation + +For V1, keep the model simple. + +Start with: + +1. PostgreSQL as the main store +2. markdown-backed long-form fields stored in normal tables +3. a `content_revisions` table for history +4. project-level and task-level revision history only +5. optional markdown export later + +Do not start with: + +- filesystem markdown as primary persistence +- Git as the main data source +- event sourcing +- overly granular versioning on every tiny field unless it is markdown-backed + +## Final Recommendation + +Themis should be **documentation-friendly**, not **filesystem-dependent**. + +Best approach: + +- database-first for operational state +- markdown-first for rich content fields +- built-in revision history for versioning +- optional Git export later + +That gives Themis the clarity of documents and the reliability of a real product backend.