This repository contains the source code for openEO Hub, a centralized platform to explore openEO back-end providers.
It is currently in a rather early stage of development.
openEO Hub tries to implement some ambitious ideas. It is aimed to be a platform that may allow users to:
The Hub provides its data via a RESTful API under https://hub.openeo.org/api. The following endpoints are intended to be used by the public:
GET /api
-- capabilities document compliant to openEO API v0.4.2.GET /api/backends
-- the list of backend provider URLs that the Hub is configured to crawl (i.e. links to .well-known
documents where available, otherwise a link directly to the backend OR an object with several links to backends of the same provider).GET /api/backends?details=full
-- the list of actual, individual backends within the Hub's database, including ALL their details (i.e. all collection descriptions etc.) This reply can easily be several dozen MBs big.GET /api/backends?details=clipped
-- Like full
, but for collections and processes only the id
s and title
s/summary
s are returned. This reduces the size a lot.GET /api/backends?details=grouped
-- Like clipped
, but the individual backends are grouped by providers.GET /process_graphs
-- lists all process graphs that were submitted to the Hub's repositoryGET /process_graphs/{process_graph_id}
-- return the full information for a single process graphPOST /process_graphs
-- add a new process graph to the Hub's repository (note that there's NO update or delete functionality!)This app is deployed at https://hub.openeo.org/.
If you want to set it up yourself, follow these steps:
Required is Node.js (at least version 12, as required by the mongodb driver) and a MongoDB server (at least version 3.6 to support field names that contain .
or $
, see here).
mongod
(tested with v4.0.4)sudo mongod --dbpath /var/lib/mongodb
waiting for connections on port 27017
Should you ever want to hard-reset the database (i.e. drop all collections openeo-hub created), use the drop
script by calling node drop.js --yesimsure
or npm run drop -- --yesimsure
. By default, the script leaves collections with user-generated data (e.g. the submitted process graphs) intact. If you want to drop those too, add the --everything
option.
cd /path/to/openeo-hub/
npm install
-> wait...config.json
:
/.well-known/openeo
. The URLs may or may not have a trailing slash.npm run crawl
-> wait until finished with output "DONE!" (see below if something doesn't look right or any line starts with "An error...")npm start
If errors occur during crawling, this is probably caused by one of the crawled backends (a) returning JSON that is not compliant to the openEO API specification, or (b) malfunctioning under the load of many requests in quick succession. In the first case (a), the --verbose
option may be helpful to locate the error (be sure to pass the option to the script and not to NPM, i.e. call node crawl.js --verbose
or npm run crawl -- --verbose
).
On Linux systems, you can use the cron daemon to schedule recurring crawling. For example, adding the following line to /etc/crontab
executes the crawl script every night at 3:00 am, as the user johndoe: 0 3 * * * johndoe node /path/to/openeo-hub/crawl.js
There are several start scripts for different dev scenarios:
npm run start:frontend
runs a vue-cli-service dev server with Hot-Module-Replacement (HMR) - handy when working on the frontend only. Major downside: The backend is not available in this mode (i.e. you can't test API calls).npm run start:backend
starts the Restify server, so you can test API calls (e.g. with Postman). Frontend-wise it serves whatever is found in the /dist
directory (i.e. the most recent frontend build).npm run start
builds the frontend to the dist
directory and then starts the Restify server, i.e. you can use the latest frontend and make API calls too. But Vue is in production mode, so the Devtools are not available.npm run start:dev
therefore builds the frontend to the dist
directory in development mode and then starts the Restify server, i.e. you can use the latest frontend, test API calls and use Devtools as well. But there's no HMR, so you need to manually restart everytime you want to see your changes.The Hub depends on the openeo-vue-components
repo - if you're simultaneously working on that too and want to see how your changes there work together with the Hub, it's smart to link it:
cd /path/to/openeo-vue-components
sudo ndm link
cd /path/to/openeo-hub/
npm link @openeo/vue-components
This makes all references to @openeo/vue-components
in imports etc. point to your current local state of that repo.
Note these caveats:
npm install
in the openeo-hub
folder, the link gets overwritten, so you have to repeat npm link @openeo/vue-components
.openeo-vue-components
folder, make sure to run npm run build
there. Otherwise you're not testing against the version of the code that would actually end up on NPM (minified etc.)!