Ingreso de nuevos desarrolladores
===
## ¿Cómo instalar Equip en el computador de los desarrolladores?
### Windows 10
Para poder ejecutar el sistema se deben instalar las siguientes herramientas:
- [Git](https://git-scm.com/download/win)
- [Node.js versión 12](https://nodejs.org/es/download/)
- [Ubuntu](https://www.microsoft.com/es-ar/p/ubuntu/9nblggh4msv6?activetab=pivot:overviewtab)
- [Docker Desktop](https://docs.docker.com/docker-for-windows/install-windows-home/)
NOTA: Las instrucciones de instalacion de las mismas son proporcionadas en sus sitios web oficiales.
1. Crear la siguiente estructura de directorios:
```
equip
/api
/web
```
2. Descargar repositorios en carpetas respectivas
- git clone https://github.com/alliende/equip_api.git .
- git clone https://github.com/alliende/equip_web.git .
3. Tener corriendo Docker Desktop:

4. Abrir una terminal, posicionarse en la carpeta raiz de la copia local repositorio de la api y posicionarse en la rama develop:
```
git checkout develop
```
Descargar el archivo de docker actualizado:
```
docker pull alliende/db_dev:1
```

5. Agregar un tag al archivo:
```
docker tag alliende/db_dev:1 db_dev:1
```
Todos los comandos destinados a docker deben ejecutarse en terminales de Windows ya que es en dicho sistema donde corre Docker Desktop.

7. En la carpeta raiz de la copia local repositorio de la api crear la siguiente estructura de directorios:
```
equip
/api
/db_data
/loadDB
/saveDB
```
8. Descargar el archivo con la base de datos de prueba desde el siguiente [Link](https://ejemplo.equip.cloud/k43jn543jk5nINI63vBHJYhvjv67253hvjV62TVV27263Ljl723/rethinkdb_dump.tar.gz) y guardarlo en el directorio loadDB creado en el paso anterior:
9. Crear el y arrancar el container mediante el comando:
```
docker run -p 28015:28015 -p 33003:8080 -d --name DB -v "D:\Equip\equip_api\db_data\loadDB":/loadDB -v "D:\Equip\equip_api\db_data\saveDB":/saveDB db_dev:1
```

``NOTA: Las rutas de acceso que aparecen entre comillas dobles corresponden a las rutas de acceso de los directorios creados en el paso 7.``
10. Cargar la base de datos guardada en el paso 8:
```
npm run loadDB
```

11. Actualizar la base de datos:
```
npm run updateDB -- --dbName=equip
```
12. Abrir una terminal de Ubuntu, e instalar Node.js version 12:
```
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs
```
13. Posicionarse en el directorio raiz de la copia local del repositorio de la api e instalar las dependencias:
```
npm ci
```
``
NOTA: Es necesario correr este y el siguiente comando en Ubuntu debido a que los scripts del proyecto fueron definidos de tal forma que solo funcionan en sistemas Linux.
``
13. Correr la api:
```
npm start
```

Llegado a este punto se tiene el backend configurado. Si el contenedor se detiene por algun motivo, como puede ser un reinicio de la PC, es necesario ejecutar ``(en una terminal de windows posicionada en la raiz de la api)`` el comando:
```
npm run startContainerDB
```
Equivalente al comando:
```
docker container start DB
```
14. Para correr el frontend de la web es necesario abrir otra terminal de Ubuntu, posicionarse en la carpeta raiz de la copia local del repositorio de la web, hacer checkout a develop e instalar las dependencias:
```
npm ci
```
15. Por ultimo se corre la web:
```
npm start
```
### Linux y Mac
Antes de seguir el procedimiento es necesario:
- [Instalar Node versión 12](https://nodejs.org/en/download/)
- Instalar npm v8: `npm i -g npm@8`
- [Instalar Docker](https://docs.docker.com/install/)
1. Crear la siguiente estructura de directorios:
```
equip
/api
/web
```
2. Descargar repositorios en carpetas respectivas
- `git clone https://github.com/alliende/equip_api.git .`
- `git clone https://github.com/alliende/equip_web.git .`
3. En api ejecutar
- `npm ci`
- `docker pull alliende/db_dev:1`
- `docker tag alliende/db_dev:1 db_dev:1`
- `npm run createContainerDB`
- Cargar una copia de la BD de Demo
- Descargarla en `db_data/loadDB` y ejecutar npm run LoadDB
- `curl -o db_data/loadDB/rethinkdb_dump.tar.gz "https://demo.equipco.app/k43jn543jk5nINI63vBHJYhvjv67253hvjV62TVV27263Ljl723/rethinkdb_dump.tar.gz"`
- Ejecutar `npm start`
6. En web ejecutar
- `npm ci`
- `npm start`
## Introducción al App de Equip
1. bootstrap/browser, dibuja <app> en el html
2. App.js Conectamos el store con los componentes y se lo asignamos las rutas y sus componentes.
3. Cada una de las rutas contiene un componente contenedor que le entrega a los componentes sus props y acciones a los componentes.
4. Las acciones: Se emiten desde los componentes
- Ver la estructura de redux
- confirmationActionTypes
- derivatedActionTypes
- middlewares
- modules: reducers,
- actionNAmes
- reducers: combine reducers & confirm y derived
- store.js: Ejecución de redux(thunkHanler y actionSender)
- Lifecycle de las acciones:
1. Se ejecuta acciñon desde un componente
2. middleware thunkHandler: que da la oportunidad de generar funciones async ó ejecutar otras acciones
3. Ejecuta el reducer.
4. middleware actionSender: Nuestro método para enviar las acciones al servidor.
5. Sockets
6. Bundling: ¿Cómo se transforma el proyecto en archivos disponibles para el browser?
7. Componentes
1. Cómo se cargan los estilos
className y cx
8. Storybook: /stories