{"id":32715669,"url":"https://github.com/linsyking/canvashelper2","last_synced_at":"2025-11-02T14:05:19.124Z","repository":{"id":134077377,"uuid":"584701928","full_name":"linsyking/CanvasHelper2","owner":"linsyking","description":"New generation of Canvas Helper.","archived":false,"fork":false,"pushed_at":"2024-07-15T13:54:01.000Z","size":251,"stargazers_count":13,"open_issues_count":4,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-07-15T16:39:57.375Z","etag":null,"topics":["canvas-lms","fastapi"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/linsyking.png","metadata":{"files":{"readme":"Readme.md","changelog":"Changelog.md","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":"2023-01-03T09:44:55.000Z","updated_at":"2024-01-03T12:28:58.000Z","dependencies_parsed_at":"2024-02-04T16:49:58.450Z","dependency_job_id":"193f5d12-6988-4a08-abea-41a7fd675036","html_url":"https://github.com/linsyking/CanvasHelper2","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/linsyking/CanvasHelper2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linsyking%2FCanvasHelper2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linsyking%2FCanvasHelper2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linsyking%2FCanvasHelper2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linsyking%2FCanvasHelper2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/linsyking","download_url":"https://codeload.github.com/linsyking/CanvasHelper2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linsyking%2FCanvasHelper2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":282299374,"owners_count":26646668,"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-11-02T02:00:06.609Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","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":["canvas-lms","fastapi"],"created_at":"2025-11-02T14:05:04.696Z","updated_at":"2025-11-02T14:05:19.118Z","avatar_url":"https://github.com/linsyking.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Canvas Helper 2\n\n[![build](https://github.com/linsyking/CanvasHelper2/actions/workflows/build.yml/badge.svg)](https://github.com/linsyking/CanvasHelper2/actions/workflows/build.yml)\n\nNew generation of Canvas Helper backend. Web-based, support Linux, Windows and MacOS.\n\n[Chinese Translation](doc/Readme_ZH.md)\n\n## Requirements\n\n- Python \u003e= 3.7\n\n## Workflow\n\nIf you only want to run the backend on your machine and use the frontend on our server, do the following:\n\n1. Follow [documentation](https://github.com/linsyking/CanvasHelper2#run-backend), run the backend at port `9283`\n2. Go to \u003chttps://canvashelper2.web.app/canvashelper/\u003e to configure your CanvasHelper\n3. Go to \u003chttps://canvashelper2.web.app/\u003e to see the final result\n4. Deploy Canvas Helper on your desktop with [wiget](https://github.com/linsyking/CanvasHelper2/#use-canvashelper-in-)\n\n## Dev Workflow\n\nIf you want to setup frontend by yourself or contribute to this project, you have to do mainly 3 steps:\n\n1. Run the backend\n2. Run `CanvasHelper2-conf` and configure CanvasHelper in the browser\n3. Run an HTTP server to host the static HTML files (or develop your own dashboard frontend)\n\n## Run backend\n\nFirst, clone this repository:\n\n```bash\ngit clone https://github.com/linsyking/CanvasHelper2.git\n\ncd CanvasHelper2\n```\n\nThen install the dependencies. It is recommended to use a virtual environment for installation:\n\n```bash\npython -m venv env # You may want to change `python` to `python3` or other python binaries\nsource env/bin/activate # You may want to change the activation script according to your shell\npip install -r requirements.txt\n```\n\nIf you don't want to change any settings (like CORS), you can directly run: (If you want to use frontend on our server, you must use `9283` port)\n\n```bash\nuvicorn canvas_app:app --port 9283\n```\n\nFor development, you probably need to use:\n\n```bash\nuvicorn canvas_app:app --reload\n```\n\nto automatically reload the api when the script is modified.\n\nIf you need to expose the port, you can add option `--host 0.0.0.0`.\n\n## Configure CanvasHelper\n\nIf you want to use the frontend on our server, go to: [here](https://canvashelper2.web.app/canvashelper/). (Site might be changed in the future)\n\nOtherwise, go to [CanvasHelper2-conf](https://github.com/linsyking/CanvasHelper2-conf) for more details.\n\n## Preview the result\n\nIf you want to see the result without hosting HTML files, you can directly go to [here](https://canvashelper2.web.app/).\n\nYou can use any http server you like to host the static html file.\n\nThe sample dashboard frontend is at \u003chttps://github.com/linsyking/CanvasHelper2-dashboard\u003e.\n\nYou can clone that repository and host those files by\n\n```bash\npython3 -m http.server 9282\n```\n\nNow go to page \u003chttp://localhost:9282\u003e to see the result!\n\n## Use CanvasHelper in ...\n\n### Wallpaper Engine\n\nSubscribe template wallpaper: \u003chttps://steamcommunity.com/sharedfiles/filedetails/?id=2913474561\u003e.\n\nAfter you started the backend locally, it will redirect to the [here](https://canvashelper2.web.app/). You can also change it to your local frontend.\n\nTo start the backend on startup, you can do the following:\n\n1. Win+R, type `shell:startup`\n2. In the opened window, create a file called `canvashelper.vbs`\n\nIts content should be like this:\n\n```vbs\nDim WinScriptHost\nSet WinScriptHost = CreateObject(\"WScript.Shell\")\nWinScriptHost.Run Chr(34) \u0026 \"C:\\XXX\\canvashelper.bat\" \u0026 Chr(34), 0\nSet WinScriptHost = Nothing\n```\n\nReplace `C:\\XXX\\canvashelper.bat` with a better path where you store a `bat` file which is used to launch the CanvasHelper.\n\n**That bat file must be in C drive.**\n\n3. Create that `C:\\XXX\\canvashelper.bat` file with the following content:\n\n```cmd\n@echo off\n\nd:\ncd D:\\Project\\CanvasHelper2\nuvicorn canvas_app:app --port 9283\n```\n\nReplace `d:` and `D:\\Project\\CanvasHelper2` with your own directory.\n\n(If your clone directory is in C, then you don't need `d:` to enter drive D)\n\nAfter that, your system will run this script on startup.\n\n**Note: some features in wallpaper engine are not well-supported, including scrolling.**\n\n### KDE Wallpaper\n\n1. Install [wallpaper-engine-kde-plugin](https://github.com/catsout/wallpaper-engine-kde-plugin).\n2. Download the canvas wallpaper \u003chttps://steamcommunity.com/sharedfiles/filedetails/?id=2913474561\u003e.\n3. You should be able to see the wallpaper.\n4. Add a startup script to run the backend.\n\n**Note: scrolling is also not supported.**\n\nResult:\n\n![demo](https://user-images.githubusercontent.com/49303317/210978732-68cefd73-75df-4013-a7cb-2010f16ec7dd.png)\n\n### KDE Widget\n\n(Another dashboard frontend)\n\n*TO-DO*\n\n## FAQ\n\n- What's the difference between CanvasHelper and CanvasHelper 2?\n\n\u003e CanvasHelper 1 is centralized while CanvasHelper 2 is not. It is completely local so you don't have to connect to our server to use CanvasHelper.\n\u003e Moreover, CanvasHelper 2 provides a handy web interface for configuring courses.\n\u003e CanvasHelper 2 separates frontend and backend so that you can develop your own dashboard frontend on any operating system/desktop environment.\n\n- What's the relationship between Canvas Helper backend, frontend, and dashboard?\n\n\u003e The backend provides several APIs for frontend and dashboard to call; frontend uses the local APIs to configure Canvas Helper. The dashboard also calls the local backend to get the configuration.\n\n- Do I have to use the sample dashboard frontend?\n\n\u003e No. You can develop your own dashboard frontend. The sample dashboard frontend uses the HTML output from this backend and displays it in a draggable box.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinsyking%2Fcanvashelper2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinsyking%2Fcanvashelper2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinsyking%2Fcanvashelper2/lists"}