{"id":13486095,"url":"https://github.com/posit-dev/shinylive","last_synced_at":"2025-04-12T20:45:36.919Z","repository":{"id":50524123,"uuid":"487125727","full_name":"posit-dev/shinylive","owner":"posit-dev","description":"Run Shiny on Python and R (compiled to wasm) in the browser","archived":false,"fork":false,"pushed_at":"2025-03-19T17:28:18.000Z","size":8491,"stargazers_count":223,"open_issues_count":62,"forks_count":22,"subscribers_count":12,"default_branch":"main","last_synced_at":"2025-04-04T00:12:38.140Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://shinylive.io/py/examples/","language":"TypeScript","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/posit-dev.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":"2022-04-29T22:29:25.000Z","updated_at":"2025-03-23T03:00:16.000Z","dependencies_parsed_at":"2023-08-30T02:43:36.940Z","dependency_job_id":"a2d2c772-0cfb-436f-8c52-658bd2d405d6","html_url":"https://github.com/posit-dev/shinylive","commit_stats":null,"previous_names":["posit-dev/shinylive"],"tags_count":39,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/posit-dev%2Fshinylive","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/posit-dev%2Fshinylive/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/posit-dev%2Fshinylive/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/posit-dev%2Fshinylive/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/posit-dev","download_url":"https://codeload.github.com/posit-dev/shinylive/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248631687,"owners_count":21136556,"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-07-31T18:00:39.314Z","updated_at":"2025-04-12T20:45:36.893Z","avatar_url":"https://github.com/posit-dev.png","language":"TypeScript","readme":"Shinylive\n==========\n\nCode for deploying Shiny applications that will run completely in the browser, using Pyodide and webR (Python and R compiled to WebAssembly).\n\n* Current semi-stable version (deployed from `deploy` branch of this repo):\n    * R: https://shinylive.io/r/examples/\n    * Python: https://shinylive.io/py/examples/\n* Latest dev version (deployed from `main` branch of this repo):\n    * R: https://posit-dev.github.io/shinylive/r/examples/\n    * Python: https://posit-dev.github.io/shinylive/py/examples/\n\n## Prerequisites\n\nBuilding Shinylive requires NodeJS.\n\n## Build instructions\n\nYou must first initialize the git submodules. This only needs to be done once:\n\n```bash\nmake submodules\n```\n\nAfter that, you can simply run `make all`:\n\n```bash\nmake all\n```\n\nTo build and serve the live Python Examples page:\n\n```bash\nmake serve\n```\n\nTo build and serve the live R Examples page:\n\n```bash\nmake serve-r\n```\n\nThis will also watch the source files in `src/` for changes, and will rebuild and auto-reload the web page when the files change.\n\nTo build the shinylive.tar.gz distribution file:\n\n```bash\nmake dist\n```\n\n\nThere is also a Quarto web site which demonstrates the shinylive components in different configurations. To build and serve the test Quarto web site with Quarto components:\n\n```bash\nmake quarto\nmake quartoserve\n```\n\nThis will auto-rebuild and reload the Quarto site when a .qmd file in `quarto/` changes, but it will not auto-rebuild when the source TS files change.\n\n\nYou may occasionally need to clean out the built artifacts and rebuild:\n\n```sh\nmake clean\nmake submodules\nmake all\n```\n\n\nYou can see many of the `make` targets by just running `make`:\n\n```\n$ make\nsubmodules             Update git submodules to commits referenced in this repository\nsubmodules-pull        Pull latest changes in git submodules\nall                    Build everything _except_ the shinylive.tar.gz distribution file\ndist                   Build shinylive distribution .tar.gz file\nnode_modules           Install node modules\npyodide_packages_local Copy local package wheels to the pyodide directory\nbuildjs                Build JS resources from src/ dir\nbuildjs-prod           Build JS resources for production (with minification)\nwatch                  Build JS resources and watch for changes\nserve                  Build JS resources, watch for changes, and serve site\nserve-prod             Build JS resources for production, watch for changes, and serve site\nbuildjs-prod-r         Build JS resources for production with webR as the default engine\nserve-prod-r           Build JS resources for production and serve site with webR as the default engine\nserve-r                Build JS resources and serve site with webR as the default engine\npackages               Build htmltools, shiny, and shinywidgets wheels\nupdate_packages_lock   Update the shinylive_lock.json file, based on shinylive_requirements.json\nupdate_packages_lock_local Update the shinylive_lock.json file, but with local packages only\nretrieve_packages      Download packages in shinylive_lock.json from PyPI\nupdate_pyodide_lock_json Update pyodide/pyodide-lock.json to include packages in shinylive_lock.json\ncreate_typeshed_json   Create the typeshed.json file which will be used by the shinylive type checker\ncopy_pyright           Copy src/pyright files to build directory\napi-docs               Build Shiny API docs\nquarto                 Build Quarto example site in quarto/\nquartoserve            Build Quarto example site and serve\nclean-packages         Remove built wheels from the packages/ directory\nclean                  Remove all build files\ndistclean              Remove all build files and venv/\ntest                   Run tests\ntest-watch             Run tests and watch\n```\n\n\n## Pulling changes\n\nAfter pulling changes to the parent repo, you may need to tell it to update submodules.\n\n```bash\ngit pull\nmake submodules\n```\n\n## Adding new packages or updating package versions\n\nThe `shinylive_lock.json` file lists specific versions of packages which will be included in the Shinylive distribution (in addition to the base Pyodide packages). This file is generated from `shinylive_requirements.json`.\n\nIf you add a package to `shinylive_requirements.json`, or want to update package versions, the lockfile must also be regenerated:\n\n```\nmake update_packages_lock\n```\n\n\n## File overview\n\nThis an overview of some of the important files and directories in this project.\n\n```\n├── shinylive_requirements.json # List of packages to add on top of standard Pyodide installation.\n├── shinylive_lock.json    # Lockfile generated from shinylive_requirements.json.\n├── build                  # Generated JS/CSS/wasm components for shinylive (not committed to repo)\n├── examples               # Shiny app examples used in Examples browser\n├── packages               # Git submodules for htmltools, shiny, and ipyshiny.\n│   ├── py-htmltools       #   Used for building wheel files for shinylive.\n│   ├── py-shiny\n│   └── ipyshiny\n├── quarto                 # Sources for an example Quarto site\n│   └── docs               # Generated files for Quarto site\n├── export_template        # Files used for deployment via `shinylive deploy`\n├── scripts\n│   └── pyodide_packages.py # Script for downloading PyPI packages and inserting\n│                           #   package metadata into pyodide's package.json.\n│\n├── src                    # TypeScript source files.\n├── site                   # Example web site with shinylive, served by `make serve`.\n└── _shinylive             # Directory containing files that are deployed to shinylive.io.\n```\n","funding_links":[],"categories":["Packages","TypeScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fposit-dev%2Fshinylive","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fposit-dev%2Fshinylive","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fposit-dev%2Fshinylive/lists"}