# Guía de ambiente Windows
## Objetivo
Esta guía es para ayudar a compañeros de equipo con su configuración del entorno del desarrollo, las pruebas de arquitectura se realizaron desde diversas plataformas como ubuntu, mac y windows. Pero particularmente con windows tuvieron algunos problemas técnicos. Ese es el fin de este documento, ayudar a tener un apoyo para que la configuración sea más rápida.
## Requisitos:
* Docker
* Visual Studio Code
* Git bash
* Datagrid o DBeaver
* Node js
* Yarn
## Prerrequisitos
Antes de empezar hay que asegurarse de tener instalado node js en el equipo, así como yarn y git para el control de versión del proyecto y que sea posible su clonación del repositorio.
**Instalación de Git:**
* Asegurarse de instalar Git Bash, que se requerirá más adelante.
* Git (git-scm.com)
**Instalación de Node.js:**
* Node.js (nodejs.org)
**Instalación de Yarn:**
Una vez instalado Git y Node.js abrimos nuestra terminal, puede ser Git Bash, PowerShell o CMD y se ejecutará la siguiente línea:
`npm install --global yarn`
Para la verificación de la instalación simplemente se ejecuta la siguiente línea
`yarn --version`
## Entorno Inicial para clonación de proyecto
Se recomienda antes de comenzar con la clonación, crear un directorio o carpeta independiente sola para este proyecto.
Una vez ubicado en su terminal en la carpeta donde se desea clonar el proyecto se ejecutará la siguiente línea
`git clone git@github.com:Solify-IT/snorlax.git`
Una vez clonado se accede a la carpeta clonada
`cd snorlax`
## Entorno de desarrollo
Es necesario tener en este momento los requisitos básicos, en este caso es necesario tener instalado.
* Visual studio Code( https://visualstudio.microsoft.com/es/ ): Entorno de desarrollo
* Docker( https://www.docker.com/ )r: Es un contenedor para proyectos
* Datagrid o Dbeave ( https://www.jetbrains.com/es-es/datagrip/ )r: Es un gestor de bases de datos
## Configuración de entorno de desarrollo
A continuación se puede abrir el proyecto clonado anteriormente en el entorno de desarrollo, se observa que se encontrara algún errores en las carpetas del proyecto. Esto es debido a que son necesarias algunas configuraciones iniciales.
Se requiere copiar los siguientes archivos, esto se puede realizar desde la terminal de visual code
**Acceder a ubicación /Snorlax**
```
cd Snorlax
cp backend/.env.example backend/.env
cp frontend/.env.example frontend/.env
cp postgres/.env.example postgres/.env
```
Es necesario correr el proyecto, para probar las con
`docker-compose up`
Debido a que es la primera vez, pueden salir errores comunes en un comienzo al proyecto se deben instalar los dependencias necesarias con:
`yarn install `
Consejo( Cada cambio de rama o pull) es necesario este comando
Después volver a correr el proyecto se requiere
`docker-compose up --build`
Al final de las configuraciones básicas, se debe observar corriendo el proyecto en docker con su respectivo backend, frontend y postgres.
## Configuraciones de bases de datos
Para poder probar la conexión con la base de datos interna en docker
Es necesario configurar la conexión con estos datos:
Name: snorlax@localhost
Host: localhost
Port: 5432
User: postgres
Password: postgres
Después se puede acceder al base de datos, debe mostrarse un acceso con éxito a una carpeta public. En la cual se crearán las tablas definidas de acuerdo al proyecto

Para poder crear las tablas en nuestra base de datos, es necesario utilizar este comando.
Dentro de la terminal de Visual Studio Code
`yarn migrate:up`
Las migraciones son una herramienta que permite definir las tablas dentro del proyecto y después crearlas de forma más rápida en la base de datos.

## Configuraciones de entorno con espacios en blanco CRLF A LF
Este ejemplo se hará en el editor de código studio code, donde se editará el salto de línea, ya que por defecto el salto de línea en Windows tiene un formato CRLF y en Mac y Linux se utiliza LF, y en nuestras políticas hay que unificar esto para que no haya errores y conflictos para al hacer merge en el proyecto.
Iremos a los ajustes del editor de texto y buscaremos **salto de línea o line fe (The default end of line character)** y seleccionamos **\n **

Es necesario acceder a la ubicación del proyecto Snorlax, en la cual se deben ejecutar el siguiente comando desde el directorio backend y frontend por separado.
`find . -type f -exec dos2unix {} \;`
**Backend**

**Frontend**

Este comando ayudará a corregir el error de espacios y te permitirá trabajar dentro de tu entorno de trabajo.
## Agregar credenciales de Firebase
Para este paso deberás tener los permisos para acceder a la consola del proyecto dentro de Firebase, si no tienes tu permiso puedes pedirle acceso al Architecture Owner para que te mandé la invitación, una vez aceptada la invitación en tu correo accedemos a Firebase
**Link a firebase**
https://firebase.google.com/?hl=es
En la parte superior derecha ingresarás al botón que dice Ir a la consola para acceder a los proyectos en los que estás involucrado

Ingresarás al proyecto **Snorlax**

En la parte superior izquierda habrá un botón de ajustes a lado de **Descripción general del proyecto**, das click en el botón de ajustes y seleccionas **Configuración del proyecto**

En la siguiente vista se accederá a la sección **Cuentas de servicio** en la parte superior y dentro de esta pestaña en la parte inferior habrá un botón que dice **Generar clave privada** se dará click a ese botón

Se descargará un archivo tipo **JSON** con esta información:

Con esta información ahora abrirás tu proyecto en tu editor de código de preferencia, e irás a la carpeta de **backend** y en el archivo **.env** agregarás las credenciales obtenidos en el json a este archivo en sus respectivos lugares

