# React generator
Create a React application using [Facebook's Create React App](https://github.com/facebookincubator/create-react-app):
$ create-react-app my-app
$ cd my-app
Install React Router, Redux, React Redux, React Router Redux, Redux Form and Redux Thunk (to handle AJAX requests):
$ yarn add redux react-redux redux-thunk redux-form react-router-dom react-router-redux prop-types
Install the generator globally:
$ yarn global add @api-platform/client-generator
Reference the Bootstrap CSS stylesheet in `public/index.html` (optional):
Bootstrap 3 - last release 0.1.15
```html
React App
```
Bootstrap 4 - from release 0.1.16
```html
React App
```
In the app directory, generate the files for the resource you want:
$ generate-api-platform-client https://demo.api-platform.com src/ --resource foo
# Replace the URL by the entrypoint of your Hydra-enabled API
# Omit the resource flag to generate files for all resource types exposed by the API
The code is ready to be executed! Register the generated reducers and components in the `index.js` file, here is an example:
```javascript
import React from 'react';
import ReactDom from 'react-dom';
import registerServiceWorker from './registerServiceWorker';
import { createStore, combineReducers, applyMiddleware } from 'redux';
import { Provider } from 'react-redux';
import thunk from 'redux-thunk';
import { reducer as form } from 'redux-form';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
import createBrowserHistory from 'history/createBrowserHistory';
import { syncHistoryWithStore, routerReducer as routing } from 'react-router-redux'
// Replace "foo" with the name of the resource type
import foo from './reducers/foo/';
import fooRoutes from './routes/foo';
const store = createStore(
combineReducers({routing, form, foo}), // Don't forget to register the reducers here
applyMiddleware(thunk),
);
const history = syncHistoryWithStore(createBrowserHistory(), store);
ReactDom.render(
{fooRoutes}