GithubHelp home page GithubHelp logo

isabella232 / sat-api-browser Goto Github PK

View Code? Open in Web Editor NEW

This project forked from developmentseed/sat-api-browser

0.0 0.0 0.0 261 KB

Query browser for sat-api

License: MIT License

HTML 2.26% JavaScript 97.74%

sat-api-browser's Introduction

sat-api-browser

A query constructor and results visualizer for stac-spec compliant APIs. See sat-api-browser for a test instance leveraging the sat-api.

Intent

The STAC api-spec provides querying and filtering capabilities for data represented as STAC catalogs. The sat-api-browser's intent is to simplify STAC compliant API filter construction and results visualization by providing a UI which lets users use STAC extension schemas to build and validate filters.

Once the user has received the results of the query, they can select interesting candidate items and save them to a 'shopping cart' of datasets (represented as STAC items) that they can leverage in other applications (via STAC catalog or the mosaicjson-spec). This provides the ability to search for data in a more organic and iterative fashion (much like shopping) rather than attempting to build a single all encompassing query to capture appropriate results like traditional data search applications.

This project was initiated by @sharkinsspatial as part of Development Seed's wider work in building the sat-api and open sourced to to the community to help drive contributions and new functionality. New contributions are welcomed and you can contact @sharkinsspatial or [email protected] for additional support or assistance with customization.

Build, Run, Deploy, and Test

Install Dependencies

Install the necessary dependencies with:

yarn install

Build Configuration

The following environment variables are required. You can copy and rename .env.sample to .env for use as a template.

  • SKIP_PREFLIGHT_CHECK
    skip preflight check for yarn
  • REACT_APP_API_URL The URL with port of the stac compliant api. This should not include the /stac path prefix.
  • REACT_APP_MAPBOX_ACCESS_TOKEN A token for accessing the Mapbox API
  • REACT_APP_RESULT_LIMIT Maximum number of results the API will display

Example:

SKIP_PREFLIGHT_CHECK=true
REACT_APP_API_URL=https://stac.boundlessgeo.io
REACT_APP_MAPBOX_ACCESS_TOKEN=px.eyJ1IjoicGhpbHZhcm6lciIsImEiOiJjanhhbHlnZHkweWtoM3hucmp3NTZsbmpsIn0.Njnnayl6FxkecPBZvKWfzB
REACT_APP_RESULT_LIMIT=20

Build and Run Locally

To run the application locally, run the following from the project directory:

yarn start

The app will run in the development mode. Open http://localhost:3000 to view it in the browser.

The page will reload if you make edits. You will also see any lint errors in the console.

Build Deployable Artifacts

yarn run build

Builds the app for production to the build folder.
It correctly bundles React in production mode and optimizes the build for the best performance.

The build is minified and the filenames include the hashes.
Your app is ready to be deployed!

Deploy to S3

yarn run build && aws s3 sync build/ s3://sat-api-browser-dev

Build and deploy to S3 bucket.

Tests

To run the tap-based unit tests:

yarn test

Design Approach

The application uses Redux for state management.

The Redux store is a vanilla JS object but each logical state slice is an ImmutableJS map.

State slices are never queried directly from the store but are accessed via selectors which are memomized using the Reselect library where appropriate.

The application design uses both Presentational and Container components but makes liberal use of react-redux connect as outlined here.

State that is transient or does not affect other components in the application can be maintained directly in components where appropriate as described here.

Pure stateless React components are preferred but Class components are used where local state is required.

Any impure actions which may have side effects (asynchronous API requests, interaction with browser local storage) are isolated in Redux middleware.

Cross-cutting actions are also managed through the use of middleware.

The application uses Mapbox GL JS for map display and management. When the Map React component mounts it loads a style and some GeoJSON data. This state is then pushed into the Redux store where all subsequent actions act on this state and provide the Map component with the new updated style via props. A more detailed description of this approach is available in this blog post by Tom Macwright.

The application uses Material-UI for UI components and styling.

Individual component style overrides are acheived using Material UIs own css injection with JSS.

The application store is configured to support the redux-devtools-extension for advanced debugging with state rewind and fast forward.

Because the application makes extensive use of HOCs, wrapped components are exposed as the default export while raw components are available as a named component. This allows for unit testing without invoking HOC behavior.

The application uses tape-await to simplify asynchronous test flow for middleware.

sat-api-browser's People

Contributors

danielfdsilva avatar sharkinsspatial avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.