{"id":41980188,"url":"https://github.com/globus/example-data-portal-alternative-hosting","last_synced_at":"2026-01-25T23:40:55.508Z","repository":{"id":261304209,"uuid":"883888322","full_name":"globus/example-data-portal-alternative-hosting","owner":"globus","description":"An example data portal that deploys to an alternative hosting provider instead of GitHub Pages.","archived":false,"fork":false,"pushed_at":"2025-08-11T17:34:28.000Z","size":110,"stargazers_count":0,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-09-04T20:52:29.371Z","etag":null,"topics":["example","portal","serverless"],"latest_commit_sha":null,"homepage":"https://main.d2i99wxmf4jtwi.amplifyapp.com/","language":null,"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/globus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-11-05T18:48:19.000Z","updated_at":"2025-04-16T17:48:36.000Z","dependencies_parsed_at":"2024-11-05T20:42:59.774Z","dependency_job_id":"fdc1fa9d-d73a-4c38-8b12-9552edc8df64","html_url":"https://github.com/globus/example-data-portal-alternative-hosting","commit_stats":null,"previous_names":["globus/example-data-portal-alternative-hosting"],"tags_count":0,"template":false,"template_full_name":"globus/template-data-portal","purl":"pkg:github/globus/example-data-portal-alternative-hosting","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/globus%2Fexample-data-portal-alternative-hosting","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/globus%2Fexample-data-portal-alternative-hosting/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/globus%2Fexample-data-portal-alternative-hosting/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/globus%2Fexample-data-portal-alternative-hosting/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/globus","download_url":"https://codeload.github.com/globus/example-data-portal-alternative-hosting/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/globus%2Fexample-data-portal-alternative-hosting/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28761816,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T23:06:19.311Z","status":"ssl_error","status_checked_at":"2026-01-25T23:03:50.555Z","response_time":113,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["example","portal","serverless"],"created_at":"2026-01-25T23:40:54.858Z","updated_at":"2026-01-25T23:40:55.503Z","avatar_url":"https://github.com/globus.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"**🧪 Alternative Hosting is experimental, feel free to provide feedback if you encounter issues!**\n\n----\n\n# Example : Serverless Data Portal with Alternative Hosting\n\nThis repository is an example implementation of the [@globus/template-data-portal](https://github.com/globus/template-data-portal).\n\n\nYou can create your own portal with similar functionality by following the [**Creating Your Own Research Data Portal**](https://github.com/globus/template-data-portal?tab=readme-ov-file#creating-your-own-research-data-portal) section in the template repository and then referencing the sections below.\n\n## Background\n\nWhen using our [Serverless Portal Templates](https://github.com/orgs/globus/repositories?q=topic%3Aportal+template%3Atrue), your portal will be automatically deployed via GitHub Actions to GitHub Pages; for most implementations, this results in a simple way to quickly distribute a portal without having to manage infrastructure. However, our toolchain allows you to fully customize and control where your application is deployed.\n\n## Customizing the Built-In Workflow\n\nThe `.github/workflows/static.yml` is responsible for building your portal using the configured generator and configured content (e.g. `static.json` and `content` directory). Two modifications are required in order to utilize your own hosting mechanism:\n\n1. Disable GitHub Pages Deployment\n2. Add your own [GitHub Action Job](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/using-jobs-in-a-workflow) that uses the `static`-generated Artifact\n\n\n### Disable GitHub Pages Deployment\n\nIn your  `.github/workflows/static.yml`, update the `static` workflow to include the input `deploy_to_github_pages: false`. This will signal to the workflow to **not** deploy the generated artifact to GitHub Pages.\n\n```yaml\njobs:\n  static:\n    uses: from-static/actions/.github/workflows/static.yml@v2\n    with:\n      deploy_to_github_pages: false\n```\n\n### Add your own job that uses the `static`-generated Artifact\n\nWith the `static` workflow deployment disabled, you can now add additional jobs that utilize the generated artifact, including upload to your custom host.\n\nThere are a few important implementation details to consider when adding your own job:\n\n- The `static` workflow produces an asset named `github-pages`.\n  - Currently, the produced artifact is the result of [`actions/upload-pages-artifact@v3`](https://github.com/actions/upload-pages-artifact/tree/v3).\n- Our Serverless Portal Templates use [Next.js](https://nextjs.org/) to export a static site. Their documentation on [deploying a static export](https://nextjs.org/docs/pages/building-your-application/deploying/static-exports#deploying) can be helpful when configuring your infrastructure to handle requests properly.\n\nIn the below example, a `deploy` job is configured to deploy the generated assets to Amazon S3.\n\n```yaml\n  deploy:\n    # Our deploy process requires the `static` job to complete first.\n    needs: [static]\n    runs-on: ubuntu-latest\n    steps:\n    # Download the artifact that was generated by the `static` job.\n    - uses: actions/download-artifact@v4\n      with:\n        name: github-pages\n    # Extract the artifact...\n    - run: mkdir artifact\n    - run: tar -xf artifact.tar -C ./artifact\n    # ...and deploy it to S3.\n    - name: Configure AWS Credentials\n      uses: aws-actions/configure-aws-credentials@v4\n      with:\n        role-to-assume: arn:aws:iam::431478890660:role/globus_example-data-portal-alternative-hosting-action\n        aws-region: us-east-1\n    - run: |\n        aws s3 sync ./artifact s3://globus-serverless-data-portal-example\n```\n\n\n## Common (Required) Changes to Configurations\n\nWhen you update your portal to be deployed to an alternative host, there are likely configuration values in your `static.json` and Globus Application (when using Globus Auth for authentication) that will need to be updated to reflect your new (custom) host. Commonly, these configuration changes include:\n\n- Updating your Globus Application **Redirects** to include your new host (e.g. `https://{CUSTOM_HOST}/authenticate`).\n\n\n\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglobus%2Fexample-data-portal-alternative-hosting","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fglobus%2Fexample-data-portal-alternative-hosting","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglobus%2Fexample-data-portal-alternative-hosting/lists"}