{"id":18993504,"url":"https://github.com/mdibyo/berkeley-scheduler","last_synced_at":"2026-03-05T12:03:33.293Z","repository":{"id":71850664,"uuid":"57092583","full_name":"mDibyo/berkeley-scheduler","owner":"mDibyo","description":null,"archived":false,"fork":false,"pushed_at":"2022-10-14T16:28:57.000Z","size":45464,"stargazers_count":11,"open_issues_count":22,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-22T12:51:51.423Z","etag":null,"topics":["angularjs","berkeley","berkeley-scheduler","bs-bot","bsd-license","dibyo","front-end","github-pages","open-source"],"latest_commit_sha":null,"homepage":"https://berkeleyscheduler.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mDibyo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-04-26T02:50:21.000Z","updated_at":"2024-03-13T05:32:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"6b0fc63a-7f03-4e0e-9598-7ba442f7a87c","html_url":"https://github.com/mDibyo/berkeley-scheduler","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/mDibyo/berkeley-scheduler","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mDibyo%2Fberkeley-scheduler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mDibyo%2Fberkeley-scheduler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mDibyo%2Fberkeley-scheduler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mDibyo%2Fberkeley-scheduler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mDibyo","download_url":"https://codeload.github.com/mDibyo/berkeley-scheduler/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mDibyo%2Fberkeley-scheduler/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30123734,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T11:11:57.947Z","status":"ssl_error","status_checked_at":"2026-03-05T11:11:29.001Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angularjs","berkeley","berkeley-scheduler","bs-bot","bsd-license","dibyo","front-end","github-pages","open-source"],"created_at":"2024-11-08T17:21:40.850Z","updated_at":"2026-03-05T12:03:33.274Z","avatar_url":"https://github.com/mDibyo.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Berkeley Scheduler\n\nCode for [berkeleyscheduler.com](https://berkeleyscheduler.com), a class\nschedule planner for UC Berkeley students.\n\n\n## Reporting issues\n\nYou can report bugs and suggest features on the\n[issues](https://github.com/mDibyo/berkeley-scheduler/issues)\npage. Before adding a new issue, check if the issue has already been added.\nIf so, please comment on the existing issue, instead of creating a new one.\nThis will help us a lot in addressing issues.\n\n\n## Contributing\n\nTo contribute, take a look at [CONTRIBUTING.md](CONTRIBUTING.md).\n\n\n## Setting up the project\n\n\n### Running the website locally\n\nBerkeley Scheduler is a static website. All its functionality is handled\nin the frontend (on the AngularJS framework). In order to allow the\nwebsite to be hosted on Github, all compiled resources used by the\nwebsite must be precompiled and stored alongside the source code.\nTherefore, running the website locally is as simple as cloning the\nproject and serving it from the filesystem with a static pages server\nsuch as python's SimpleHTTPServer.\n\n1. Clone the project.\n2. Start up the static pages server from the root of the cloned project\ndirectory with `python -m SimpleHTTPServer 8421`.\n3. Visit the website at [http://localhost:8421](http://localhost:8421).\n\n\n### Developing on the frontend\n\nAs mentioned above, all work on the website is done in Javascript. The\ncode is dependent on a number of libraries available through\n\n1. [Install node and npm](https://docs.npmjs.com/getting-started/installing-node).\n1. Install all dependencies by running `npm install` in the project\ndirectory.\n1. To see changes reflected on the website, run `gulp` in the project\ndirectory. This compiles all svg and js sources and stores them in their\nfinal location.\n1. Before committing, run `gulp release`, which in addition to compiling\nsvg and js resources, minifies and uglifies the js resources.\n\n\n### Developing on the data pipeline\n\nThe class enrollment data on Berkeley Scheduler is obtained from the\nStudent Information Systems (SIS) APIs. The data pipeline (/data) is\nresponsible for fetching and updating this data. It is currently run\nmanually once a day.\n\nAn APP_ID and APP_KEY are required for accessing the API. SIS has\napproved Berkeley Scheduler's request to access the API, and has issued\nus APP_ID, APP_KEY pairs for the APIs. Any resource requests made to the\nAPI for use on Berkeley Scheduler must use these specific pairs. To work\non the data pipeline, send an email to berkeley-scheduler@berkeley.edu\nstating what you would be using the API for. On receiving the APP_ID and\nAPP_KEY, copy the `server/.credentials.tmpl` folder to the\n`server/.credentials` folder and set the environment variables in the\n`server/.credentials/sis_api.sh` file.\n\nNote that access to the APIs is not required for working on the frontend\nsince a set of enrollment data has already been fetched and stored in\ndata/final.\n\nRun the pipeline by running `./run.sh` inside the /data directory. The\ndaily runs skip a number of steps, so when running for the first time,\nset `daily` to `false` in `./run.sh`.\n\nNote, the `finalize` step in `./run.sh`. This step copies over the\nprocessed output from the data/intermediate directory to the data/final\ndirectory. Before doing that, it copies the old output in data/final to\ndata/recover. If something goes wrong, and you only realize it after\n`finalize` has completed, run `./recover.sh` to restore the old output.\n\n\n## Acknowledgements\n\nI would like to thank everyone who has contributed to the development\nof this project, for providing feedback and brainstorming ideas with me.\n\nThere are however a few people who have contributed a lot to this\nproject, and I would like to acknowledge them. Mihir Patil,\nRevati Kapshikhar, Tiffany Qi and Viraj Mahesh: thanks a lot for all the\nsupport, the feedback, the help you guys provided to me. Without you\nguys, this would not have happened.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdibyo%2Fberkeley-scheduler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmdibyo%2Fberkeley-scheduler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdibyo%2Fberkeley-scheduler/lists"}