Skip to content

Commit b08c953

Browse files
committed
Final: Commit all pending content, config, and component updates
1 parent 31fd775 commit b08c953

File tree

11 files changed

+176
-31
lines changed

11 files changed

+176
-31
lines changed

CITATION.cff

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,17 @@ authors:
2020
given-names: Todd
2121
orcid: "https://orcid.org/0000-0003-2218-7200"
2222
affiliation: "University of California, Los Angeles"
23-
- family-names: McAulay
24-
given-names: Elizabeth
25-
orcid: "https://orcid.org/0000-0002-8679-9727"
23+
- family-names: Huang
24+
given-names: Zikang (Eric)
25+
orcid: "https://orcid.org/0009-0007-9906-6067"
26+
affiliation: "University of California, Los Angeles"
27+
- family-names: Lee
28+
given-names: Lawrence
29+
orcid: "https://orcid.org/0000-0003-1529-2002"
30+
affiliation: "University of California, Los Angeles"
31+
- family-names: Kim
32+
given-names: Madeline
33+
orcid: "https://orcid.org/0000-0002-2213-201X"
2634
affiliation: "University of California, Los Angeles"
2735
abstract: "A comprehensive, open-source curriculum for librarians covering Open Science principles, data management, reproducibility, and community building. Funded by the Institute of Museum and Library Services (IMLS)."
2836
keywords:

MIGRATION_GUIDE_AND_OSPO_PROMPT.md

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
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.

src/components/Contact.astro

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
---
2+
---
3+
<section class="page-section bg-light" id="contact">
4+
<div class="container">
5+
<div class="row">
6+
<div class="col-lg-12 text-center">
7+
<h2 class="section-heading text-uppercase">Contact Us</h2>
8+
<h3 class="section-subheading text-muted">Have questions about the curriculum or interested in collaborating?</h3>
9+
</div>
10+
</div>
11+
<div class="row justify-content-center text-center">
12+
<div class="col-md-4 mb-4">
13+
<div class="contact-item">
14+
<span class="fa-stack fa-3x mb-3">
15+
<i class="fas fa-circle fa-stack-2x text-primary"></i>
16+
<i class="fas fa-envelope fa-stack-1x fa-inverse"></i>
17+
</span>
18+
<h4>Email</h4>
19+
<p><a href="mailto:[email protected]" class="text-muted">[email protected]</a></p>
20+
</div>
21+
</div>
22+
<div class="col-md-4 mb-4">
23+
<div class="contact-item">
24+
<span class="fa-stack fa-3x mb-3">
25+
<i class="fas fa-circle fa-stack-2x text-success"></i>
26+
<i class="fas fa-hand-paper fa-stack-1x fa-inverse"></i>
27+
</span>
28+
<h4>Pilot Interest</h4>
29+
<p class="text-muted">Interested in teaching a lesson? Open a <a href="https://github.com/ucla-imls-open-sci/ucla-imls-open-sci.github.io/issues/new?template=pilot-interest.yml" target="_blank" class="text-primary">Pilot Request</a>.</p>
30+
</div>
31+
</div>
32+
<div class="col-md-4 mb-4">
33+
<div class="contact-item">
34+
<span class="fa-stack fa-3x mb-3">
35+
<i class="fas fa-circle fa-stack-2x text-info"></i>
36+
<i class="fab fa-twitter fa-stack-1x fa-inverse"></i>
37+
</span>
38+
<h4>Stay Connected</h4>
39+
<p><a href="https://twitter.com/jt14den" target="_blank" class="text-muted">Follow us on Twitter/X</a></p>
40+
</div>
41+
</div>
42+
</div>
43+
</div>
44+
</section>

src/components/LessonCard.astro

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -82,22 +82,24 @@ const authorImages = !isExternal && lesson.authors ? lesson.authors.map((authorN
8282
<i class={`fas ${resourceIcon} mr-1`}></i> {lesson.learningResourceType || 'Reference'}
8383
</small>
8484
) : (
85-
<div class="avatars d-flex">
86-
{authorImages.map((img: any) => (
87-
<img
88-
src={img.src}
89-
alt={img.name}
90-
title={img.name}
91-
class="rounded-circle border border-white"
92-
style="width: 32px; height: 32px; margin-right: -10px; object-fit: cover;"
93-
/>
94-
))}
85+
<div class="d-flex w-100 align-items-center justify-content-between">
86+
<div class="avatars d-flex">
87+
{authorImages.map((img: any) => (
88+
<img
89+
src={img.src}
90+
alt={img.name}
91+
title={img.name}
92+
class="rounded-circle border border-white"
93+
style="width: 32px; height: 32px; margin-right: -10px; object-fit: cover;"
94+
/>
95+
))}
96+
</div>
97+
<div class="d-flex align-items-center">
98+
<img src="/assets/img/clients/Uxd_Wht_A_Library_300.png" alt="UCLA Library" style="height: 20px; margin-right: 12px; filter: brightness(0);" />
99+
<img src="/assets/img/imls_logo_2c.png" alt="IMLS" style="height: 22px;" title="Supported by IMLS" />
100+
</div>
95101
</div>
96102
)}
97-
<div class="d-flex align-items-center">
98-
<img src="/assets/img/clients/Uxd_Wht_A_Library_300.png" alt="UCLA" style="height: 25px; margin-right: 10px; filter: brightness(0);" />
99-
<img src="/assets/img/IMLS_blue.png" alt="IMLS" style="height: 25px;" title="Supported by IMLS" />
100-
</div>
101103
</div>
102104
</div>
103105
</div>

src/content/blog/2022-12-14-cfp.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
title: "Call for Proposals: Lessons for Librarians in Open Science Principles and Methods 2022-23"
33
date: 2022-12-14
44
author: Library Staff
5+
description: "The first call for proposals for the IMLS-funded Open Science for Librarians project, seeking authors for our first cohort of lessons."
56
---
67

78
<div class="col-lg-12 text-center">

src/content/blog/2023-08-07-celebrating-winners.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
title: Celebrating the Winners of Lessons for Librarians in Open Science Principles and Methods in 2023
33
date: 2023-08-07
44
author: Library Staff
5+
description: "Announcing the six outstanding groups of applicants selected to develop the first round of open science lessons for librarians."
56
---
67

78

src/content/blog/2024-03-11-cfp.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ title: "Call for Proposals: Lessons for Librarians in Open Science Principles an
33
date: 2024-03-11
44
author: Library Staff
55
background: grey
6+
description: "The second round call for proposals for 2024, inviting contributions to expand our curriculum into new areas of open science."
67
---
78

89
<div class="col-lg-12 text-center">

src/content/blog/2024-1-31-extension.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
title: "New Deadline for Grant Opportunity: Open Science for Librarians 2024"
33
date: 2024-01-31
44
author: Library Staff
5+
description: "Important update: The application deadline for the 2024 lesson proposals has been extended to February 29th."
56
---
67

78
<!---

src/content/config.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import { defineCollection, z } from 'astro:content';
2+
import { glob } from 'astro/loaders';
23

3-
const blogCollection = defineCollection({
4+
const blog = defineCollection({
5+
// Use the modern glob loader for Astro 5
6+
loader: glob({ pattern: '**/[^_]*.md', base: "./src/content/blog" }),
47
schema: z.object({
58
title: z.string(),
69
date: z.date().optional(),
710
author: z.string().optional(),
8-
layout: z.string().optional(),
9-
// Add other fields if necessary
11+
description: z.string().optional(),
1012
}),
1113
});
1214

13-
export const collections = {
14-
'blog': blogCollection,
15-
};
15+
export const collections = { blog };

src/data/sitetext.yml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -99,16 +99,10 @@ en: &DEFAULT_EN
9999
people:
100100
- name: "Todd Grappone"
101101
role: "Associate University Librarian, Digital Initiatives and IT, UCLA"
102-
image: /assets/img/committee/default.jpeg
102+
image: /assets/img/staff/ToddGrappone.jpg
103103
social:
104104
- url: https://orcid.org/0000-0003-2218-7200
105105
icon: fab fa-orcid
106-
- name: "Elizabeth McAulay"
107-
role: "Director of the Digital Library, UCLA"
108-
image: /assets/img/committee/default.jpeg
109-
social:
110-
- url: https://orcid.org/0000-0002-8679-9727
111-
icon: fab fa-orcid
112106
- name: "Tim Dennis"
113107
role: "Program Director"
114108
image: /assets/img/staff/timdennis.jpeg

0 commit comments

Comments
 (0)