Le Projet SCPiNet est un projet "d'intranet" complètement intégré dans le contexte RolePlay. Il a été prévu pour gérer et servir de biais d'information et de communication dans le Roleplay Arktis. Il est également intégré dans le jeu afin de rendre certainnes informations visible direction dans Arktis.
Historique de versions
SCPiNet V1. Initié par BlackNiteHD. Cette version n'est jamais sortie en production.
SCPiNet V1.1. Développée par BlackNiteHD. Cette version a servi en production mais a été changée pour le SCPiNet V2.
SCPiNet V2. Développée par Gabidut76. Cette version est stoppée en production le 21 Décembre 2024. Pour revoir intégralement le fonctionnement interne de celle-ci
SCPiNetRefracted. Développée par Gabidut76. Cette version est la version qui est utilisée actuellement.
Philosophie
Le SCPiNet avait pour vocation initiale de foncionner en monoscript (1 seul fichier responsable du système). Ce système étant relativement illisible a été modifié lors du passage au SCPiNetV2. Il est en suite passé sur un modèle MVC. Cependant un problème subsistait, l'apparition de dépendences circulaire était régulière.
Il a donc été décidé de revoir intégralement le BackEnd pour passer sur un version 100% Orientée objet où chaque élément serait hérité d'un autre depuis un module primaire.
Actuellement, le SCPiNet fonctionne toujours sur le modèle MVC mais est à 90% converti en POO.
Partie technique
Sécurité de démarrage
Pour assurer un uptime constant, le système fonctionne via le module PM2 qui a pour charge de redémarrer le programme en cas d'interruption. Des sécurités interne ont également été mises en place tel que l'interception des unhandledRejection qui à la place de couper totalement le programme vont afficher l'erreur dans le logger. Une sécurité de démarrage est également lancée à chaque démarrage afin de vérifier l'intégrité du programme (dépendances NodeJS, mises à jour via GitHub automatisée, ...)
Modèle : MySQL & Sequelize
La partie modèle du MVC est assurée par Sequelize, un module NodeJS. Un total de 24 modules sont chargés. Tous représentant une table MySQL.
Chacune de ses table a donc été réimplémentée dans Sequelize. Par exemple :
Il est donc possible ensuite possible d'intéragir avec l'objet en question ainsi :
await Mail.findAll();
Vue : ExpressLayouts & EJS
La partie rendu web est intégrée au projet (c'est l'une prévision future, passer sous React ou VueJS). Il a été prit la décision d'utiliser la librairie ExpressLayout pour se baser sur un layout principal (avec la barre de navigation, les boutons d'accès au profil ainsi que les feuilles de style.) Les informations dynamiques sont rendues via EJS, qui a une grande ressemblance à PHP pour l'intégration à l'HTML. Les informations et données plus complexes sont elles rendues par du JavaScript (couplé à JQuery) et interfacée via une API.
Le SCPiNet est également basé sur une version modifiée de Bootstrap pour un style plus "simple" à gérer.
(on peut voir ici l'utilisation des cartes de bootstrap, ainsi que les badges…)