This project was bootstrapped with Create React App.
Set up local environment
Under root folder, create .env.local
with this content:
PUBLIC_URL=http://localhost:4000
Pattern
This app is set up to intentionally ignore the path part in route, and cares only about the search params aka.?a=b&c=d
. Whenever filter values are changed, the location search string and history will be updated, triggering state to update accordingly. The location search string is the only source of truth.
To embed the app to any service, make sure to have <div id="root"></div>
in the template. The app content will be rendered inside this element.
The API endpoint /api/html
gives back an object with:
html
: [string] Initial server rendered html to append toroot
element.main_js
: [array] Path to main.js fileother_js
: [array] Paths to js chunk filesruntime_js
: [array] Path to runtime js filemain_css
: [array] Paths to main.css fileother_css
: [array] Paths to css chunk file
JS file should be appended to the end of body
in this order: (1) runtime js, (2) chunk files, (3) main.js files
Css file should be appended to the end of head
.
Remember to pass the language to the app https://blok-listings-app.herokuapp.com/api/html/?lang=<language_code>
. This language will be applied to the first server rendered html string. The server will also try to write the cookie listing_i18n
with language code. If the call is made from server side, make sure to set this cookie manually so client side render can pick up the right language.
Available Scripts
In the project directory, you can run:
npm start-client
Development: Runs the app 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.
npm start
Start server: Start server and listening at port 4000.
npm test
Test watch: Launches the test runner in the interactive watch mode.
See the section about running tests for more information.
npm run build
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!
See the section about deployment for more information.
Deployment
The live version of this app is at https://blok-listings-app.herokuapp.com/