Course Configuration
Course info (course_info.yaml)
This is basic metadata about the course.
Example:
catalog_id: "COMP 127"
title: "Object-Oriented Programming and Abstraction"
term: "Fall 2025"
sections: "all sections"
root_path: "f25"
Notes:
sections |
Optional. Useful if separate instructors want to maintain separate timelines / sites. |
root_path |
Places all output pages in a subdirectory, so that it is possible to maintain an archive of multiple years under a single web domain. |
Academic calendar (academic_calendar.yaml)
This describes the dates when class meets. This is the only source of actual calendar dates in the input data; all other dates are computed from the information in this file.
Example:
start_date: "2025-09-03"
end_date: "2025-12-10"
meeting_days: ["Mon", "Wed", "Fri"]
breaks:
- name: "Fall Break"
start_date: "2025-10-16"
end_date: "2025-10-19"
- name: "Thanksgiving Break"
start_date: "2025-11-26"
end_date: "2025-11-30"
Notes:
start_date |
This is the date from which all other dates flow. |
end_date |
This exists only as an integrity check: if the last day listed in the timeline does not fall on end_date, the site builder will emit a warning — and will happily continue to assign course dates past the end of the semester. Watch for that warning! |
breaks |
The date assignment logic skips over these days when mapping the timeline to calendar days. These also show up as items in the course schedule page. |
Links (links.yaml)
This is the link tree that shows up in the site sidebar, which is on every page of the course site (albeit sometimes hidden). The links can be either absolute paths within the course site, or links to external sites:
Simple example:
- name: "Schedule"
url: "/schedule"
- name: "Glossary"
url: "/glossary"
- name: "Procrastination tool"
url: "https://raddle.quest"
Always use absolute paths (with a leading /) for a link from the sidebar to a page within the course site. Relative paths won’t work because the sidebar shows up on all the pages throughout the site, in all their various subdirectories.
Note that Coursage automatically prepends the root path to any path that starts with a slash. For example, with the root_path: "f25" configuration in the example course_info above, /schedule in the links.yaml will become /f25/schedule in the output.
You can group links into sections using the children property:
- name: "Course info"
children:
- name: "Syllabus"
url: "/resources/syllabus"
- name: "Schedule"
url: "/schedule"
- name: "Student Well-Being"
children:
- name: "Mental and Physical Health"
url: "https://www.macalester.edu/health-and-wellness/"
- name: "Academic Success"
url: "https://www.macalester.edu/academic-success/"
- name: "Immediate Help 24/7"
url: "https://www.macalester.edu/dean-of-students/find-help-quickly-24-7-365/"
(You can nest children arbitrarily deep, although this isn’t necessarily advisable! Students are quickly overwhelmed by an overstuffed sidebar, and it’s best to keep the list short.)
There are two dynamically generated links / lists of links you can add with the special_children property. To generate a link to the current / next upcoming day of class in the sidebar, use next_class_day. The following makes a nice first entry in the links list:
- name: "Home"
url: "/"
special_children: next_class_day
To generate links to the full list of all assignment of each assignment type (activities, homeworks, etc.), use assignments:
- name: "Assignments"
special_children: assignments
Use screen_reader_text to add text to the link that only shows up for screen readers. For example, a common accesibility recommendation is for links to PDFs to indicate that they link to a PDF:
- name: "Syllabus"
url: "/resources/syllabus.pdf"
screen_reader_text: "(PDF)"
Use this option when a link’s name is sufficient to make its purpose clear from visual context, but additional text will help disambiguate its meaning for people using screen readers. This is particularly a problem when a sidebar link has the same name as a link that appears on some pages. For example, suppose you want to link to the course schedule from the sidebar, but there is also a homework assignment in the course whose title is “Schedule,” in which the students build a scheduling algorithm. In that case, it’s helpful to clarify that the sidebar link goes to the course schedule and not the homework with that name:
- name: "Schedule"
screen_reader_text: "for the course"
url: "/schedule"
With that configuration, sighted users will see “Schedule,” but screen reader users will hear “Schedule for the course.”
Archive blurb (archive_blurb.md)
This is the text that shows up on the home page after the class has ended. When class is coming up or currently in session, the home page focuses on the needs of students taking the course: What’s today? What’s next? After the end of the semester, however, the web site’s purpose changes: it becomes an archive for people to look back on the content of the course as a whole.
This markdown file should describe the course in general terms for anyone who might come across it online in the future. A course description or introductory section from the syllabus suits the job well.