Refactor to pull all text enteries into single location

This commit is contained in:
2026-02-17 01:10:31 +00:00
parent 6605966fab
commit 83b327d58e
36 changed files with 954 additions and 1443 deletions
+79
View File
@@ -0,0 +1,79 @@
# Task: Centralize All Portfolio Descriptive Text Into One Editable Source
Refactor the app so all core descriptive/profile copy is managed from a single source file and consumed everywhere relevant (education, experience, patient summary, skills, timeline/constellation text, and related detail/search/chat surfaces).
This is a staged rollout, not a big-bang rewrite. Implement one stage at a time with passing quality gates before moving on.
## Requirements
- Create one canonical content module (single file) for descriptive profile text.
- Migrate all major consumer surfaces to this single source, including at minimum:
- patient summary and sidebar profile details
- work experience and education content
- skills descriptive text and related summaries
- timeline/constellation narrative fields that are shown to users
- text used by search/chat context where it duplicates profile copy
- Eliminate unnecessary duplication; where duplicate sources exist, consolidate to one source of truth.
- Preserve existing UI behavior and interactions (navigation, panel opening, highlighting, timeline, constellation links).
- Keep migration incremental and safe using staged checkpoints.
## Rollout Stages
### Stage 1: Inventory + Canonical Schema
- Audit where descriptive text currently lives (`src/data/*`, component literals, search/chat context builders).
- Define the canonical content schema and create the single editable file.
- Add typed access helpers if needed so downstream consumers can migrate safely.
- Keep compatibility exports/adapters for non-migrated consumers.
### Stage 2: Core UI Migration
- Migrate patient summary, sidebar profile text, experience, education, and skills surfaces.
- Ensure components read from canonical content instead of local duplicate strings.
- Keep existing IDs/keys where needed to avoid UI regressions.
### Stage 3: Secondary Consumer Migration
- Migrate timeline/constellation narrative fields and detail-panel supporting content.
- Migrate search/chat context text generation to derive from canonical content wherever feasible.
- Remove hardcoded fallback narratives that duplicate canonical text.
### Stage 4: Cleanup + Hardening
- Remove obsolete duplicate fields/files once all consumers are migrated.
- Tighten type definitions around canonical content access.
- Add/update concise documentation describing how to edit content in one place.
- Validate that future content edits require changes in only one file for shared text.
## Success Criteria
All of the following must be true:
- [x] `npm run lint` passes
- [x] `npm run typecheck` passes
- [x] `npm run build` passes
- [x] A single canonical content file exists and is the primary source for descriptive/profile text
- [x] Education, experience, patient summary, and skills copy are sourced from canonical content
- [x] Timeline/constellation user-facing narrative text is sourced from canonical content where applicable
- [x] Search/chat context no longer maintains avoidable duplicate profile copy
- [x] Obsolete duplicate text sources are removed or reduced to thin compatibility adapters
- [x] Documentation explains the one-file content editing workflow
## Constraints
- Stack: TypeScript + React + Vite.
- Preserve current route/scroll/nav interactions and detail panel behaviors.
- Prefer minimal, reversible refactors at each stage.
- Do not introduce unrelated feature work.
- Keep naming consistent with existing project conventions.
## Status
Track progress here. Mark items complete as you go.
When all success criteria are met, print LOOP_COMPLETE.
- [x] Stage 1 complete: Inventory + Canonical schema
- [x] Stage 2 complete: Core UI migration
- [x] Stage 3 complete: Secondary consumer migration
- [x] Stage 4 complete: Cleanup + hardening
LOOP_COMPLETE