Coursetable is made of two big parts:
- Website: The site you see when you go to coursetable.com. The code for this – the front-end site as well as the various back-end scripts that handle user actions – is contained within this repository.
- Crawler: The scripts behind the scenes that actually get all the data from Yale’s websites. The code for this is in our ferry repository.
The various functions of the website are compartmentalized as follows:
/api
: An Express server for backend logic./frontend
: The current face of the site, built with React./web
: PHP scripts migrated from the old site./proxy
: Proxy configuration for relaying connections between services (e.g. authentication headers, CAS cookies, etc.)/docker
: Configuration files for running everything together in Docker./legacy
: Static HTML files from the old site./scripts
and/sysadmin
: Administration scripts and bootstrapping tools.
See this architecture diagram.
Check out the getting started guide.
Contributing code:
- Create a branch for your feature. This can usually be done with
git checkout -b <username>/<feature_name>
- make changes.
- Create some commits and push your changes to the origin.
- Create a pull request and add a few reviewers. In the pull request, be sure to reference any relevant issue numbers.
- Once the pull request has been approved, merge it into the master branch.
Style:
For different languages:
- TypeScript & JavaScript: We use prettier to automatically format the code. Make sure you use your editor's integration!
- PHP: We use PHP CodeSniffer to maintain coding standards; generally, it's 4 spaces for tabs, camelCase for variables, and follow whatever else that's in use right now.
We have automated checks set up that will run for every commit and pull request.
Roadmap:
We use GitHub issues to track bugs and feature requests: https://github.com/coursetable/coursetable/issues.
We use GitHub projects to manage everything and do planning: https://github.com/orgs/coursetable/projects/2.
Check out How to deploy.