๐ Create semester schedules without stress. This is the monorepository for the senior-knights/course-schedulizer
project. For more information about the application, please view the About Page on our website. For help using the application, visit our Help Page (once we make it).
Created by current students at Calvin University for their computer science senior project.
Every year, all department chairs at Calvin must develop a schedule for their departmentโs classes based on a spreadsheet provided to them by the Registrar. The schedule must contain the times, professors, and rooms for every class section in the department and the schedule must satisfy many constraints, for example: only one section can be in a room at a time, a professor can only teach one section at a time, among others. These constraints make it extremely difficult for the department chair to create a schedule without a tool to help them. We propose building a web application, named the Course Schedulizer, that will allow department chairs to visualize and manipulate their department course schedules. It will provide: the ability to upload and export department schedules via CSV, integration with the spreadsheets provided and required by the Registrar, two views to visualize the schedule data (by location and by instructor), schedule conflict detection and resolution suggestions (for the honors portion), and many other features.
For more information, please visit the About Page.
Detailed information can be found on our Help Page (once we make it). Access our production website and upload a CSV following the prescribed specifications (items marked with * are optional and ignored, but were required in older versions of the app)
- Department: string (like
Mathematics
) - *Term: [0-9][0-9]/(FA | SP | IN) (like
21/SP
for Spring 2021) - TermStart: mm/dd/yyyy (like
3/29/2021
or12/1/2022
) - *AcademicYear: yyyy (like
2021
) - *SectionName: SubjectCode-CourseNum-SectionCode (like
MATH-252-B
) - SubjectCode: string (like
MATH
) - CourseNum: string (like
252
or252L
for a lab) - SectionCode: string (like
B
) - CourseLevelCode: pos num (like
200
for a 200 level course) - MinimumCredits: pos num (like
3
or3.5
) - FacultyLoad: pos num (like
4
or4.5
) - *Used: pos num (like
20
) - *Day10Used: pos num (like
22
) - *LocalMax: pos num (like
25
) - *GlobalMax: pos num (like
30
) - *RoomCapacity: pos num (like
32
) - BuildingAndRoom: string (like
HH 345
) - MeetingDays: M?T?W?(TH)?F? (like
MWTHF
) - MeetingTime: xx:xx(AM | PM) - xx:xx(AM | PM) (like
9:00AM - 9:50AM
) - SectionStartDate: mm/dd/yyyy (like
3/29/2021
or12/1/2022
) - SectionEndDate: mm/dd/yyyy (like
3/29/2021
or12/1/2022
) - *Building: string (like
HH
) - *RoomNumber: string (like
345
) - MeetingStart: xx:xx(AM | PM) (like
2:30PM
) - *MeetingStartInternal: xx:xx:xx 24-hour (like
14:30:00
) - MeetingEnd: xx:xx(AM | PM) (like
3:20PM
) - *MeetingEndInternal: xx:xx:xx 24-hour (like
13:20:00
) - *Monday:
M
or empty - *Tuesday:
T
or empty - *Wednesday:
W
or empty - *Thursday:
TH
or empty - *Friday:
F
or empty - ShortTitle: string (like
Number Theory
) - Faculty: string (first and last) (like
Paul Erdos
) - *SectionStatus: string (like
Active
) - InstructionalMethod:
LEC
,CPI
,IND
,TUT
, orSEM
- DeliveryMode:
In-person
,Online (synchronous)
,Online (asynchronous)
,Hybrid
This is a mono repository for the Course Schedulizer project. It is best used with VS Code. To begin editing, open the workspace file, located in .vscode/
, with VS Code. Opening the workspace in VS Code will prompt to install extensions; please do so.
This provides information about the root repository, for the client app information, please view the client-course-schedulizer/README.md
.
production
branch is a persistent branch that contains the most stable version of the Course Schedulizer. It requires two reviews to merge PRs to this branch.
develop
branch is a persistent branch that contains the cutting edge version of the Course Schedulizer. It requires one review to merge PRs to this branch. Each PR is ideally around 100-200 LOC.
Code reviews are done on every PR merged into the two persistent branches. A PR is made with a branch following the naming convention of <broad>/<specific>
. <broad>
are things like feature
, docs
, chore
, fix
, etc.
Because the application is open source, we use free minutes of GitHub actions to perform CI/CD. ci.yml
tests on any push or PR against develop
or production
.
.vscode/
contains the directory settings. It most notably uses Prettier to format code on save. Formatting will fix ESLint issues, organize imports, and then fix Editor Config and Prettier issues. .editorconfig
and .prettierrc.js
are located in the root, and .eslint.js
is specific to each application. For example, the client config is located inside the client folder.