cdklabs / construct-hub-webapp

React web app for Construct Hub
Apache License 2.0
21 stars 11 forks source link

Construct Hub Web App

This project maintains the React web app for Construct Hub.

:hammer_and_pick: Development

:clipboard: Prerequisites:

:computer: Running the website

To run the web app locally, fork the repository and run yarn or yarn install to download its dependencies. Then, run yarn dev to start the development server on localhost:3000.

By default, all requests for backend data will be proxied to https://constructs.dev. To change this to point to a different version of the website (such as your own deployment of the Construct Hub construct, modify the value of PROXY_URL in the beginning of .projenrc.js and then run yarn projen to update the configuration everywhere. You may then need to restart yarn dev for changes to take effect.

:gear: Configuration

Feature flags are used to test new features. You can enable them on your local build by adding a file named config.json to the public/ directory:

{
  "featureFlags": {
    "homeRedesign": true,
    "searchRedesign": true
  }
}

The list of all configuration options and feature flags is defined in src/api/config/index.ts.

:test_tube: Running integration / E2E tests

Integration tests are written using Cypress and can be found within the cypress/ directory. The full test suite can be executed in the CLI by running yarn cypress:run, or you can run yarn cypress:open to debug individual tests interactively.

:toolbox: Other tools

Our repository has a GitHub action set up to automatically update minor and patch versions of dependencies. To update the major version of a dependency, change the version directly in package.json and install it with yarn so that yarn.lock is updated. If you need to add a new dependency, find the section of .projenrc.js where the dependencies (or dev dependencies) are located, add the dependency name, and run yarn projen.

The yarn analyze-exports command can be used to automatically generate a list of TypeScript exports that are not being used within the app.

:cop: Security

See CONTRIBUTING for more information.

:balance_scale: License

This project is licensed under the Apache-2.0 License.