🧪 BETA 🧪
This is template repository used to generate a Globus-powered research data portal.
View the result at: globus.github.io/template-data-portal.
While this repository is a working example of a data portal, it is also a template for creating your own static research data portal.
- Powered by Globus
- List the directory contents of a configured Globus collection at a specific path.
- Support for HTTPS Access download of files where available.
- Transfer data from the configured collection to another Globus collection.
- Configure multiple collections and paths allowing users to select their preferred source.
- Ability to host custom content alongside the data portal.
-
📄 Hosted via GitHub Pages – Users can access your data portal at this repository's GitHub Pages URL. Use all the functionality built-in to GitHub pages to suit your needs, including configuring a custom domain.
-
🚀 Automated Deployments via GitHub Actions – Any file changes will result in the deployment (and rebuild) of your data portal.
- You can manually trigger a deployment by navigating to the Actions tab and selecting the static workflow.
-
🤖 Dependabot – A default Dependabot configuration (
.github/dependabot.yml
) to keep your repository up-to-date with latest changes to globus/static-data-portal.
- Create a new repository from the globus/template-data-portal template.
- Using the following URL: https://github.com/new?template_name=template-data-portal&template_owner=globus
- Or, using the GitHub UI:
- Update your repository to allow publishing with GitHub Actions.
- IMPORTANT The built-in GitHub Action workflows in your new repository will fail until you've updated this setting.
- Ensure your GitHub Pages are configured to Enforce HTTPS
- Register an application on Globus – https://app.globus.org/settings/developers
- You'll be creating an OAuth public client; This option is presented as "Register a thick client or script that will be installed and run by users on their devices".
- Update the Redirects to include your GitHub Pages URL +
/authenticate
, i.e.,https://{username}.github.io/{repository}/authenticate
- If you have configured your GitHub Pages to use a custom domain, this will be
https://{domain}/authenticate
- It is important to note that Globus Auth requires HTTPS.
- If you have configured your GitHub Pages to use a custom domain, this will be
- Optional: Specify the Privacy Policy URL and Terms & Conditions URL to the portal-provided routes, i.e.
https://globus.github.io/example-data-portal/privacy-policy
- All other fields can be left as default or changed to suit your needs.
- Update the
static.json
to include:data.attributes.globus.application.client_id
– The UUID of the client created in the previous step.data.attributes.globus.transfer.collection_id
– The Collection UUID that will be the "source" of your data portal.- Optional: Set the
data.attributes.globus.transfer.path
to a specific path within the collection, or remove thepath
property to resolve to the default directory. - See the static.json type definitions for more configuration options.
- That's it! Your portal will be available at your GitHub Pages URL. The changes made (and any future changes) to the
static.json
will trigger a GitHub Action that will automatically build and deploy your research data portal to your GitHub Pages URL.
- As you make changes to files in your repository, the GitHub Action will automatically rebuild and deploy your portal.
- Globus will provide updates to the underlying
@globus/static-data-portal
package that powers your portal. Merging pull requests automatically opened from Dependabot will keep your portal up-to-date with the latest changes.
- Updating the Title – Update the
data.attributes.content.title
in thestatic.json
. - Adding Custom Content - Add a
content
directory with Markdown, or MDX files to be rendered as pages in your portal. - Edit/Remove the
CITATION
file – Update theCITATION.cff
file to reflect the appropriate citation information for your research data portal – learn more aboutCITATION
files. - Removing this section of the README – Remove this section from the
README.md
file or update the README to meet your needs.
The type used for data
by the @globus/static-data-portal generator.
Name | Type | Description |
---|---|---|
attributes |
{ content : { image? : string ; privacy_policy? : string ; tagline? : string ; terms_of_service? : string ; title : string } ; globus : { application : { client_id : string ; redirect_uri? : string } ; transfer : { collection_id : string ; path? : string } } ; theme? : ThemeSettings } |
- |
attributes.content |
{ image? : string ; privacy_policy? : string ; tagline? : string ; terms_of_service? : string ; title : string } |
- |
attributes.content.image? |
string |
The URL of the portal's header image. |
attributes.content.privacy_policy? |
string |
A privacy policy to be rendered at /privacy-policy . This is especially useful for associating the published URL with your registered Globus Auth application. |
attributes.content.tagline? |
string |
- |
attributes.content.terms_of_service? |
string |
Terms and conditions to be rendered at /terms-and-conditions . This is especially useful for associating the published URL with your registered Globus Auth application. |
attributes.content.title |
string |
The title of the research data portal. |
attributes.globus |
{ application : { client_id : string ; redirect_uri? : string } ; transfer : { collection_id : string ; path? : string } } |
- |
attributes.globus.application |
{ client_id : string ; redirect_uri? : string } |
Information about your registered Globus Auth Application (Client) See https://docs.globus.org/api/auth/developer-guide/#developing-apps |
attributes.globus.application.client_id |
string |
The UUID of the client application. |
attributes.globus.application.redirect_uri? |
string |
The redirect URI for the Globus Auth login page to complete the OAuth2 flow. The portal will make a reasonable effort to determine this URI, but this field is provided as a fallback. To use the portal's built-in authorization handling, redirects should be sent to /authenticate on the host. Example ts "https://example.com/data-portal/authenticate" |
attributes.globus.transfer |
{ collection_id : string ; path? : string } |
Configuration for Transfer-related functionality in the portal. |
attributes.globus.transfer.collection_id |
string |
The UUID of the Globus collection to list and transfer files from. |
attributes.globus.transfer.path? |
string |
The path on the collection to list and transfer files from. |
attributes.theme? |
ThemeSettings |
- |
version |
string |
The version of the data object, which is used to determine how the generator will render its attributes . Example ts "1.0.0" |