{"id":16489588,"url":"https://github.com/alvinwan/staging","last_synced_at":"2025-07-23T05:33:39.868Z","repository":{"id":89467796,"uuid":"99558881","full_name":"alvinwan/staging","owner":"alvinwan","description":"template for course website generator and staging, production deployments","archived":false,"fork":false,"pushed_at":"2018-02-04T01:45:11.000Z","size":53,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-05-02T17:58:29.912Z","etag":null,"topics":["course-management","cs189","cs70","python","website"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alvinwan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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}},"created_at":"2017-08-07T09:08:37.000Z","updated_at":"2024-11-05T13:33:39.000Z","dependencies_parsed_at":"2023-03-08T21:30:10.726Z","dependency_job_id":null,"html_url":"https://github.com/alvinwan/staging","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alvinwan/staging","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alvinwan%2Fstaging","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alvinwan%2Fstaging/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alvinwan%2Fstaging/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alvinwan%2Fstaging/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alvinwan","download_url":"https://codeload.github.com/alvinwan/staging/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alvinwan%2Fstaging/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266624745,"owners_count":23958299,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-23T02:00:09.312Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"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":["course-management","cs189","cs70","python","website"],"created_at":"2024-10-11T13:44:38.706Z","updated_at":"2025-07-23T05:33:39.851Z","avatar_url":"https://github.com/alvinwan.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003e Used by two major courses at UC Berkeley, serving a cumulative total of ~3000 students across 3 semesters:\r\n\u003e 1. CS70 with 800+ students [[Fa'16](http://inst.eecs.berkeley.edu/~cs70/fa16/)][[Sp'17](http://inst.eecs.berkeley.edu/~cs70/sp17/)][[Fa'17](http://eecs70.org)]\r\n\u003e 2. CS189 with 500+ students [[Fa'17](http://eecs189.org)]\r\n\r\n# Staging\r\nThis repository contains (1) the generator for the website and (2) the\r\nstaged website. The staging area can be found at the following link:\r\n[staging.yourcourse.org](http://staging.yourcourse.org).\r\n\r\n\u003cimg width=\"1364\" alt=\"screen shot 2017-08-07 at 11 41 09 pm\" src=\"https://user-images.githubusercontent.com/2068077/29059390-3102988c-7bca-11e7-940a-dece530e9631.png\"\u003e\r\n\r\n# Usage\r\n\r\nTo make edits to the website, first run the preview.\r\n\r\n    make preview\r\n\r\nThen, make edits as necessary. Once you feel comfortable\r\nwith the changes made, deploy to the staging area. Check\r\n[staging.yourcourse.org](http://staging.yourcourse.org).\r\n\r\n    make staging m=\"\u003cmessage describing change\u003e\"\r\n\r\nIf the staging area matches your expectations, you may then deploy\r\ndirectly to production. Run the following to publish to\r\n[yourcourse.org](http://yourcourse.org).\r\n\r\n    make deploy m=\"\u003cmessage describing change\u003e\"\r\n\r\nYour edits go live instantaneously.\r\n\r\n## Usage Notes\r\n\r\nYou *must* stage before deployment, as `make staging` will save your\r\nchanges to this repository.\r\n\r\n## Updating Staff Information\r\n\r\nFirst, follow instructions in the\r\n[Installation section](https://github.com/alvinwan/staging#installation)\r\nbelow to get the repository setup. Once the repository has been setup,\r\nlaunch the website preview.\r\n\r\n    make preview\r\n\r\nThe website preview should open up in your browser. Navigate the staff\r\npage, by clicking on the link in the header. Back in your\r\ncommand-line prompt, edit `src/data/global/people.json` using `nano`\r\nor your favorite text editor.\r\n\r\n    nano src/data/global/people.json\r\n\r\nIn `people.json` add a new entry in your respective category,\r\n`faculty`, `head_tas`, `tas`, or `readers`. Your entry should resemble\r\nthe following.\r\n\r\n    {\r\n      \"name\": \"Satish Rao\",\r\n      \"title\": \"Professor\",\r\n      \"link\": \"http://ducksarethebest.com\",\r\n      \"email\": \"superm@n.com\",\r\n      \"office_hours\": \"W 9-11 am in Soda 651\",\r\n      \"discussions\": \"T/Th 2-3 pm in Dwinelle 87\",\r\n      \"image\": \"https://images.google.com/clark_kent_in_public.jpg\"\r\n    }\r\n\r\nUpon saving, your browser's preview will automatically update. Check\r\nthat it matches your expectations. Then, use the following to deploy\r\nto [staging.yourcourse.org](http://staging.yourcourse.org).\r\n\r\n    make staging m=\"\u003cmessage describing change\u003e\"\r\n\r\nYou are now finished! See the\r\n[Usage section](https://github.com/alvinwan/staging#usage) for instructions\r\non deploying to production. **Do not deploy to production yet, as\r\nproduction is currently just a placeholder.**\r\n\r\n## Updating Website Material\r\n\r\nFirst, follow instructions in the\r\n[Installation section](https://github.com/alvinwan/staging#installation)\r\nbelow to get the repository setup. Once the repository has been setup,\r\nlaunch the website preview.\r\n\r\n    make preview\r\n\r\nThe website preview should open up in your browser. Second, update the\r\nresource -- see the [materials section](https://github.com/alvinwan/staging#website-material-formats-and-location)\r\nfor details on filename formats and where these materials are located.\r\n\r\nNow that we've updated the material's resource, we would now like to\r\nupdate the material's information in\r\n`src/data/global/(discussions|homeworks|notes|slides).json`. Let us say\r\nwe are uploading new or modifying existing `notes`. Edit\r\n`src/data/global/notes.json` using `nano` or your favorite text editor.\r\n\r\n    nano src/data/global/notes.json\r\n\r\nUpon saving, your browser's preview will automatically update. Check\r\nthat it matches your expectations.\r\n\r\n\u003e Time-sensitive resources - namely homework, slides, and discussions -\r\n  are displayed on the website only if\r\n  `current_week \u003e= min(resource.weeks)`. For example, if the resource's\r\n  `weeks` attribuet is `[2, 3]`, and `current_week` is `2`, then the\r\n  resource is shown on the website. If the `current_week` is `1`, then\r\n  the resource is hidden.\r\n\r\nThen, use the following to deploy to\r\n[staging.yourcourse.org](http://staging.yourcourse.org).\r\n\r\n    make staging m=\"\u003cmessage describing change\u003e\"\r\n\r\nYou are now finished! See the\r\n[Usage section](https://github.com/alvinwan/staging#usage) for instructions\r\non deploying to production. **Do not deploy to production yet, as\r\nproduction is currently just a placeholder.**\r\n\r\n# Installation\r\n\r\nFirst, clone this repository, and switch into the directory.\r\n\r\n    git clone git@github.com:CS189/staging.git\r\n    cd staging\r\n\r\nSecond, install Python dependencies. (It is recommended that you do this in a virtual environment.)\r\n\r\n    pip install -r requirements.txt\r\n\r\n# File Structure\r\n\r\n(coming soon)\r\n\r\n## Website Material Formats and Location\r\n\r\nAll website materials have a specific format. This can easily be changed\r\nin `src/html/index.html` and `src/html/resources`. Here are the\r\nrespective default formats:\r\n\r\n- Notes: `n{number}.pdf` (e.g. `n1.pdf`, `n12.pdf`)\r\n- Discussions: `dis{number}{section}.pdf`, where `number` is 0-padded and `section` is `a` or `b` (e.g., `dis01a.pdf`, `dis12b.pdf`)\r\n- Homeworks: `hw{number}.pdf`, where `number` is 0-padded\r\n- Slides: `lec-{number}-{format}.pdf` where `format` is `handout` or `6up` (e.g., `lec-1-handout.pdf`, `lec-12-6up.pdf`)\r\n\r\nAll materials can be found under `src/static/`.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falvinwan%2Fstaging","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falvinwan%2Fstaging","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falvinwan%2Fstaging/lists"}