Website Improvement — Pull Request Roadmap
Follow-on work from the design/SEO review. Each PR below is self-contained, ordered roughly by impact-to-effort, and written so it can be handed directly to a developer or coding agent. The “Prompt” block in each is agent-ready.
Guiding goal: raise the site’s professionalism and express vigor in training, research, and patient care — with a deeper emphasis on training and research. Bias every visual/content decision toward showing people, work, outcomes, and scale.
Shared conventions for all PRs: - Branch from latest main; one PR per item; keep diffs focused. - Quarto site: content in .qmd, theming in theme.scss, component CSS in styles.css, reusable HTML/JS in fragments/, post-render R in _R/. - Reuse existing card CSS patterns (.publication-card, .product-card, .event-item) rather than inventing new ones. - Preserve existing accessibility wins (alt text, ARIA fixes in _R/fix_navbar_aria.R) and structured data. - Validate with quarto render locally before opening the PR.
PR 1 — Research Programs card grid on the homepage
Type: Layout / content · Effort: Medium · Impact: High
Background
The flagship “Our Research Programs” section on the homepage (index.qmd:49–52) is a single paragraph of inline links. It is the most important section on the site for conveying research breadth, yet it reads as an afterthought and gives no visual weight to any program. The IDEAS page (groups/ideas.qmd) already defines a clean .product-grid/.product-card pattern we can lift.
Scope
Replace the paragraph with a responsive card grid — one card per research program, each with a short label, a one-line description, and a link to the program page. Programs (from the navbar): Vaccines, Antimicrobial Resistance, Pathogens/Transmission & Emerging Diseases, Clinical Trials, HIV, STIs / Center of Excellence for Gonorrhea, Substance Use-Associated Infections, Infection Control, Modeling & Data Science (IDEAS).
Files
index.qmd(replace the section)styles.css(promote/reuse card grid styles so they’re available site-wide)- Optionally
fragments/_research-cards.qmd(new include, for reuse on other pages)
Acceptance criteria
- Grid is responsive (auto-fit, min ~260px), keyboard-focusable links, visible hover state, meets WCAG AA contrast.
- Each card links to the correct existing program page.
- No regression to the existing publications/events includes below it.
Prompt
On the Wake Forest ID Quarto site, replace the “Our Research Programs” paragraph in
index.qmdwith a responsive card grid. Reuse the.product-grid/.product-cardstyling fromgroups/ideas.qmdby moving those rules intostyles.cssso they are available site-wide, then build one card per research program (Vaccines, Antimicrobial Resistance, Pathogens & Emerging Diseases, Clinical Trials, HIV, STIs/Gonorrhea, Substance Use-Associated Infections, Infection Control, IDEAS/Data Science). Each card gets a heading, a one-sentence description, and a link to the matchinggroups/*.qmdpage. Keep it accessible (focusable links, AA contrast) and verify withquarto render.
PR 2 — “By the numbers” impact band
Type: Layout / content · Effort: Medium · Impact: High
Background
Nothing on the homepage quantifies the section’s scale, so “vigor” is asserted in prose rather than shown. A compact stat strip is the single most effective way to convey momentum in research, training, and care at a glance.
Scope
Add a horizontal stat band near the top of index.qmd (below the hero) with 4–6 metrics. Candidate metrics (confirm real numbers with the section before publishing — do not invent figures): active clinical trials, faculty, trainees/fellows, annual peer-reviewed publications, surveillance sites, grant funding. Each stat = a large number + a short label.
Files
index.qmdstyles.css(new.stat-band/.statrules)
Acceptance criteria
- Numbers are placeholders clearly marked
TODO: confirmuntil the section provides real figures; no fabricated statistics ship. - Responsive (wraps to 2 columns on mobile), AA contrast, semantic markup (each stat readable by screen readers as “N — label”).
Prompt
Add a “By the numbers” impact band to
index.qmddirectly under the hero, styled instyles.cssas a responsive flex/grid strip of 4–6 stat tiles (big number + label). Use placeholder values markedTODO: confirm with section— do not fabricate statistics. Metrics: active clinical trials, faculty, fellows/trainees, annual publications, surveillance sites, grant funding. Ensure it wraps gracefully on mobile and meets AA contrast.
PR 3 — Server-render publications (SEO + polish)
Type: SEO / layout · Effort: Medium · Impact: High
Background
publications.qmd fetches a PubMed RSS feed client-side via OJS/d3 and renders it with hard-coded width = 400 and 12px fonts. Two problems: (1) search engines never see the publication list (it’s built in the browser), so a large body of authoritative, keyword-rich content is unindexed; (2) it looks inconsistent with the polished .publication-card styling used elsewhere.
Scope
Replace the OJS block with server-side rendering using the existing _R/get_publications.R + render_publications_md() helpers (already used in fragments/_publications.qmd and person pages), emitting .publication-card markup. Keep the “see full list on PubMed” link.
Files
publications.qmd(swap OJS for an R chunk)- Possibly minor helper reuse from
_R/get_publications.R
Acceptance criteria
- Publications render at build time (visible in page source without JS).
- Uses the shared
.publication-cardstyling; consistent with homepage. - Graceful fallback if the feed is unavailable at build time.
Prompt
In
publications.qmd, remove the client-side OJS/d3 rendering and instead render publications server-side using_R/get_publications.Randrender_publications_md()(seefragments/_publications.qmdfor the pattern), outputting the shared.publication-cardmarkup. Ensure the list is present in the static HTML (no JS required) for SEO, keep a link to the full PubMed list, and handle the feed being unavailable at build time without failing the render.
PR 4 — Fellowship “Program at a glance” + alumni outcomes
Type: Content / SEO · Effort: Medium · Impact: High (training focus)
Background
The fellowship page (fellowship.qmd) reads well but omits the concrete facts prospective applicants search for and compare on. Adding them deepens the training story and creates keyword-rich, structured content.
Scope
Add two things to fellowship.qmd: 1. A “Program at a glance” facts block: duration (2 yr + optional research year), number of positions, ACGME accreditation status, application pathway (ERAS/NRMP) and timeline, board pass rate (if available), core rotations. 2. An “Where our fellows go” / alumni outcomes section naming the kinds of roles and, where permitted, institutions alumni have joined (currently only “academic, community, private practice” in prose).
All specific facts must be confirmed with the program — mark unknowns TODO: confirm.
Files
fellowship.qmdfragments/fellowship-jsonld.html(feed the new facts into schema — see PR 7)
Acceptance criteria
- Facts block is scannable (definition list or small card grid), mobile-friendly.
- No unverified specifics published; placeholders clearly flagged.
Prompt
Enhance
fellowship.qmdwith (1) a “Program at a glance” facts block (duration, positions/year, ACGME status, ERAS/NRMP pathway + timeline, board pass rate, core rotations) rendered as a definition list or small card grid, and (2) a “Where our fellows go” alumni-outcomes section. UseTODO: confirmplaceholders for any specific number/claim not already on the site — do not invent facts. Keep it responsive and accessible.
PR 5 — Resolve the palette: make the brand color drive the design
Type: Visual / theming · Effort: Large · Impact: High
Background
theme.scss sets $primary: #000000 (black) while $primary-rgb: 140,109,44 (gold) — so computed tints/borders derive from gold but the navbar, footer, and headings render black. The result is a flat, monochrome site that underuses the Wake gold (#8C6D2C) and the Atrium accent colors already defined but unused. A coherent gold-or-navy primary with disciplined accents will read as far more professional and energetic. (Note: current gold link color #8C6D2C on white measures ~4.85:1 — it passes AA, so link contrast itself is fine; the issue is the overall monochrome feel.)
Scope
Introduce an intentional primary (recommend Wake navy #002B49 or gold #8C6D2C) and a small, consistent accent set; reconcile $primary with $primary-rgb; apply to navbar, footer, headings, links, and section rules. Ship a before/after screenshot set. This is design-sensitive — pair with the site owner and iterate.
Files
theme.scss(primary/emphasis, navbar, footer, headings, links,h2rule)- Spot-check
styles.css,.donation-card,.events-pagination-btn, IDEAS inline styles for color consistency
Acceptance criteria
$primaryand$primary-rgbdescribe the same color.- All text/interactive elements meet WCAG AA.
- Navbar, footer, headings, links share one coherent brand system.
- Before/after screenshots attached to the PR.
Prompt
Rework the color system in
theme.scssso the brand color actually drives the design. Today$primaryis black but$primary-rgbis gold — reconcile them to a single intentional primary (propose Wake navy #002B49 and Wake gold #8C6D2C as primary/accent) and apply it consistently to navbar, footer, headings, links, andh2borders. Keep everything WCAG AA. Auditstyles.css(donation card, pagination buttons) and the IDEAS inline styles for consistency. Attach before/after screenshots of the home, fellowship, and a group page.
PR 6 — Homepage hero redesign
Type: Visual / layout · Effort: Large · Impact: High
Background
The homepage hero is a group photo (assets/id-section.png) with a baked-in rounded border and drop shadow in the raster file itself, which reads as dated. There’s no headline overlay and no calls to action. The page then opens into long full-width paragraphs.
Scope
- Re-export
id-section.pngwithout the baked-in frame/shadow (clean edges), or source a higher-impact full-bleed hero image. - Build a proper hero: image + concise headline + 2–3 CTA buttons (“Explore our research”, “Meet our team”, “Apply to the fellowship”). Let CSS own any framing.
- Tighten the intro copy that follows so the page has clear visual hierarchy.
Files
index.qmd,styles.css,assets/id-section.png(re-exported), possibly a new hero asset
Acceptance criteria
- No baked-in borders/shadows in the hero image; framing via CSS only.
- Hero has a headline and working CTA buttons with visible focus states.
- Responsive; image has descriptive alt text and explicit dimensions (
_R/add_image_dimensions.Ralready runs post-render — keep it working).
Prompt
Redesign the homepage hero in
index.qmd+styles.css. Replace the framed-in-raster group photo with a clean full-bleed image (re-exportassets/id-section.pngwithout its baked-in border/shadow, or use a new hero), overlay a concise headline, and add 2–3 CTA buttons (research, team, fellowship). CSS owns all framing. Keep it responsive, accessible (alt text, focus states), and don’t break the post-render image-dimensions step.
Suggested sequencing
- PR 8 (social card) and PR 1 (research grid) — fast, visible.
- PR 2 (stats) and PR 4 (fellowship facts) — content the section must supply numbers for; start those conversations early.
- PR 3 (publications SSR) and PR 7 (structured data) — SEO depth.
- PR 5 (palette) and PR 6 (hero) — design-led, iterate with the owner; do PR 5 before PR 6 so the hero uses the finalized colors.