# fids

## Componentes

### auth-domain

Contiene `user-manager` con su base de datos. Maneja la autenticación y autorización de usuarios para el `browser-domain`.

### browser-domain

SPA que tiene dos flujos dependiendo si el usuario es una aerolínea o un usuario normal.

### flights-domain

Contiene `flights-information` con su base de datos. Maneja todo lo relacionado a la información de los vuelos (CRUD).

### screens-domain

PWA pensada para utilizarse en un aeropuerto. Se maneja con un solo `origin` y con el query param `lastUpdated` para pedir cambios. Esta tiene una base datos para cachear los resultados y poder funcionar offline.

### subscription-domain

Contiene `subscription-manager` con su base de datos. Maneja todo lo relacionado a la suscripción de los usuarios, junto con el envío de notificaciones.

### gateway

API gateway encargada de exponer los servicios. Maneja autenticación usando el `auth-domain`.

## Uso

Primero, deberá configurar los `.env` como usted prefiera. Copie y modifique los ejemplos:

```
cp flights-domain/.env.prod.example flights-domain/.env.prod
cp auth-domain/.env.prod.example auth-domain/.env.prod
cp subscription-domain/.env.prod.example subscription-domain/.env.prod
```

Luego, para levantar todos los componentes, basta con ejecutar:

```
./run.sh
```

Por último, si quiere bajarlos:

```
./run.sh -x
```

## Contribuir

Primero, instale el hook de `pre-commit` en su repositorio local (probablemente deba instalar antes `pre-commit`, vea cómo hacerlo [aquí](https://pre-commit.com/)):

```
pre-commit install
```

Luego, puede usar el script de `run.sh` para probar sus cambios. Por ejemplo, si quiere bajar y levantar un servicio en particular:

```
./run.sh -d flights -x
./run.sh -d flights
```

En este caso el parámetro `-d` indica el tipo de servicio (puede ser `subscription`, `browser`, `screen`, `gateway`, `flights`, `auth` o `elk`) y el parámetro `-x` indica que se quiere bajar el servicio.

Si quiere testear un servicio lo puede hacer corriendo:

```
./run.sh -d flights -t
```