|
| 1 | +# Project Migration Log & UC OSPO Blueprint |
| 2 | + |
| 3 | +This document contains the technical log of the **UCLA IMLS Open Science** migration and the "Master Prompt" required to replicate this architecture for the **UC OSPO Education Network**. |
| 4 | + |
| 5 | +--- |
| 6 | + |
| 7 | +## Part 1: Migration Log (What We Built) |
| 8 | + |
| 9 | +**Project:** IMLS Open Science for Librarians (Migration & Redesign) |
| 10 | +**From:** Jekyll (Legacy) → **To:** Astro v5 (Modern) |
| 11 | + |
| 12 | +### 1. Architecture & Data Strategy |
| 13 | +* **Centralized Data**: Moved from scattered HTML/Markdown to structured YAML data sources (`lessons.yml` and `sitetext.yml`). The site now treats content like a database. |
| 14 | +* **Dynamic Routing**: Created `[slug].astro` templates to automatically generate 50+ pages (Lesson Details, Author Profiles) from a single data entry. |
| 15 | +* **Cross-Referencing**: Built logic to link Authors to Lessons and Lessons to Authors bi-directionally. |
| 16 | + |
| 17 | +### 2. User Experience (UX) & Discovery |
| 18 | +* **Scaffolding**: Replaced flat lists with **Curated Pathways** ("Start Here," "Browse Curriculum," "Find Tools") to guide users by intent. |
| 19 | +* **Real-Time Discovery**: Implemented a JavaScript-based search bar and thematic filtering system (e.g., "Data Management," "Technical Skills") that works instantly without page reloads. |
| 20 | +* **Unified Resource Grid**: Integrated external resources (NASA TOPS, ACRL Cookbook) alongside internal lessons, visually distinguished by color and icons. |
| 21 | + |
| 22 | +### 3. Academic & Professional Recognition |
| 23 | +* **Credit Infrastructure**: Implemented `CITATION.cff` parsing to auto-generate APA and BibTeX citations for the project. |
| 24 | +* **Author Profiles**: Created dedicated portfolio pages for every contributor, fetching their photos and linking their ORCIDs. |
| 25 | +* **Governance Tracking**: Added metadata to track Lesson Lifecycle (Alpha/Beta/Stable), Pilot History (where/when taught), and Governance Milestones (LC Adoption). |
| 26 | + |
| 27 | +### 4. Compliance & Infrastructure |
| 28 | +* **Accessibility**: Audited and fixed contrast ratios, missing labels, and heading structures to meet **WCAG 2.1 AA** standards. |
| 29 | +* **IMLS Compliance**: Integrated mandatory grant disclaimers and branding across the footer and about pages. |
| 30 | +* **DevOps**: Created GitHub Actions to deploy the site and automatically sync lesson data to the **Organization Profile README**. |
| 31 | + |
| 32 | +--- |
| 33 | + |
| 34 | +## Part 2: The "Master Prompt" for UC OSPO |
| 35 | + |
| 36 | +*Use the prompt below in a new session to build the UC OSPO site using this exact architecture.* |
| 37 | + |
| 38 | +--- |
| 39 | + |
| 40 | +**PROMPT START** |
| 41 | + |
| 42 | +I need you to build a static documentation and education hub for the **UC OSPO Education Network**. I want to replicate the architecture of a successful Astro-based curriculum site. |
| 43 | + |
| 44 | +**Technical Stack:** |
| 45 | +* **Framework:** Astro (v5+) |
| 46 | +* **Styling:** SCSS with Bootstrap 5. |
| 47 | +* **Data Source:** YAML files in `src/data/` (Single Source of Truth). |
| 48 | +* **Deployment:** GitHub Pages via GitHub Actions. |
| 49 | + |
| 50 | +**Core Architecture Requirements:** |
| 51 | + |
| 52 | +1. **Data-Driven Pages:** |
| 53 | + * Create a `resources.yml` file that acts as the database. It should hold metadata for: Title, Abstract, Authors, Duration, License, Repository URL, and "Type" (Internal Curriculum vs. External Reference). |
| 54 | + * Create an `authors.yml` file for people. Include fields for: Name, Role, Affiliation, Image URL, and ORCID. |
| 55 | + * Use Astro's `getStaticPaths()` to dynamically generate a **Detail Page** for every resource and a **Profile Page** for every author. |
| 56 | + |
| 57 | +2. **Bi-Directional Linking:** |
| 58 | + * On a Resource page, list the Authors (linked to their profiles). |
| 59 | + * On an Author page, list the Resources they contributed to (linked to the resources). |
| 60 | + |
| 61 | +3. **Discovery Interface (Homepage):** |
| 62 | + * **Pathways:** Create a "Pathways" component at the top that guides users based on intent (e.g., "For Researchers," "For Administrators," "Getting Started"). |
| 63 | + * **Filterable Grid:** Build a card grid for resources that supports **Real-time Filtering** (by topic/category) and **Text Search**. |
| 64 | + * **Visual Distinction:** Visually differentiate between "Network Created" resources (branded style) and "External References" (distinct border/badge). |
| 65 | + |
| 66 | +4. **Academic & Community Features:** |
| 67 | + * **Citation:** Create a component that parses a `CITATION.cff` file and displays a copy-pasteable APA/BibTeX citation. |
| 68 | + * **Status Tracking**: Display badges for resource maturity (Alpha/Beta/Stable) and include a "Workshop History" section on resource pages. |
| 69 | + * **Governance**: Add fields to track if a resource has been formally adopted or reviewed by the governance board. |
| 70 | + |
| 71 | +5. **DevOps & Maintenance:** |
| 72 | + * Write a GitHub Action that syncs the list of resources from the website's YAML data to the Organization's Profile README. |
| 73 | + |
| 74 | +**Design Philosophy:** |
| 75 | +The site should feel like a **Professional Academic Hub**. It needs to give credit to contributors (students and staff), meet WCAG 2.1 AA Accessibility standards, and clearly acknowledge funding sources. |
| 76 | + |
| 77 | +Please start by scaffolding the Astro project structure and defining the `resources.yml` schema. |
| 78 | + |
| 79 | +**PROMPT END** |
| 80 | + |
| 81 | +--- |
| 82 | + |
| 83 | +## Part 3: Key Files to Copy Over (Shortcuts) |
| 84 | + |
| 85 | +When building the new site, copy these files from the `ucla-imls-open-sci` repo to the new UC OSPO repo to save time: |
| 86 | + |
| 87 | +1. **`src/utils/slugs.ts`**: The slug generator helper. |
| 88 | +2. **`scripts/generate_readme_table.py`**: The script that syncs data to the GitHub profile. |
| 89 | +3. **`.github/workflows/sync-readme.yml`**: The workflow that runs the script. |
| 90 | +4. **`src/components/Citation.astro`**: The CFF parser component. |
| 91 | +5. **`src/components/SEO.astro`**: The social meta-tag component. |
| 92 | +6. **`src/pages/rss.xml.js`**: The RSS feed generator. |
0 commit comments