🧪 BETA 🧪
This is a template repository used to generate a serverless Globus-powered research search portal.
View the result at: globus.github.io/template-search-portal.
While this repository is a working example of a search portal, it is also a template for creating your own research search portal.
- Powered by Globus
- Search for documents in a Globus Search Index with support for facets.
- Optional Authentication – Authenticate users to access private Globus Search Indexes.
- Globus Transfer Integration – Transfer files directly from the search portal to your Globus-connected storage.
-
📄 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-search-portal.
Example implementations of the Search Portal showing various capabilities – reviewing (and even copying) the static.json files can be a great starting point for your own portal.
- @globus/example-search-portal-with-embeds
- @globus/example-search-portal-with-transfer
- @globus/example-search-portal-with-github-action-ingest
- Create a new repository from the globus/template-search-portal template.
- Using the following URL: https://github.com/new?template_name=template-search-portal&template_owner=globus
-
- 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
- Update the
static.jsonto include:data.attributes.globus.search.index– The Globus Search Index UUID that will be used source results from.- Optional: Set the
data.attributes.globus.search.facetsto enable facet-based filtering. - See the static.json type definitions for more configuration options.
- That's it! The changes made (and any future changes) to the
static.jsonwill trigger a GitHub Action that will automatically build and deploy your research data portal to your GitHub Pages URL.
If your Globus Search Index is private, you'll want to include authentication to your portal.
- 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
- Update the
static.jsonto include:data.attributes.globus.application.client_id– The UUID of the client created in the previous step.
- Result + Result Listing Rendering – Update the
data.attributes.components.Resultanddata.attributes.components.ResultListingto reference specific properties on your indexed data. - Edit/Remove the
CITATIONfile – Update theCITATION.cfffile to reflect the appropriate citation information for your research data portal – learn more aboutCITATIONfiles. - Removing this section of the README – Remove this section from the
README.mdfile or update the README to meet your needs.
The type used for data by the @globus/static-search-portal generator.
See: https://github.com/globus/static-search-portal/blob/main/docs/type-aliases/Static.md