# Configure EntitiesManager

## prerequisites
- entitiesDefinition (how to define [define-entities-definition](define-entities-definition.md))
- firebase  
`$ yarn add firebase`
- redux, redux-thunk, reudx-logger(optional)  
`$ yarn add redux redux-thunk redux-logger`

## configure entitiesManager & redux-store
```javascript
import * as firebase from 'firebase';
import { createStore, applyMiddleware, combineReducers } from 'redux'
import thunk from 'redux-thunk';
import logger from 'redux-logger';
import 'firebase/firestore';
import { EntitiesManager as EM } from '@pedaling/firebase-entities-manager'

// configure firebase
const firebaseConfig = {
  apiKey: '***************************************',
  authDomain: 'appName-*****.firebaseapp.com',
  databaseURL: 'https://appName-*****.firebaseio.com',
  projectId: 'appName-*****',
};
const firebaseApp = firebase.initializeApp(firebaseConfig);
const firestore = firebaseApp.firestore();

// configure EntitiesManager
const entitiesManager = new EM(
  state => state.entities,
  entitiesDefinition,
  err => console.error(err),
  firestore,
  firebaseApp,
  { // options (optional)
    fetchItemTimeout: 5000 // (default: 5000 ms)
  }
);

// configure store
const middlewares = [thunk, logger];
const store = createStore(
  combineReducers({ entities: em.getEntitiesReducer() }),
  {}, // initialState
  applyMiddleware(...middlewares)
);
```