{"id":14065517,"url":"https://github.com/globus/globus-sample-data-portal","last_synced_at":"2025-07-29T20:33:02.521Z","repository":{"id":7035681,"uuid":"53689844","full_name":"globus/globus-sample-data-portal","owner":"globus","description":"A Python (Flask-based) web application demonstrating how to build a Modern Research Data Portal using the Globus platform.","archived":false,"fork":false,"pushed_at":"2024-04-17T20:59:25.000Z","size":620,"stargazers_count":33,"open_issues_count":6,"forks_count":23,"subscribers_count":14,"default_branch":"main","last_synced_at":"2024-08-14T07:08:56.059Z","etag":null,"topics":["data-portal","globus","globus-sdk","platform","research-data"],"latest_commit_sha":null,"homepage":"https://mrdp.globus.org/ ","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","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":"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":"2016-03-11T18:56:58.000Z","updated_at":"2024-06-02T16:10:53.000Z","dependencies_parsed_at":"2023-12-05T17:28:37.936Z","dependency_job_id":"bc942049-524a-48d1-8763-54b0b0284858","html_url":"https://github.com/globus/globus-sample-data-portal","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/globus%2Fglobus-sample-data-portal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/globus%2Fglobus-sample-data-portal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/globus%2Fglobus-sample-data-portal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/globus%2Fglobus-sample-data-portal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/globus","download_url":"https://codeload.github.com/globus/globus-sample-data-portal/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228046158,"owners_count":17861101,"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":["data-portal","globus","globus-sdk","platform","research-data"],"created_at":"2024-08-13T07:04:32.252Z","updated_at":"2024-12-04T04:31:13.831Z","avatar_url":"https://github.com/globus.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# ⚠️ DEPRECATION NOTICE ⚠️\n\nThis code base represents a point-in-time implementation of a portal implementing the Modern Research Data Portal pattern. \n\n**It is no longer recommended as a starting point for building a portal,** but is still available as a reference.\n\nSee https://github.com/globus/sample-data-portal for our current recommendations.\n\n----------------\n\n\n# Globus Sample Data Portal: A Modern Research Data Portal Implementation\n\nA Python (Flask-based) web application demonstrating how to build a [Modern Research Data Portal](https://docs.globus.org/guides/recipes/modern-research-data-portal/) using\nthe [Globus platform](https://www.globus.org/platform).\n\n## Overview\nThis repository contains two separate server applications. The first, the \"portal,\" is an example \"research portal\"\nthat demonstrates how to authenticate users with [Globus Auth](https://docs.globus.org/api/auth/), how to make requests against the [Globus Transfer API](https://docs.globus.org/api/transfer/), and how to interact with an HTTPS-enabled Globus collection. All of the portal code can be found in the `portal/` directory.\n\nThe second application, the \"Service,\" is an example \"resource server\" that demonstrates how a research portal can offload tasks to a separate service that has the capability to perform tasks on behalf of users. All of the Service code can be found in the `service/` directory.\n\n`Note`: Both applications are configured with client credentials created for demo purposes only.\n\n## Getting Started\nThe Globus Sample Data Portal requires Python 3.9 or newer.\n\n#### Set up your environment.\n* [OS X](#os-x)\n* [Linux](#linux-ubuntu)\n* [Windows](#windows)\n* [Amazon EC2](#amazon-ec2)\n* [Reverse Proxy with Nginx](#reverse-proxy-with-nginx)\n\n#### Register a Globus Application for use in the Portal. \n* [Register an Application with Globus](https://docs.globus.org/api/auth/developer-guide/#register-app)\n* When registering the App you'll be asked for some information, including the redirect URL and any scopes you will be requesting.\n    * Redirect URL: `https://localhost:5000/authcallback` (note: if using EC2 `localhost` should be replaced with the IP address of your instance).\n    * Scopes: `urn:globus:auth:scope:transfer.api.globus.org:all`, `openid`, `profile`, `email`\n* After creating your App the client id and secret can be copied into this project in the following two places:\n    * `portal/portal.conf` in the `PORTAL_CLIENT_ID` and `PORTAL_CLIENT_SECRET` properties.\n    * `service/service.conf` where the `PORTAL_CLIENT_ID` is used to validate the access token that the Portal sends to the Service.\n\n### OS X\n\n##### Environment Setup\n\n* Install python3\n* `git clone https://github.com/globus/globus-sample-data-portal`\n* `cd globus-sample-data-portal`\n* `virtualenv venv`\n* `source venv/bin/activate`\n* `pip install -r requirements.txt`\n\n##### Running the Portal App\n\n* `./run_portal.py`\n* point your browser to `https://localhost:5000`\n\n##### Running the Service App\n\n* `./run_service.py`\n* API is located at `https://localhost:5100/api`\n\n### Linux (Ubuntu)\n\n##### Environment Setup\n\n* `sudo apt-get update`\n* `sudo apt-get install python3-pip`\n* `sudo pip install virtualenv`\n* `sudo apt-get install git`\n* `git clone https://github.com/globus/globus-sample-data-portal`\n* `cd globus-sample-data-portal`\n* `virtualenv venv`\n* `source venv/bin/activate`\n* `pip install -r requirements.txt`\n\n##### Running the Portal App\n\n* `./run_portal.py`\n* point your browser to `https://localhost:5000`\n\n##### Running the Service App\n\n* `./run_service.py`\n* API is located at `https://localhost:5100/api`\n\n### Windows\n\n##### Environment Setup\n\n* Install Python3 (\u003chttps://www.python.org/downloads/windows/\u003e)\n* `pip install virtualenv`\n* Install git (\u003chttps://git-scm.com/downloads\u003e)\n* `git clone https://github.com/globus/globus-sample-data-portal`\n* `cd globus-sample-data-portal`\n* `virtualenv venv`\n* `venv\\Scripts\\activate`\n* `pip install -r requirements.txt`\n\n##### Running the Portal App\n\n* `python run_portal.py`\n* point your browser to `https://localhost:5000`\n\n##### Running the Service App\n\n* `python run_service.py`\n* API is located at `https://localhost:5100/api`\n\n### Amazon EC2\n\n##### Environment Setup\n\n* `git clone https://github.com/globus/globus-sample-data-portal`\n* `cd globus-sample-data-portal`\n* `virtualenv venv`\n* `source venv/bin/activate`\n* `pip install -r requirements.txt`\n* `sed -i 's/localhost/0.0.0.0/' run_portal.py`\n* `sed -i '4,//s/localhost/YOUR_IP/' portal/portal.conf`\n* `echo \"SESSION_COOKIE_DOMAIN = 'YOUR_IP'\" \u003e\u003e portal/portal.conf`\n\n##### Running the Portal App\n\n* `./run_portal.py`\n* point your web browser to `https://YOUR_IP:5000/`\n\n##### Running the Service App\n\n* `./run_service.py`\n* API is located at `https://localhost:5100/api`\n\n### Reverse Proxy with Nginx\n\nDeploying and fully configuring Nginx is out of scope of this document. However, if you wish to use Nginx as a reverse proxy, you can use the location block below:\n```\n  location / {\n    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n    proxy_set_header X-Forwarded-Proto $scheme;\n    proxy_set_header X-Forwarded-Host $host;\n    proxy_set_header X-Forwarded-Prefix /;\n    proxy_pass https://localhost:5000/;\n  }\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglobus%2Fglobus-sample-data-portal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fglobus%2Fglobus-sample-data-portal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglobus%2Fglobus-sample-data-portal/lists"}