diff --git a/docs/PRD.md b/docs/PRD.md index 5dc2c7b..5d11bf0 100644 --- a/docs/PRD.md +++ b/docs/PRD.md @@ -34,46 +34,93 @@ Intuitive Reasoning Exploration, and Framework for Responsible Optimization and Self-Directed Transformation — exploring multi-agent AI system behavior and safeguards for responsible AI integration. -## Content Ideas (not yet finalized into an information architecture) - -* The Origin Story — how Jad went from a tech nerd to the Blind Tech Mage. -* The Great Irony — why blind engineers use an IDE called Visual Studio. -* Blind Insights — what blind coding actually looks like. -* The Sound of Silence — what can be heard when you actually listen. -* Resume/CV. - -These are candidate pieces, not a finalized site map. Final information architecture -is a separate design decision to be made and confirmed before implementation. +## Information Architecture + +Top-level navigation, flat (no nested dropdown/tree menus), agreed in design +discussion: + +* Home +* Resources — single flat page with filter controls over the unified + `resources` table (see Functional Requirements, above), not a category tree. +* Projects — top-level nav item. + * Research Projects — thin pointer pages linking to TechClusiveSolutions.com + (TechClusive holds the IP; substantive content lives there, not here). + * Open-Source Projects. + * Proprietary Projects. +* Blog — a distinct section from About Me, hosted on BlindTechMage itself + (Astro content collections), not a third-party platform, for accessibility + control, ownership/durability, and consistency with the site's purpose. RSS + feed considered for distribution without ceding ownership of the primary + content. + * The Great Irony — why blind engineers use an IDE called Visual Studio. + * Blind Insights — what blind coding actually looks like. + * The Sound of Silence — what can be heard when you actually listen. +* About Me — distinct from Blog; a fixed, load-bearing section rather than a + chronological post stream. + * The Origin Story — not an essay; a persona-rationale page explaining why + the Blind Tech Mage persona exists, aimed at a reader who might otherwise + find the branding whimsical. Likely warrants prominent placement (e.g. + linked from the homepage) rather than being buried in a list. + * Personal Interests + * Technology + * AI + * Psychology + * Developmental Psychology + * Personality Typing + * Resume/CV. +* About the Site — possible home for an accessibility/process page + demonstrating the site's own tooling and standard (still an open decision, + see below). +* Contact Me. + +This is still subject to change and confirmation before implementation begins, +per the Plan → Design → Track → Implement → Test process, but represents the +converged state of design discussion so far. ## Functional Requirements (established so far) * A contact form, backed by a TypeScript Cloudflare Worker route. -* Domain-specific, searchable/filterable resource tables, stored in Cloudflare D1, - each in its own table (not a single shared table across domains): - * Ham radio resources. - * Blindness-related resources. - * Project-specific details. -* Public tables are queryable via a public API route and browsable/searchable on - corresponding site pages, filterable by fields appropriate to each domain (e.g. - category, tags via a join table rather than a delimited string column). -* Any private/personal data (notes, drafts, non-public detail) is structurally - separate from public tables — not merely filtered by a status flag — and is never - reachable by the public-facing API routes. +* A single, unified `resources` table in Cloudflare D1 (not one table per domain — + this was the original design, revised once the resource taxonomy grew past + three domains to include Community, Engineering (Software Engineering; AI and + Agentic Workflows), Psychology, Ham Radio, and Blindness). Domain/category/ + subcategory/type (e.g. Organizations vs. Websites) are columns on this one + table, with tags handled via a join table rather than a delimited string + column, so filtering is a real SQL query rather than string matching. +* The Resources page is a single, flat page with filter controls (real + `