Create academic course schedules without stress.
This is the repository for the Course Schedulizer project created by students at Calvin University for the Computer Science senior project. For more information, see the:
- About page for a discussion of the purpose of the application.
- Help page for instructions on how to use the application.
- Client README file for a specification of the system development workflows.
We generally follow the Gitflow collaboration model, using these branches.
- The
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. - The
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. - Feature branches are cloned from
develop
and are used for developing new features. They are merged back intodevelop
when the feature is complete.
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.
The repo is a mono-repository with one application, stored in ./client-course-schedulizer
, and the possibility of adding applications in the future.
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
.
To work with this GitHub codebase, git clone
this repo and cd
into the new repo sub-directory.
Development is best done using VS Code and the pre-defined project workspace. To begin editing, open the workspace file with VS Code. This will configure VS Code settings and prompt you to install the recommended VS Code extensions, which helps maintain the consistency and quality of the project codebase. The extensions include:
- EditorConfig, which specifies shared editor configuration parameters (see
.editorconfig
). - Prettier, which formats code and organizes imports (see
.prettierrc.js
). - ESLint, which specifies application-specific formatting rules (see
client-course-schedulizer/.eslintrc.js
; n.b.,client-course-schedulizer/.env
allows for overriding the Create React App ESLint configuration. - CSpell, which checks spelling in markdown, comments, and strings (see the
cspell
settings in.vscode/course-schedulizer.code-workspace
).
You can add your own user-specific VS Code extensions, but be sure to use these recommended, shared settings and extensions.