A structured catalog of CUNY Open Educational Resources, published as a self-contained HTML file with sortable, searchable, and filterable tables powered by DataTables.
Each academic year has its own standalone HTML file generated from an Excel source workbook.
oer-catalog-2024-2025.html # Generated catalog (open in any browser or embed in LibGuides)
data/
oer-catalog-2024-2025.xlsx # Source Excel workbook for AY 2024–2025
generate.py # Script used by CI to regenerate HTML
.github/workflows/
generate.yml # Automatically regenerates HTML when a workbook is uploaded
README.md
The HTML is generated automatically whenever a workbook is uploaded to the data/ folder on GitHub. No Python or command-line knowledge is needed.
Workbook requirements:
- The filename must follow the format
oer-catalog-YYYY-YYYY.xlsx(e.g.,oer-catalog-2025-2026.xlsx) - It must contain a sheet named
Catalogwith these columns (in any order):Campus,OER Title,Type,Discipline,Author,Platform,Link
- Go to the repository on GitHub and open the
data/folder. - Click "Add file" → "Upload files".
- Drop in the updated workbook, using the same filename as the existing one (e.g.,
oer-catalog-2024-2025.xlsx). GitHub will overwrite the old file. - Click "Commit changes".
GitHub will automatically regenerate oer-catalog-2024-2025.html within a minute or two.
- Go to the repository on GitHub and open the
data/folder. - Click "Add file" → "Upload files".
- Drop in the new workbook. The filename must follow this exact format:
For example:
oer-catalog-YYYY-YYYY.xlsxoer-catalog-2025-2026.xlsx. The script will fail if the filename doesn't match. - Click "Commit changes".
GitHub will automatically generate a new oer-catalog-2025-2026.html at the root of the repository.
Once the HTML has been generated (check the Actions tab to confirm the workflow completed), a staff member with SSH access pulls the changes:
cd /var/www/html/oer
git pullReplace iframe-resizer with the name of the branch you want to deploy:
cd /var/www/html/oer
git fetch
git checkout iframe-resizer
git pullTo switch back to main after testing:
git checkout main
git pullUse a Rich Text / HTML box in your LibGuide and paste the following snippet.
To embed from GitHub Pages (recommended for LibGuides, avoids browser Local Network Access blocking):
<script src="https://cdn.jsdelivr.net/npm/iframe-resizer@4/js/iframeResizer.min.js"></script>
<iframe
id="oer-catalog-frame-2025"
src="https://cuny-libraries.github.io/oer-catalog/oer-catalog-2024-2025.html"
width="100%"
style="border: none;"
title="CUNY OER Catalog 2024–2025"
></iframe>
<script>
iFrameResize({ license: 'GPLv3' }, '#oer-catalog-frame-2025');
</script>To embed from the OLS server instead:
<script src="https://cdn.jsdelivr.net/npm/iframe-resizer@4/js/iframeResizer.min.js"></script>
<iframe
id="oer-catalog-frame-2025"
src="https://ols.cuny.edu/oer/oer-catalog-2024-2025.html"
width="100%"
style="border: none;"
title="CUNY OER Catalog 2024–2025"
></iframe>
<script>
iFrameResize({ license: 'GPLv3' }, '#oer-catalog-frame-2025');
</script>The iframe will automatically resize to fit the table content, eliminating the in-frame scrollbar.
The id uses the latter year of the academic year range (e.g., oer-catalog-frame-2025 for AY 2024–2025, oer-catalog-frame-2026 for AY 2025–2026). This ensures unique IDs if multiple catalog years are embedded on the same page. Update the src, id, title, and selector to match each year.