« Sigma » : différence entre les versions
(Projet pour remplacer frankiz) |
Aucun résumé des modifications |
||
(6 versions intermédiaires par 3 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
{{menu services}} | |||
Sigma est le réseau social des élèves, développé et maintenu par le BR. Il succède à [[Frankiz]]. | |||
Cet article traite essentiellement du développement de Sigma. Si vous n'êtes qu'un simple utilisateur, visitez plutôt [https://infosigma.binets.fr/ l'info Sigma] pour apprendre à l'utiliser. | |||
Le code source et les fichiers de configuration (compilation, déploiement avec [[Admin:Gitlab|GitLab CI]]...) se trouvent sur le [https://gitlab.binets.fr/br/ groupe BR] du GitLab. | |||
La structure des groupes peut être admirée sur [https://sigma-graph.binets.fr Sigma Graph] | |||
== Structure == | |||
La ''stack'' de Sigma est écrite en [https://en.wikipedia.org/wiki/ECMAScript ECMAScript] (JavaScript moderne). | |||
Une base de données PostgreSQL contient les informations sur les groupes (associations, binets...) et les relations des utilisateurs avec eux. Les informations sur les utilisateurs sont tirées du LDAP directement. | |||
L'accès aux données se fait de manière centralisée en utilisant une API [https://graphql.org GraphQL] située dans le [[#Serveur|backend]]. | |||
=== Serveur === | |||
Le serveur tourne avec [https://nodejs.org/ Node.js], avec le framework [https://expressjs.com/ express]. Les requêtes à la base de données PostgreSQL sont construites au sein du code JavaScript en utilisant [http://knexjs.org Knex.js]. | |||
Il est nécessaire que la machine qui le fait tourner soit connectée sur le plâtal pour accéder au LDAP. | |||
Le dépôt Git est [https://gitlab.binets.fr/br/sigma-backend sur le GitLab]. | |||
Le code source et ses dépendances sont compilées dans un package <code>bundle.js</code> en utilisant [https://webpack.js.org/ Webpack], dont la configuration se situe dans le fichier [https://gitlab.binets.fr/br/sigma-backend/tree/master/webpack.config.js <code>webpack.config.js</code>] | |||
=== Client === | |||
Le client est une application [https://reactjs.org/ ReactJS] utilisant des composants [https://react.semantic-ui.com/introduction SemanticUI] pour React. | |||
La communication avec le [[#Serveur|''backend'']] se fait via l'API GraphQL en utilisant un client GraphQL [https://www.apollographql.com Apollo] pour React. | |||
Comme pour le serveur, le code source et ses dépendances sont compilées avec Webpack [https://webpack.js.org/ Webpack] pour fournir un fichier JavaScript rétro-compatible avec la plupart des navigateurs. La configuration Webpack se situe dans le fichier [https://gitlab.binets.fr/br/sigma-frontend/tree/master/webpack.config.js <code>webpack.config.js</code>]. Le ''plugin'' [https://github.com/webpack-contrib/webpack-serve <code>webpack-serve</code>] permet de faire tourner le client en local sur le port 8888 avec re-compilation automatique lorsqu'une modifcation du code source est effectuée. | |||
Le dépôt Git se trouve également sur le GitLab, [https://gitlab.binets.fr/br/sigma-frontend ici]. | |||
== Déploiement == | |||
Une version dév du serveur est accessible sur le serveur [[Admin:Endalcher|endalcher]] (IP: 129.104.201.11), et est déployée automatiquement via un [[Admin:Gitlab#Runners|runner]] sur le GitLab à partir de la branche <code>stable</code>. | |||
C'est vers cette instance que pointe les versions dév du client par défaut : cela évite aux développeurs du client d'avoir à cloner le dépôt du backend, installer ses dépendances npm et installer PostgreSQL. | |||
[[Catégorie:Dev]] | |||
== Voir aussi == | |||
* [https://infosigma.binets.fr/ l'info Sigma] | |||
* [https://wikix.polytechnique.org/Projet_Sigma l'article du WikiX] |
Version actuelle datée du 1 avril 2024 à 21:17
Sigma est le réseau social des élèves, développé et maintenu par le BR. Il succède à Frankiz.
Cet article traite essentiellement du développement de Sigma. Si vous n'êtes qu'un simple utilisateur, visitez plutôt l'info Sigma pour apprendre à l'utiliser.
Le code source et les fichiers de configuration (compilation, déploiement avec GitLab CI...) se trouvent sur le groupe BR du GitLab.
La structure des groupes peut être admirée sur Sigma Graph
Structure
La stack de Sigma est écrite en ECMAScript (JavaScript moderne).
Une base de données PostgreSQL contient les informations sur les groupes (associations, binets...) et les relations des utilisateurs avec eux. Les informations sur les utilisateurs sont tirées du LDAP directement.
L'accès aux données se fait de manière centralisée en utilisant une API GraphQL située dans le backend.
Serveur
Le serveur tourne avec Node.js, avec le framework express. Les requêtes à la base de données PostgreSQL sont construites au sein du code JavaScript en utilisant Knex.js.
Il est nécessaire que la machine qui le fait tourner soit connectée sur le plâtal pour accéder au LDAP.
Le dépôt Git est sur le GitLab.
Le code source et ses dépendances sont compilées dans un package bundle.js
en utilisant Webpack, dont la configuration se situe dans le fichier webpack.config.js
Client
Le client est une application ReactJS utilisant des composants SemanticUI pour React.
La communication avec le backend se fait via l'API GraphQL en utilisant un client GraphQL Apollo pour React.
Comme pour le serveur, le code source et ses dépendances sont compilées avec Webpack Webpack pour fournir un fichier JavaScript rétro-compatible avec la plupart des navigateurs. La configuration Webpack se situe dans le fichier webpack.config.js
. Le plugin webpack-serve
permet de faire tourner le client en local sur le port 8888 avec re-compilation automatique lorsqu'une modifcation du code source est effectuée.
Le dépôt Git se trouve également sur le GitLab, ici.
Déploiement
Une version dév du serveur est accessible sur le serveur endalcher (IP: 129.104.201.11), et est déployée automatiquement via un runner sur le GitLab à partir de la branche stable
.
C'est vers cette instance que pointe les versions dév du client par défaut : cela évite aux développeurs du client d'avoir à cloner le dépôt du backend, installer ses dépendances npm et installer PostgreSQL.