diff --git a/README.md b/README.md
index be62bb92..c30f6061 100644
--- a/README.md
+++ b/README.md
@@ -20,8 +20,13 @@ yarn run config # add the mandato
yarn run dev # start the dev server, this will open a browser in localhost:3000
```
-See the [Environment configuration variables](docs/env.md) documentation for more information of the
-required configuration variables.
+You can also follow along the
+[Getting started with FTW](https://www.sharetribe.com/docs/tutorials/getting-started-with-ftw/)
+tutorial in the [Flex Docs website](https://www.sharetribe.com/docs/).
+
+For more information of the configuration, see the
+[FTW Environment configuration variables](https://www.sharetribe.com/docs/references/ftw-env/)
+reference in Flex Docs.
**Note:** If you want to build your own Flex marketplace on top of the template, you should fork the
repository instead of cloning it. See the [Customization guide](./docs/customization-guide.md).
diff --git a/docs/README.md b/docs/README.md
index 93e47121..29e1e6d3 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -13,15 +13,33 @@ used in a browser environment using the JavaScript SDK.
Marketplace features included in Saunatime:
-- **Location search** shows the user if there are saunas available in a given location.
-- **The listing page** gives a detailed view about what a particular sauna offers.
-- **Transaction process**: Saunatime uses nightly booking.
-- **Notifications**: Emails are sent during the booking process to alert customers and providers
+* **Location search** shows the user if there are saunas available in a given location.
+* **The listing page** gives a detailed view about what a particular sauna offers.
+* **Transaction process**: Saunatime uses nightly booking.
+* **Notifications**: Emails are sent during the booking process to alert customers and providers
about changes in the booking state.
-- **Inbox** lists **orders** and **sales**.
-- **Reviews** can be given after a completed transaction.
-- **User profiles** provide detailed information about a given user.
-- **Extended data:** The listing and user data models are modified using extended data.
+* **Inbox** lists **orders** and **sales**.
+* **Reviews** can be given after a completed transaction.
+* **User profiles** provide detailed information about a given user.
+* **Extended data:** The listing and user data models are modified using extended data.
+
+## Flex Docs website
+
+We are currently moving documentation to the Flex Docs site, so at the moment part of the
+documentation is in this repository and part is in the Flex Docs site.
+
+See the Flex Docs site: https://www.sharetribe.com/docs/
+
+## Getting started
+
+We recommend going through the
+[Getting started articles](https://www.sharetribe.com/docs/background/getting-started/) in the Flex
+Docs:
+
+* [Introducing Flex](https://www.sharetribe.com/docs/background/introducing-flex/)
+* [What development skills are needed?](https://www.sharetribe.com/docs/background/development-skills/)
+* [Getting started with FTW](https://www.sharetribe.com/docs/tutorials/getting-started-with-ftw/)
+ tutorial.
## How to customize this template
@@ -33,28 +51,34 @@ The easiest way to start a customization project is to read through the
Documentation for specific topics can be found in the following files:
-- [Customization guide](customization-guide.md)
-- [Folder structure](folder-structure.md)
-- [Integration to map providers](map-providers.md)
-- [Translations](translations.md)
-- [Styling a marketplace](styling.md)
-- [Static pages](static-pages.md)
-- [Terms of Service and Privacy Policy](terms-of-service-and-privacy-policy.md)
-- [Routing](routing.md)
-- [Redux and duck files](redux.md)
-- [Extended data](extended-data.md)
-- [Extend the listing data model](extend-listing.md)
-- [Search filters](search-filters.md)
-- [Testing](testing.md)
-- [Error logging with Sentry](sentry.md)
-- [Analytics](analytics.md)
-- [Continuous Integration (CI)](ci.md)
-- [Content Security Policy (CSP)](content-security-policy.md)
-- [Original create-react-app documentation](https://github.com/sharetribe/create-react-app/blob/master/packages/react-scripts/template/README.md)
-- [Customization checklist](customization-checklist.md)
-- [Icons](icons.md)
-- [Improving performance](improving-performance.md)
-- [Deploying to production](deploying-to-production.md)
+* [Customization guide](customization-guide.md)
+* [Folder structure](folder-structure.md)
+* [Translations](translations.md)
+* [Styling a marketplace](styling.md)
+* [Static pages](static-pages.md)
+* [Terms of Service and Privacy Policy](terms-of-service-and-privacy-policy.md)
+* [Routing](routing.md)
+* [Redux and duck files](redux.md)
+* [Extended data](extended-data.md)
+ * See also the
+ [Extended data reference](https://www.sharetribe.com/docs/references/extended-data/) in Flex
+ Docs
+* [Extend the listing data model](extend-listing.md)
+* [Search filters](search-filters.md)
+* [Testing](testing.md)
+* [Continuous Integration (CI)](ci.md)
+* [Original create-react-app documentation](https://github.com/sharetribe/create-react-app/blob/master/packages/react-scripts/template/README.md)
+* [Customization checklist](customization-checklist.md)
+* [Icons](icons.md)
+* [Improving performance](improving-performance.md)
+* [Deploying to production](deploying-to-production.md)
+
+See also the following articles in the [Flex Docs](https://www.sharetribe.com/docs/) website:
+
+* [How to set up Mapbox for FTW](https://www.sharetribe.com/docs/guides/how-to-set-up-mapbox-for-ftw/)
+* [How to set up Sentry to log errors in FTW](https://www.sharetribe.com/docs/guides/how-to-set-up-sentry-to-log-errors-in-ftw/)
+* [How to set up Analytics for FTW](https://www.sharetribe.com/docs/guides/how-to-set-up-analytics-for-ftw/)
+* [How to set up Content Security Policy (CSP) for FTW](https://www.sharetribe.com/docs/guides/how-to-set-up-csp-for-ftw/)
The application was bootstrapped with a forked version of
[create-react-app](https://github.com/facebookincubator/create-react-app). While most of the
diff --git a/docs/analytics.md b/docs/analytics.md
index 9c855d63..b65bdc6f 100644
--- a/docs/analytics.md
+++ b/docs/analytics.md
@@ -1,37 +1,5 @@
# Analytics
-The application supports tracking page views with pluggable analytics handlers.
+Documentation moved to the Flex Docs site:
-## Google Analytics
-
-Google Analytics (GA) is supported by default. The enable GA, set the GA tracker ID to the
-environment variable `REACT_APP_GOOGLE_ANALYTICS_ID`;
-
-## Custom analytics handler
-
-If you want to add a new analytics library, you can do as follows:
-
-1. Add the analytics library script
-
- If the analytics library has an external script, add the library script tag to the
- [src/public/index.html](../public/index.html) file. If you need more control, see how the GA
- script is added in [server/renderer.js](../server/renderer.js).
-
-1. Create a handler
-
- To track page views, create a custom handler e.g. in
- [src/analytics/handlers.js](../src/analytics/handlers.js). The handler should be a class that
- implements a `trackPageView(url)` method.
-
- Note that the `url` parameter might not be the same as in the URL bar of the browser. It is the
- canonical form of the URL. For example, in the listing page it doesn't have the dynamic title
- slug in the middle. This allows unified analytics and correct tracking of pages that can be
- accessed from multiple different URLs.
-
- If you analytics library takes the page URL from the browser, you might need to override that
- behavior to use the canonical URL that is given to the method.
-
-1. Initialise the handler
-
- Initialise the handler in the `setupAnalyticsHandlers()` function in
- [src/index.js](../src/index.js).
+https://www.sharetribe.com/docs/guides/how-to-set-up-analytics-for-ftw/
diff --git a/docs/content-security-policy.md b/docs/content-security-policy.md
index ccf0ec0e..5674053d 100644
--- a/docs/content-security-policy.md
+++ b/docs/content-security-policy.md
@@ -1,43 +1,5 @@
# Content Security Policy (CSP)
-According to [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP):
+Documentation moved to the Flex Docs site:
-> Content Security Policy (CSP) is an added layer of security that helps to detect and mitigate
-> certain types of attacks, including Cross Site Scripting (XSS) and data injection attacks. These
-> attacks are used for everything from data theft to site defacement or distribution of malware.
-
-This document describes how to use a CSP with the Flex template app. By default the CSP is disabled.
-By turning it on, the default whitelist in [server/csp.js](../server/csp.js) works with the all the
-URLs and tools that come with the application.
-
-## Setup
-
-The CSP is configured using the `REACT_APP_CSP` environment variable.
-
-Possible values:
-
-- not set: disabled
-- `REACT_APP_CSP=report`: Enabled, but policy violations are only reported
-- `REACT_APP_CSP=block`: Enabled. Policy violations are reported and requests that violate the
- policy are blocked
-
-If error logging with Sentry is enabled (See [Error logging with Sentry](sentry.md)), the reports
-are sent to Sentry. Otherwise the reports are just logged in the backend.
-
-## Extending the policy
-
-If you want to whitelist new sources (for example adding a new external analytics service) and keep
-the CSP enabled, you should add the domains to the white list in [server/csp.js](../server/csp.js).
-
-The easiest way to do this is to first turn on the policy in report mode and then see what policy
-violations are logged to the browser developer console or to the backend policy violation report
-URL.
-
-## Resources
-
-To understand what CSP is and how browsers work, here are some resources:
-
-- https://content-security-policy.com/
-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
-- https://ponyfoo.com/articles/content-security-policy-in-express-apps
-- https://helmetjs.github.io/docs/csp/
+https://www.sharetribe.com/docs/guides/how-to-set-up-csp-for-ftw/
diff --git a/docs/customization-checklist.md b/docs/customization-checklist.md
index 71c82556..286b0c2c 100644
--- a/docs/customization-checklist.md
+++ b/docs/customization-checklist.md
@@ -2,40 +2,42 @@
Some generic things to update and check when starting to customize the template.
-- [Marketplace colors](styling.md)
-- [Generate app icons](icons.md)
-- [Update translations](../src/translations/en.json) or [change the language](translations.md)
-- [LandingPage](../src/containers/LandingPage/LandingPage.js): update and create branded sections
-- [Footer](../src/components/Footer/Footer.js)
-- [AboutPage](../src/containers/AboutPage/AboutPage.js)
-- [Terms of Service](terms-of-service-and-privacy-policy.md#terms-of-service)
-- [Privacy Policy](terms-of-service-and-privacy-policy.md#privacy-policy)
-- [Social media sharing graphics](../src/components/Page/Page.js);
-- [Logo](../src/components/Logo/Logo.js) Change and check that it works on Topbar, Footer, and
+* [Marketplace colors](styling.md)
+* [Generate app icons](icons.md)
+* [Update translations](../src/translations/en.json) or [change the language](translations.md)
+* [LandingPage](../src/containers/LandingPage/LandingPage.js): update and create branded sections
+* [Footer](../src/components/Footer/Footer.js)
+* [AboutPage](../src/containers/AboutPage/AboutPage.js)
+* [Terms of Service](terms-of-service-and-privacy-policy.md#terms-of-service)
+* [Privacy Policy](terms-of-service-and-privacy-policy.md#privacy-policy)
+* [Social media sharing graphics](../src/components/Page/Page.js);
+* [Logo](../src/components/Logo/Logo.js) Change and check that it works on Topbar, Footer, and
CheckoutPage
-- [Default background image](../src/assets/background-1440.jpg)
-- [Maps Marker icon](../src/components/Map/images/marker-32x32.png)
-- [Config: update environment variables](../src/config.js)
-- [Config: siteTitle](../src/config.js) for page schema (SEO)
-- [Config: marketplace address](../src/config.js): contact details also improve SEO
-- [Config: social media pages](../src/config.js)
-- [Marketplace custom config](../src/marketplace-custom-config.js)
-- Update [ListingPage](../src/containers/ListingPage/ListingPage.js) to show extended data (aka
+* [Default background image](../src/assets/background-1440.jpg)
+* [Maps Marker icon](../src/components/Map/images/marker-32x32.png)
+* [Config: update environment variables](../src/config.js)
+* [Config: siteTitle](../src/config.js) for page schema (SEO)
+* [Config: marketplace address](../src/config.js): contact details also improve SEO
+* [Config: social media pages](../src/config.js)
+* [Marketplace custom config](../src/marketplace-custom-config.js)
+* Update [ListingPage](../src/containers/ListingPage/ListingPage.js) to show extended data (aka
publicData attribute)
-- Update [EditListingWizard](../src/components/EditListingWizard/EditListingWizard.js) and panels to
+* Update [EditListingWizard](../src/components/EditListingWizard/EditListingWizard.js) and panels to
add extended data
-- Update [SearchPage](../src/containers/SearchPage/SearchPage.js) to filter with extended data
-- Update [routeConfiguration](../src/routeConfiguration.js) if needed
-- Update [Email templates](../ext/default-mail-templates), all of them: .html, subject.txt, and
+* Update [SearchPage](../src/containers/SearchPage/SearchPage.js) to filter with extended data
+* Update [routeConfiguration](../src/routeConfiguration.js) if needed
+* Update [Email templates](../ext/default-mail-templates), all of them: .html, subject.txt, and
text.txt
-- Update [config: bookingUnitType](../src/config.js) if needed
-- If `line-item/units` is used, add quantity handling to
+ * See the [Email template reference](https://www.sharetribe.com/docs/references/email-templates/)
+ in Flex Docs for more information.
+* Update [config: bookingUnitType](../src/config.js) if needed
+* If `line-item/units` is used, add quantity handling to
[BookingDatesForm](../src/forms/BookingDatesForm/BookingDatesForm.js),
[ListingPage](../src/containers/ListingPage/ListingPage.js),
[CheckoutPage](../src/containers/CheckoutPage/CheckoutPage.js)
## What else
-- Do you need more [static pages](static-pages.md)?
-- Changes to existing pages
-- Changes to transaction process (API + Web app)
+* Do you need more [static pages](static-pages.md)?
+* Changes to existing pages
+* Changes to transaction process (API + Web app)
diff --git a/docs/customization-guide.md b/docs/customization-guide.md
index 81eaa4d9..ed83448b 100644
--- a/docs/customization-guide.md
+++ b/docs/customization-guide.md
@@ -7,12 +7,23 @@ will help you in setting up your fork and describes the general workflow.
README file, you probably don't want to make the customizations in that project. Forking the
repository is the recommended way to proceed. Follow this guide for instructions.
+## Getting started
+
+We recommend going through the
+[Getting started articles](https://www.sharetribe.com/docs/background/getting-started/) in the Flex
+Docs:
+
+* [Introducing Flex](https://www.sharetribe.com/docs/background/introducing-flex/)
+* [What development skills are needed?](https://www.sharetribe.com/docs/background/development-skills/)
+* [Getting started with FTW](https://www.sharetribe.com/docs/tutorials/getting-started-with-ftw/)
+ tutorial.
+
## Requirements
Install required tools:
-- [Node.js](https://nodejs.org/)
-- [Yarn](https://yarnpkg.com/)
+* [Node.js](https://nodejs.org/)
+* [Yarn](https://yarnpkg.com/)
## Technologies
@@ -24,13 +35,13 @@ get-go.
Here are some main technologies that the template uses:
-- JavaScript: programming language for the whole application
-- CSS: styling the user interface using [CSS Modules](https://github.com/css-modules/css-modules)
-- [React](https://reactjs.org/): library for creating user interfaces with components
-- [Redux](https://redux.js.org/): state and data flow handling
-- [Final Form](https://github.com/final-form/final-form): forms
-- [React Router](https://reacttraining.com/react-router/): routing
-- [Express](https://expressjs.com/): server
+* JavaScript: programming language for the whole application
+* CSS: styling the user interface using [CSS Modules](https://github.com/css-modules/css-modules)
+* [React](https://reactjs.org/): library for creating user interfaces with components
+* [Redux](https://redux.js.org/): state and data flow handling
+* [Final Form](https://github.com/final-form/final-form): forms
+* [React Router](https://reacttraining.com/react-router/): routing
+* [Express](https://expressjs.com/): server
## Setup
@@ -99,8 +110,9 @@ This command will create `.env` file and guide you trough setting up the require
variables. The `.env` file is the place to add your local configuration. It is ignored in Git, so
you'll have to add the corresponding configuration also to your server environment.
-There are some mandatory configuration variables that are defined in the template. See the
-[Environment configuration variables](env.md) documentation for more information.
+There are some mandatory configuration variables that are defined in the template. See the Flex Docs
+[FTW Environment configuration variables](https://www.sharetribe.com/docs/references/ftw-env/)
+reference for more information.
See also the [src/config.js](../src/config.js) file for more configuration options.
@@ -112,7 +124,7 @@ To develop the application and to see changes live, start the frontend developme
**Known issues:**
-- Adding/changing `import`s may not be synced properly with ESLint. You may see an error
+* Adding/changing `import`s may not be synced properly with ESLint. You may see an error
`Unable to resolve path to module` even though the module existing in right path. Restarting the
server doesn't help. To solve the issue, you need to make a change to the file where the error
occurs.
diff --git a/docs/deploying-to-production.md b/docs/deploying-to-production.md
index adfd7807..44fd4da7 100644
--- a/docs/deploying-to-production.md
+++ b/docs/deploying-to-production.md
@@ -28,11 +28,12 @@ To deploy the application add at least the following variables:
| `PORT` | Must be set if the production environment doesn't set it by default. Not needed in Heroku. |
| `REACT_APP_SHARETRIBE_SDK_CLIENT_ID` | Client ID (API key) you can check from [Flex Console](https://flex-console.sharetribe.com/login/). You will get this from the Sharetribe team. |
| `REACT_APP_STRIPE_PUBLISHABLE_KEY` | Stripe publishable API key for generating tokens with Stripe API. It can be found from Stripe [API keys](https://dashboard.stripe.com/account/apikeys) page. Make sure to toggle _"View test data"_ on if you don't want to use real money yet. The secret key needs to be added to Flex Console. |
-| `REACT_APP_MAPBOX_ACCESS_TOKEN` | Sign up for Mapbox and go to [account page](https://www.mapbox.com/account/access-tokens). Then click `Create access token`. For more information see the [Integrating to map providers](./map-providers.md) documentation. |
+| `REACT_APP_MAPBOX_ACCESS_TOKEN` | Sign up for Mapbox and go to [account page](https://www.mapbox.com/account/access-tokens). Then click `Create access token`. See the Flex Docs [How to set up Mapbox for FTW](https://www.sharetribe.com/docs/guides/how-to-set-up-mapbox-for-ftw/) guide for more information. |
| `REACT_APP_CANONICAL_ROOT_URL` | Canonical root URL of the marketplace. E.g. https://the-name-of-your-app.herokuapp.com or your actual domain. This is needed for social media sharing and SEO optimization. |
-There are also some other variables that can be used. See the
-[Enviroment configuration variables](./env.md) documentation for more information.
+There are also some other variables that can be used. See the Flex Docs
+[FTW Environment configuration variables](https://www.sharetribe.com/docs/references/ftw-env/)
+reference for more information.
### Building the app
@@ -51,13 +52,13 @@ Start the server:
## Deploying to Heroku
-- [Forking the repository](#forking-the-repository)
-- [Creating new app](#creating-new-app)
-- [Connect GitHub to Heroku](#connect-github-to-heroku)
-- [Heroku settings](#heroku-settings)
- - [Updating enviroment variables](#updating-enviroment-variables)
- - [Domains and certificates](#domains-and-certificates)
-- [Heroku logs](#heroku-logs)
+* [Forking the repository](#forking-the-repository)
+* [Creating new app](#creating-new-app)
+* [Connect GitHub to Heroku](#connect-github-to-heroku)
+* [Heroku settings](#heroku-settings)
+ * [Updating enviroment variables](#updating-enviroment-variables)
+ * [Domains and certificates](#domains-and-certificates)
+* [Heroku logs](#heroku-logs)
Before creating the app you need three accounts: [Heroku](https://heroku.com/),
[Stripe](https://stripe.com/fi) and [MapBox](https://www.mapbox.com/). Creating the accounts is free
@@ -103,7 +104,7 @@ from any branch in the repository.
Read more from Heroku docs:
-- [GitHub Integration](https://devcenter.heroku.com/articles/github-integration)
+* [GitHub Integration](https://devcenter.heroku.com/articles/github-integration)
### Heroku settings
@@ -126,8 +127,8 @@ SSH settings in the _Settings tab_.
Read more from Heroku docs:
-- [Custom Domain Names for Apps](https://devcenter.heroku.com/articles/custom-domains)
-- [Manually Acquiring an SSL/TLS Certificate](https://devcenter.heroku.com/articles/acquiring-an-ssl-certificate)
+* [Custom Domain Names for Apps](https://devcenter.heroku.com/articles/custom-domains)
+* [Manually Acquiring an SSL/TLS Certificate](https://devcenter.heroku.com/articles/acquiring-an-ssl-certificate)

diff --git a/docs/env.md b/docs/env.md
index c44650be..9fb906d2 100644
--- a/docs/env.md
+++ b/docs/env.md
@@ -1,42 +1,5 @@
# Environment configuration variables
-The following configuration variables can be set to control the Flex template app behaviour. Most of
-them have defaults that work for development environment. For production deploys most should be set.
+Documentation moved to the Flex Docs site:
-| Variable | Description |
-| ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| REACT_APP_MAPBOX_ACCESS_TOKEN | See: [Integrating to map providers](./map-providers.md) |
-| REACT_APP_GOOGLE_MAPS_API_KEY | See: [Google Maps API key](./google-maps.md) (Alternative map provider) |
-| REACT_APP_SHARETRIBE_SDK_CLIENT_ID | Client ID (API key). You can get this from the Flex Console. |
-| REACT_APP_STRIPE_PUBLISHABLE_KEY | Stripe publishable API key for generating tokens with Stripe API. Use test key (prefix `pk_test_`) for development. The secret key needs to be added to Flex Console. |
-| REACT_APP_SHARETRIBE_MARKETPLACE_CURRENCY | The currency used in the Marketplace as ISO 4217 currency code. For example: USD, EUR, CAD, AUD, etc. |
-| REACT_APP_CANONICAL_ROOT_URL | Canonical root url of the marketplace. Needed for social media sharing and SEO optimization. |
-| NODE_ENV | Node env. Use 'development' for development and 'production' for production. |
-| PORT | Port for server to accept connections. |
-| REACT_APP_ENV | A more fine grained env definition than NODE_ENV. Is used for example to differentiate envs in logging. |
-| REACT_APP_SHARETRIBE_USING_SSL | Redirect HTTP to HTTPS? |
-| SERVER_SHARETRIBE_TRUST_PROXY | Set when running the app behind a reverse proxy, e.g. in Heroku. |
-| REACT_APP_SENTRY_DSN | See: [Error logging with Sentry](./sentry.md) |
-| REACT_APP_CSP | See: [Content Security Policy (CSP)](./content-security-policy.md) |
-| BASIC_AUTH_USERNAME | Set to enable HTTP Basic Auth |
-| BASIC_AUTH_PASSWORD | Set to enable HTTP Basic Auth |
-| REACT_APP_GOOGLE_ANALYTICS_ID | See: [Google Analytics](./analytics.md) |
-| REACT_APP_AVAILABILITY_ENABLED | Enables availability calendar for listings. |
-| REACT_APP_DEFAULT_SEARCHES_ENABLED | Enables default search suggestions in location autocomplete search input. |
-| REACT_APP_SHARETRIBE_SDK_BASE_URL | The base url to access the Sharetribe Flex Marketplace API. FTW uses the correct one by default so no need to set this. |
-
-## Defining configuration
-
-When the app is started locally with `yarn run dev` or `yarn run dev-server`, you can set
-environment variables by using the (gitignored) `.env` file. You can edit the basic variables via
-`yarn run config` or by editing directly the .env file. Some variables can be edited only in the
-.env file. The repository contains a template file `.env-template` with default configuration.
-
-In production, it's recommended that you set the configuration via env variables and do not deploy
-an .env file. The client application will only be packaged with env variables that start with
-REACT_APP. This way server secrets don't end up in client bundles.
-
-**With deploys note that the configuration options are bundled in the client package at build
-time.** The configuration of the build environment must match run environment for things to work
-consistently. To apply changes to configuration values client bundle must be rebuilt. Just
-restarting the server is not enough.
+https://www.sharetribe.com/docs/references/ftw-env/
diff --git a/docs/google-maps.md b/docs/google-maps.md
index 340dac64..3c419796 100644
--- a/docs/google-maps.md
+++ b/docs/google-maps.md
@@ -1,181 +1,5 @@
# Google Maps
-Flex Template for Web (FTW) offers out of the box support for Google Maps API for showing a map and
-searching locations with search autocompletion. This document describes how to set up the API key
-for the API requests to work properly.
+Documentation moved to the Flex Docs site:
-> Note: before making the change to Google Maps, you should consider if you are OK with their
-> current pricing. There's a pricing calculator available in their
-> [pricing page](https://cloud.google.com/maps-platform/pricing/). FTW's default map provider is
-> Mapbox, which is often cheaper.
-> [Learn more about how to use Mapbox or some other map provider instead of Google Maps](https://github.com/sharetribe/flex-template-web/blob/e6034c7690c095553f44092b032689cd6b6f7546/docs/map-providers.md).
-
-## Generate a Google Maps API key
-
-Go to the
-[Google Maps JavaScript API V3 Reference](https://developers.google.com/maps/documentation/javascript/reference),
-click on the "GET A KEY" button in the top bar, and follow the instructions. You can copy the given
-key to your application now.
-
-## Enable Google Places API Web Service
-
-Follow the instructions in the
-[Getting started](https://developers.google.com/maps/documentation/javascript/places#GetStarted)
-section of the Places library documentation to enable using the Google Places API Web Service. Also
-Maps Static API and Maps Javascript API need to be enabled.
-
-## Setup the application to use the API key
-
-The application uses the `REACT_APP_GOOGLE_MAPS_API_KEY` environment variable for the key value. For
-local development, you can add the variable in the Gitignored `.env` file in the project root:
-
-```
-REACT_APP_GOOGLE_MAPS_API_KEY=my-key-here
-```
-
-## Setup common locations to reduce typing
-
-The location autocomplete-input in the landing page and the topbar can be configured to have
-specific locations shown by default when the user focuses on the input and hasn't yet typed in any
-searches. This reduces the typing required for common searches and also reduces the need to use
-Google Map Places API that much.
-
-To use default searches, another environment variable needs to be set:
-
-```
-REACT_APP_DEFAULT_SEARCHES_ENABLED=true
-```
-
-The default locations have been described in file:
-[src/default-location-searches.js](../src/default-location-searches.js).
-
-The same environment variable also shows "current location" suggestion, which will make the browser
-to ask user's current location. This is a fast way to search listings nearby. You can specify
-whether to use the current location from [config.js](../src/config.js). Search for variables:
-`suggestCurrentLocation` and `currentLocationBoundsDistance`.
-
-## Change components: use Google Map versions instead of Mapbox
-
-If you wish to use Google Maps instead of Mapbox, you need to make some changes to FTW default
-setup.
-
-### 1. Include Google Map script instead of Mapbox scripts
-
-Mapbox related scripts can be removed from index.html and instead use Google Map script described in
-comments.
-
-_public/index.html:_
-
-```html
-
-
-
-
-
-```
-
-### 2. Searching with Google's geocoding API
-
-Location search aka LocationAutocompleteInput should use Google Map specific geocoder. The correct
-import is written to the comments of LocationAutocompleteInput component.
-
-_src/components/LocationAutocompleteInput/LocationAutocompleteInputImpl.js:_
-
-```js
-import Geocoder, { GeocoderAttribution, CURRENT_LOCATION_ID } from './GeocoderMapbox';
-// import Geocoder, { GeocoderAttribution, CURRENT_LOCATION_ID } from './GeocoderGoogleMaps';
-```
-
-Furthermore, Google Map states in their terms of service that Google logo needs to be visible when
-using their geocoding service. It is available as a background image below the autocomplete
-predictions. However, there needs to be enough padding for that logo. You can change the padding
-through `marketplace.css`.
-
-_src/marketplace.css:_
-
-```js
-/* Google Maps needs 72px bottom padding to accommodate logo, Mapbox doesn't have one */
---locationAutocompleteBottomPadding: 8px;
-```
-
-### 3. Show correct map on ListingPage (Map component)
-
-Google Map version (containing both static and dynamic maps) can be taken into use by importing
-correct map subcomponent.
-
-_src/components/Map/Map.js:_
-
-```js
-import { StaticMap, DynamicMap, isMapsLibLoaded } from './MapboxMap';
-// import { StaticMap, DynamicMap, isMapsLibLoaded } from './GoogleMap';
-```
-
-### 4. SearchMap.js
-
-The most complex change is happening in SearchPage. First, you need to import `SearchMapWithMapbox`
-instead of `SearchMapWithGoogleMap`.
-
-_src/components/SearchMap/SearchMap.js:_
-
-Remove this:
-
-```js
-import SearchMapWithMapbox, {
- LABEL_HANDLE,
- INFO_CARD_HANDLE,
- getMapBounds,
- getMapCenter,
- fitMapToBounds,
- isMapsLibLoaded,
-} from './SearchMapWithMapbox';
-```
-
-And add this instead:
-
-```js
-import SearchMapWithGoogleMap, {
- LABEL_HANDLE,
- INFO_CARD_HANDLE,
- getMapBounds,
- getMapCenter,
- fitMapToBounds,
- isMapsLibLoaded,
-} from './SearchMapWithGoogleMap';
-```
-
-Then, in `render` method, you need to put `SearchMapWithGoogleMap` component into use by replacing
-`SearchMapWithMapbox` which is defined inside `ReusableMapContainer`. The component with correct
-props is already there in the comments:
-
-```js
-// When changing from default map provider to Google Maps, you should use the following
-// component instead of SearchMapWithMapbox:
-//
-//