# Note uniksimWeb

##### <span style="text-decoration: underline;">Les versions utilisées sur le site :</span>

- Node.js v.22.5.1
- Angular v.18.2.11 (FrontEnd)
- NestJs v.11.0.11 (BackEnd)

Angular / NodeJs compatibilité : [Lien](https://stackoverflow.com/questions/60248452/is-there-a-compatibility-list-for-angular-angular-cli-and-node-js)

<table border="1" id="bkmrk-changer-de-version-a" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 100%;">Changer de version avec nvm (Node Version Manager) : `nvm use *<em>version</em>`

Voir la liste sur nvm (Node Version Manager) : `nvm list`

Voir les packages outdated : `npm outdated`

Mettre à jour les packages (classique) : `npm update` \*cela update redis!

Mettre à jour les packages (avec npm-check-updates) : `npx npm-check-updates -u` \*cela update redis!

</td></tr></tbody></table>

<table border="1" id="bkmrk-node-version-%3A-node-" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 100%;">Node version : `node -v`

Angular version : `ng version`

NestJs version : `nest --version`

\*npm-check-updates (backendEnd) : `npx npm-check-updates`

<p class="callout info">Note : Le fichier package.json possède toutes les versions</p>

<p class="callout info">Note : Ne pas oublier de faire un `npm install` dans backendEnd et frontEnd</p>

</td></tr></tbody></table>

##### <span style="text-decoration: underline;">Les imports importants NestJs :</span>

<div id="bkmrk-typeormmodule-%3A-comm"><div><div>- TypeOrmModule : Communication et conversion des données avec la mySql (Query)
- <div><div>DatabaseProviders : Connection avec mySql</div></div>
- Guard : Authentification et accès
- MailGun : Système de messagerie
- Generate Password TS : Système de génération de mot de passe (mot de passe oublié)

</div></div></div>Pour plus de détails voir : **app.module.ts** ou **package.json**

##### <span style="text-decoration: underline;">Les roles :</span>

<div id="bkmrk-user%3A-permission-de-"><div><div>- user: 
    - Permission de jouer (Games uniquement)
- user\_uniksim: 
    - Permission d'accès au site
    - Permission de jouer
- admin\_user: 
    - Permission d'accès au site
    - Permission de jouer
    - Permission avec accès limité à la page admin
- admin: 
    - Toute permission

</div></div></div>\*note: Il existe un role superAdmin, mais cela n'est pas vraiment utilisé...

##### <span style="text-decoration: underline;">DigitalOcean (Update branch) :</span>

Si vous avez accès à DigitalOcean, vous pouvez faire des changements sur le site en version live\* (Principalement pour des updates en Git)

*\*Ici "live" peut-être un site de développement avec un domain, pas forcément le vrai site*

*\*\*n'oublie pas de builder vos channgements avant d'update! (frontend surtout)*

<div id="bkmrk-dans-la-section%2C-dro">1. Dans la section, ****Droplets****, puis le dossier du site en question ![](https://wiki.uniksim.com/uploads/images/gallery/2024-08-Aug/scaled-840-0/image-1723218630153.png)
2. Ensuite dans ****Console****![](https://wiki.uniksim.com/uploads/images/gallery/2024-08-Aug/scaled-840-0/image-1723218747353.png)
    
    
    - Vous devriez voir une console en linux pour faire les modifications
3. Naviguer à travers les fichiers pour trouver le dossier recherché ![](https://wiki.uniksim.com/uploads/images/gallery/2024-08-Aug/scaled-840-0/image-1723218954045.png)
    
    
    - Note 1: Les commandes git se font généralement sur le fichier source (Dans ce cas **sim.uniksim.com**)
    - Note 2: Durant un `npm install` sur la console de Droplet, il faudrait ajouter `--legacy-peer-deps` à la fin. (la version de Droplet est plus récente) 
        - Note 2.1: Un `npm audit fix` pourrait être intéressant pour fix les soucis de package conflict. \[Autre Solution Non recommandé\] Pour être aussi `npm audit fix --force`, cependant ceci risque de brisser des packages.
    - Note 3: Il se peut que le dossier source **root** n'est pas le dossier recherché, puisque votre **username** de base de donnée (database) n'est pas le même. ![](https://wiki.uniksim.com/uploads/images/gallery/2024-08-Aug/scaled-840-0/image-1723220094918.png)
        
        
        - Faire la commande suivante si c'est le cas (**forge** fait référence au **username**, changer selon le cas) 
            - <p class="callout info">su - forge</p>
4. Utiliser les commandes nécessaire à vos changements 
    - Remettre à l'état d'origine le dossier 
        - <p class="callout info align-left">git reset .</p>
        - <p class="callout info">git reset --hard</p>
            
            
            - `git reset --hard` risque de nécessiter `origin/master` comme paramètre
    - Récupérer la branch commit  
        
        - <p class="callout info align-left">git pull</p>
    - Aller vers la branche 
        - <p class="callout info align-left">git checkout</p>
    - Voir l'état de la branche actuel 
        - <p class="callout info align-left">git status</p>
    - Similaire à reset, elle permet de retirer les dossiers non nécessaires 
        - <p class="callout info align-left">git clean -fd</p>
5. Faire `cd uniksim-back-end`, puis faire `npm run build` pour appliquer les changements
6. (optionnel) Faire `npm run start` pour lancer le site. \*n'oublie de faire de même pour admin\_server si nécessaire

</div>##### <span style="text-decoration: underline;">Cookieyes :</span>

Url : [https://app.cookieyes.com/](https://app.cookieyes.com/)

Script url : [https://cdn-cookieyes.com/client\_data/b08568c123e8efb0b38c9ce6/script.js](https://cdn-cookieyes.com/client_data/b08568c123e8efb0b38c9ce6/script.js)

##### <span style="text-decoration: underline;">Build :</span>

- Pour les build, utiliser la commande **Build Frontend project**![](https://wiki.uniksim.com/uploads/images/gallery/2024-08-Aug/scaled-840-0/image-1723139133125.png)
    
    
    - Si cela n'est pas possible, utiliser la commande ci-dessous dans un terminal (dans le dossier uniksimFrontEnd)

<p class="callout info">ng build</p>

- Vous devriez avoir créer un build nommer **Front** dans le dossier ****uniksim-back-end****![](https://wiki.uniksim.com/uploads/images/gallery/2024-08-Aug/scaled-840-0/image-1723139458662.png)
- Par la suite **ServeStaticModule** (Permet de rendre le build static et disponible pour le serveur) va pourvoir recréer ce dossier à l'intérieur de **dist**, lorsque le serveur sera en marche.
- Note: le fichier **nest-cli.json** est important pour importer tous les fichiers du dossier **front** généré. Spécifiquement la ligne : `{ "include": "front/**/*"}`  
    ![](https://wiki.uniksim.com/uploads/images/gallery/2024-08-Aug/scaled-840-0/image-1723139953468.png)
- Note: si vous changez unity build (ex: Build.data.unityweb), s'assurer de mettre la même version dans ****constantsVariable****![](https://wiki.uniksim.com/uploads/images/gallery/2025-01-Jan/scaled-840-0/image-1737392002764.png)

##### <span style="text-decoration: underline;">Notes :</span>

- Dans **database.providers.ts**, "synchronize" permet de faire en sorte que les entitées de node.js (typeOrm) sont créer ou modifier sur Sql. Il est donc préférable de le laisser **false**
- Si vous voulez augmenter la taille maximum pour le phpmyadmin suivre ce post: <p class="callout info">[https://stackoverflow.com/questions/3958615/import-file-size-limit-in-phpmyadmin](https://stackoverflow.com/questions/3958615/import-file-size-limit-in-phpmyadmin "https://stackoverflow.com/questions/3958615/import-file-size-limit-in-phpmyadmin")</p>
- La commande pour envoyer le serveur backend en local (il faut bien sûr "cd" dans le bon dossier) :  
    <p class="callout info">npm run start</p>
    
    
    - Version en live/demo :  
        <p class="callout info">npm run start:live</p>
        
        
        - Cette commande nécessite le build `npm run build`

- - Celui du frontend est :  
        <p class="callout info">ng serve</p>

- Pour debug le code du frontend (Angular), il faudra utiliser l'inspecteur du navigateur (Dans source)
- Accès au SQL : [https://db.uniksim.com/phpmyadmin/sql.php?server=1&amp;db=uniksim&amp;table=constants&amp;pos=0](https://db.uniksim.com/phpmyadmin/sql.php?server=1&db=uniksim&table=constants&pos=0 "https://db.uniksim.com/phpmyadmin/sql.php?server=1&db=uniksim&table=constants&pos=0")
- La commande pour lancer admin\_server (après su- forge) :  
    <p class="callout info">node sim.dev.uniksim.com/uniksim-back-end/src/node.js/server/admin\_server.js</p>
    
    
    - Il est possible d'ajouter un paramètre : `node admin_server.js dev`

##### <span style="text-decoration: underline;">Problèmes :</span>

- Si les modifications appliqués sur le dossier **server** ne sont pas appliqués, vous avez probablement compilé le script sur "dist/../"
- Si vous avez un problème de **ENOENT: no such file or directory, scandir** sur le serveur dev (sim.dev.uniksim), il y a probablement un problème de version dans les packages. Une solution serait de refaire les fichiers non tracés par git (supprimer et installer)
- Si vous avez cette erreur sur la console DigitalOcean ![](https://wiki.uniksim.com/uploads/images/gallery/2025-03-Mar/scaled-840-0/image-1741108107949.png)
    
    
    - Faite `sudo lsof -i :3000` pour trouver le node en cours
    - `~hFHs>!SLx3)d4Yc_HbQ` si nécessaire
    - Puis `kill -9 <PID>` pour le terminer
    - Refaire votre commande

##### <span style="text-decoration: underline;">Les références de création :</span>

- Site de NestJs : [https://docs.nestjs.com/first-steps](https://docs.nestjs.com/first-steps)
- Site de compatibilité de version Angular/Node : [https://v17.angular.io/guide/versions](https://v17.angular.io/guide/versions)
- Léger tread de discussion sur les version NestJs/Node : [https://stackoverflow.com/questions/77160198/how-to-find-supported-node-js-version-for-nest-js](https://stackoverflow.com/questions/77160198/how-to-find-supported-node-js-version-for-nest-js)
- Configuration de NestJs/MySQL (phpMyAdmin) : [https://blog.stackademic.com/connecting-nestjs-to-mysql-a-step-by-step-guide-ab4086baf918](https://blog.stackademic.com/connecting-nestjs-to-mysql-a-step-by-step-guide-ab4086baf918)
    - Other alternative : [https://medium.com/@yatin.kumar07/integrate-nestjs-with-typeorm-and-mysql-68ad4c10f6ff](https://medium.com/@yatin.kumar07/integrate-nestjs-with-typeorm-and-mysql-68ad4c10f6ff)
- Configuration de NestJs : [https://medium.com/@anteprocess/%EF%B8%8Fnestjs-for-beginners-part-1-overview-and-project-setup-launch-33dc7d8071e9](https://medium.com/@anteprocess/%EF%B8%8Fnestjs-for-beginners-part-1-overview-and-project-setup-launch-33dc7d8071e9)
- Imports of node.js (Javascript files) : [https://medium.com/@eladk/moving-from-javascript-to-typescript-lifehacks-e29d7e1aa3e0](https://medium.com/@eladk/moving-from-javascript-to-typescript-lifehacks-e29d7e1aa3e0)
- Decoration pour les expressions Sql : [https://typeorm.io/decorator-reference#column-decorators](https://typeorm.io/decorator-reference#column-decorators)
- Typeorm wiki (NestJs/Sql data communication) : [https://orkhan.gitbook.io/typeorm/docs/find-options](https://orkhan.gitbook.io/typeorm/docs/find-options)
- Debugger for NestJs : [https://dev.to/gentax/nestjs-right-settings-for-debugging-kl0](https://dev.to/gentax/nestjs-right-settings-for-debugging-kl0)
- bCrypt détailes post : [https://stackoverflow.com/questions/15733196/where-2x-prefix-are-used-in-bcrypt/36225192#36225192](https://stackoverflow.com/questions/15733196/where-2x-prefix-are-used-in-bcrypt/36225192#36225192)
- TypeOrm relations (Many-to-one / one-to-many): [https://github.com/typeorm/typeorm/blob/master/docs/many-to-one-one-to-many-relations.md](https://github.com/typeorm/typeorm/blob/master/docs/many-to-one-one-to-many-relations.md)
- Simple Unity/Angular intégration : [https://medium.com/@6386391ritesh/unity-webgl-in-angular-686397677500](https://medium.com/@6386391ritesh/unity-webgl-in-angular-686397677500)
- Build le projet Angular à l'intérieur de Nestjs : [https://medium.com/codeshake/deploy-an-angular-nestjs-app-to-heroku-807a2833d88c](https://medium.com/codeshake/deploy-an-angular-nestjs-app-to-heroku-807a2833d88c)
- SSE notification : [https://medium.com/@andrewkoliaka/implementing-server-sent-events-in-angular-a5e40617cb78](https://medium.com/@andrewkoliaka/implementing-server-sent-events-in-angular-a5e40617cb78)
- Erreur commun pour nvm lorsqu'il refuse de changer de version :[ https://stackoverflow.com/questions/47017812/nvm-use-does-not-switch-node-versions](https://stackoverflow.com/questions/47017812/nvm-use-does-not-switch-node-versions)