{"id":18620495,"url":"https://github.com/simonsobs/scheduler-web","last_synced_at":"2025-07-30T07:39:56.048Z","repository":{"id":179297305,"uuid":"658830873","full_name":"simonsobs/scheduler-web","owner":"simonsobs","description":null,"archived":false,"fork":false,"pushed_at":"2025-04-07T14:19:21.000Z","size":51,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":25,"default_branch":"main","last_synced_at":"2025-04-07T15:28:49.312Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simonsobs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2023-06-26T15:19:56.000Z","updated_at":"2025-04-07T14:19:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"2a4527b3-98c4-466c-84f0-9d13da54a3e8","html_url":"https://github.com/simonsobs/scheduler-web","commit_stats":{"total_commits":22,"total_committers":4,"mean_commits":5.5,"dds":0.5909090909090908,"last_synced_commit":"6c04a75f523267f454a03870d7e8222173a15334"},"previous_names":["simonsobs/scheduler-web"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonsobs%2Fscheduler-web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonsobs%2Fscheduler-web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonsobs%2Fscheduler-web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonsobs%2Fscheduler-web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simonsobs","download_url":"https://codeload.github.com/simonsobs/scheduler-web/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252839678,"owners_count":21812148,"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","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":[],"created_at":"2024-11-07T04:06:35.808Z","updated_at":"2025-05-07T08:21:03.863Z","avatar_url":"https://github.com/simonsobs.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# scheduler-web\n\n`scheduler-web` is the web front end to the scheduler, providing a streamlit\ninterface for understanding the schedule configuration.\n\n## Related Packages\n\n* [**scheduler**](https://github.com/simonsobs/scheduler) - The core scheduling\n  library, a.k.a. `schedlib`.\n* [**scheduler-server**](https://github.com/simonsobs/scheduler-server) - The\n  Flask API for fetching schedules.\n* [**scheduler-web**](https://github.com/simonsobs/scheduler-web) - This app.\n  The web front end for the scheduler.\n\n\n## Installation\nFirst clone this repository, and then install the dependencies:\n```bash\ngit clone git@github.com:simonsobs/scheduler-web.git\npip install -r requirements.txt\n```\n## Launch\nYou can launch scheduler-web locally by running:\n```bash\nstreamlit run src/app.py --server.address=localhost --browser.gatherUsageStats=false --server.fileWatcherType=none\n```\n\nYou can then navigate to http://localhost:8501 to access the app.\n\n### Docker\nAlternatively, you can build and launch the server in a docker container:\n```bash\ndocker build -t scheduler-web .\ndocker run --rm -p 8501:8501 scheduler-web\n```\n\n## Deployment\nDeploying `scheduler-web` is typically done using docker-compose and a reverse\nproxy, such as nginx. Here is just one example of how to deploy in this\nconfiguration.\n\n### Docker Compose\nHere is an example Docker Compose service block for `scheduler-web` that allows\nfor proxying to an arbitrary subdirectory, here `anySubPath`:\n\n```yaml\n  scheduler-web:\n    image: simonsobs/scheduler-web:latest\n    container_name: scheduler-web\n    restart: always\n    ports:\n      - 8501:8501\n    command: [\"--server.baseUrlPath=/anySubPath\"]\n```\n\nThis path can be changed, and must match the path configured in nginx. The port\nused on the host (the left 8501) can be changed if needed. If that is changed,\nyou must match the port number in the nginx config below.\n\n### nginx\nBelow is a location snippet for nginx to proxy `scheduler-web`.\n\n```\n  location /anySubPath/ {\n    proxy_pass         http://\u003cip-address\u003e:8501/anySubPath/;\n    proxy_set_header   Host      $host;\n    proxy_set_header   X-Real-IP $remote_addr;\n    proxy_set_header   X-Forwarded-For $remote_addr;\n    proxy_set_header   X-Forwarded-Proto $scheme;\n    proxy_http_version 1.1;\n\n    # websockets\n    proxy_set_header Upgrade $http_upgrade;\n    proxy_set_header Connection \"upgrade\";\n  }\n```\n\nHere you can replace `anySubPath` with the subdirectory you would like to serve\nfrom. Note this must match the path passed to `--server.baseUrlPath` in the\ndocker-compose file.\n\nYou must also replace `\u003cip-address` in the `proxy_pass` command with the\nappropriate address or domain name for the machine running `scheduler-web`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonsobs%2Fscheduler-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimonsobs%2Fscheduler-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonsobs%2Fscheduler-web/lists"}