# app

[![pipeline status](http://gitlab.2iopenservice.com/vincent/admin/badges/master/pipeline.svg)](http://gitlab.2iopenservice.com/opentalent/admin/-/commits/master)
[![coverage report](http://gitlab.2iopenservice.com/vincent/admin/badges/master/coverage.svg)](http://gitlab.2iopenservice.com/opentalent/admin/-/commits/master)

Frontend développé avec Vue.js 2 + NuxtJs 2

A voir:

* [vuejs.org](https://vuejs.org/v2/guide/)
* [nuxtjs.org](https://fr.nuxtjs.org/docs/2.x/get-started/installation)
* [vuex-orm.org](https://vuex-orm.org/)
* [vuetifyjs.com](https://vuetifyjs.com/en/)
* [typescriptlang.org](https://www.typescriptlang.org/)
* [jestjs.io](https://jestjs.io/docs/getting-started)
* [cypress.io](https://docs.cypress.io/guides/getting-started/installing-cypress)
* [pm2.keymetrics.io](https://pm2.keymetrics.io/docs/usage/quick-start//)


## Opérations courantes

## Déploiement

### Premier déploiement en tant que service

> Prérequis 1 : PM2 doit être installé de manière globale sur la machine hôte (https://nuxtjs.org/deployments/pm2/)

On commence par cloner le projet app, puis par se placer dans le répertoire ainsi créé.
On créé un symlink vers le fichier .env.xxx voulu sous le nom de .env (selon l'environnement)

    ln -s .env.xxx .env

Pour déployer le projet en mode SSR, on commence par mettre à jour et compiler :

    yarn install
    yarn build

On lance ensuite le service avec :

    pm2 start

Vérifier le statut avec :
 
    pm2 show app

On pourra ensuite interagir avec le service ainsi :

    pm2 restart app
    pm2 stop app
    pm2 logs app

On enregistre le service pour qu'il soit relancé lors du boot de la machine:
https://pm2.keymetrics.io/docs/usage/startup/

En tant que non-root:

    pm2 startup
    
Puis, comme la commande précédente le suggère, on lance **en tant que root**:

    env PATH=$PATH:/usr/bin /usr/local/share/.config/yarn/global/node_modules/pm2/bin/pm2 startup systemd -u exploitation --hp /home/exploitation

On sauvegarde la nouvelle configuration avec: 

    pm2 save

### Mettre à jour

Se placer dans le répertoire de l'application, puis lancer:

    yarn deploy

Cette commande est un alias qui équivaut à lancer:

    git pull
    yarn install
    yarn build
    pm2 restart

## Autres

### Lancer les tests

Pour lancer les tests unitaires:

    jest

### Générer la doc

Pour regénérer la documentation automatique:

    yarn docs


## Plus d'infos

## Structure du projet

| Répertoire | Rôle |
| --- | --- |
| `assets` | Contient les fichiers style et medias |
| `components` | Les différents composants graphiques qui composent l'application |
| `config` | La configuration de l'application |
| `lang` | Les fichiers de traduction |
| `layouts` | Layouts des pages |
| `middleware` | Code exécuté avant le rendu des pages (ex: pour vérifier l'authentification) |
| `models` | Définition des entités (ou modèles) |
| `node_modules` | Modules node installés via npm |
| `pages` | Définition des pages qui composent l'application |
| `plugins` | ... |
| `services` | Rassemble les classes utilitaires non graphiques |
| `static` | Ressources statiques et publiques |
| `store` | Le store et ses composants servent d'entrepôt de donnés, et s'assurent de la cohérence de celles-ci |
| `tests` | Regroupe les tests (unitaires, end-to-end...) |
| `use` | ... |

