Skip to content

Commit

Permalink
Merge pull request #14 from CAMAP-APP/staging
Browse files Browse the repository at this point in the history
v1.0.6
  • Loading branch information
Mandrak-Kimigo authored Apr 27, 2024
2 parents 6381db8 + 95dddb7 commit b5be969
Show file tree
Hide file tree
Showing 50 changed files with 40,446 additions and 64,191 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ L'application se compose de 3 modules :

- CAMAP-haxe, codé en [Haxe](https://haxe.org)
- CAMAP-ts, codé en [Typescript](https://www.typescriptlang.org/)
- une base de données MySQL 5.7
- une base de données MySQL 8

## Documentation technique

Expand Down
10 changes: 8 additions & 2 deletions docker-compose/mysql/my.cnf
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,15 @@
max_allowed_packet=100M

#we don't want STRICT_TRANS_TABLES as it causes a lot of problems with record-macros. https://github.com/HaxeFoundation/record-macros/issues/23
sql-mode='ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
#default in 5.7 is sql-mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
sql-mode='ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
#default in 8 is sql-mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

collation-server = utf8mb4_unicode_ci
#init-connect='SET NAMES utf8mb4'
character-set-server = utf8mb4

# in dev mode, you might want to open the database to host by allowing connection from anywhere.
# in production, keep the line commented to prevent database exposure.
# bind-address=0.0.0.0

default-authentication-plugin=mysql_native_password
48 changes: 48 additions & 0 deletions docs/archives/install.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# ATTENTION: Obsolète, doc d'installation à refaire

Privilégier docker-camap comme base d'installation

## Installation avec docker-compose

Ce mode d'installation est recommandé pour une installation locale sur un poste de développement.

Clonez les 2 repository côte à côte

Dans `CAMAP-ts/docker-compose` lancez les containers avec `docker-compose up -d`

### CAMAP-haxe backend

- Installer lix (équivalent de npm+nvm pour Haxe) : `npm i -g lix`
- Aller dans `CAMAP-haxe/backend`
- `lix scope create`
- Installer le compilateur Haxe 4.0.5 : `lix install haxe 4.0.5`
- `lix use haxe 4.0.5`
- Installer les dépendances du backend Haxe : `lix download`
- compiler le backend haxe : `haxe build.hxml -D i18n_generation`
- Aller dans `CAMAP-haxe` et copier `config.dist.xml` pour le renommer `config.xml`
- dans `lang/master`, créer un dossier `tmp` et donner les droits en écriture ( `chmod 777 tmp` )
- Accédez à `localhost` dans votre navigateur, une erreur doit s'afficher : `Error : INSERT INTO Error (date,error,ip,userAgent,url)...`. C'est normal, les tables de la base de données ont été créées.
- Rafraîchissez la page, vous devez avoir une erreur : `Unable to load ressources from CAMAP-ts.`
- Le backend Haxe est bien là, il a juste besoin de CAMAP-ts pour fonctionner.

### CAMAP-haxe frontend

- Aller dans `CAMAP-haxe/frontend`
- `lix scope create`
- `lix use haxe 4.0.5`
- Installer les dépendances du frontend Haxe : `lix download`
- `npm i`
- compiler le frontend haxe : `haxe build.hxml`

### CAMAP-TS

- Aller dans `CAMAP-ts`
- Créer un fichier `.env` à partir de `.env.sample`
- Installer les dépendances : `npm i`
- Tout compiler : `npm run build`
- Relancez éventuellement le container CAMAP-ts en allant dans `/docker-compose` avec la commande `docker-compose restart camap-nest`

### Fin de l'installation

- CAMAP-haxe est disponible sur `localhost` , CAMAP-ts est disponible sur `localhost:3010`
- Aller sur `localhost/install` pour finaliser l'installation
22 changes: 22 additions & 0 deletions docs/future.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,25 @@ Malheureusement, il n'est pas possible de passer à un _characterset_ et une _co
Le monde Javascript / Node Js / Typescript évolue très vite, ce qui nécéssite de mettre à jour les dépendances régulièrement, au moins sur les briques principales ( _Nest JS, TypeORM, React, Appolo ...etc_) sinon l'application risque de devenir obsolète et difficile à maintenir.

Côté BDD, la version 5.7 de MySQL commence à être ancienne, une évolution vers des versions plus récentes serait bénéfique. ( Si les vieux drivers MySQL de Neko continuent de fonctionner )

# Autre chantiers possibles

## Amélioration du système de thème / boostrap

Le système actuel est documenté dans [theme.md](../../camap-hx/www/theme/theme.md).

Ce système pourrait être améliorer :
- utilisation de variables CSS avec des valeurs précalculées
1. Précompiler une version de bootstrap 3.4 avec des variables css à la place des valeurs
2. Déclaration des variables css avec valeurs précalculées (plutôt que les fonction sass) dans un fichier styles.css
3. Ajout de styles spécifiques dans styles.css également

Les avantages de ce système :
- plus besoin de sass (utilisation des valeurs en dur directement dans un fichier styles.css)
- plus besoin de less (utilisation de variables css pour déclarer les valeurs, dans le même styles.css)
- plus besoin de script ou autre pour recompiler bootstrap lors d'évolutions (une fois compilé avec des variables css il ne bougera plus)

Ainsi il ne resterait que les fichiers :
- boostrap.min.css (qu'on compile une fois pour toute)
- styles.css (dans lequel on définit les variables css que bootstrap pourra utilisée, et les styles additionnels)
- Ajout de l'outil outil post-css un passe de l'outil post-css pour générer styles.min.css (minifié et optimisé pour la cible navigateurs souhaitée, mais en soit styles.css pourraient fonctionner aussi sans retouche)
2 changes: 1 addition & 1 deletion docs/i18n.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Un fichier `po` lorsqu'on le sauve, génère un fichier `mo`, optimisé et compr

### Templates

Côté templates, Sugoï utilise les templates de référence dans `/lang/master/tpl` pour traduire les chaines dans chaque langue, par exemple `/lang/fr/tpl` ( cf doc sur les [templates](templo.md) )
Côté templates, Sugoï utilise les templates de référence dans `/lang/master/tpl` pour traduire les chaines dans chaque langue, par exemple `/lang/fr/tpl` ( cf doc sur les [templates](templates.md) )

## Typescript

Expand Down
132 changes: 97 additions & 35 deletions docs/install.md
Original file line number Diff line number Diff line change
@@ -1,48 +1,110 @@
# ATTENTION: Obsolète, doc d'installation à refaire
# Installation pour un environnement de développement

Privilégier docker-camap comme base d'installation
Installer un environnement de développement pour CAMAP n'est pas complètement trivial,
nous détaillerons ici les étapes permettant d'obtenir :
- Un environnement avec coloration syntaxique et auto-complexion pour le projet haxe,
- Un environnement avec coloration syntaxique et auto-complexion pour le projet typescript.

## Installation avec docker-compose
Limites :
- La possibilité de déboguer le projet est très limitée avec haxe sur neko en mod apache,
breakpoints et inspection en pas par pas ne sera pas possible.
- La possibilité de déboguer le projet typescript est possible mais nécessite des étapes d'installations supplémentaires qui ne seront pas détaillées ici. En effet, la présente documentation s'appuira sur docker-compose pour faire tourner l'ensemble de l'environnement. Avoir un environnement avec debogage nécessiterait de faire tourner le projet camap-ts sur la machine locale, et de configurer en local également un reverse proxy.

Ce mode d'installation est recommandé pour une installation locale sur un poste de développement.
L'installation consistera a
1. installer l'environnement projet de base (via [**camap-docker**](https://github.com/CAMAP-APP/camap-docker)),
2. installer les outils et dépendances nécessaire pour le développement.
3. personnaliser le docker-file pour utiliser les fichiers sources locaux de la machine hote dans les conteneurs docker,

Clonez les 2 repository côte à côte
## Architecture des projets et interactions

Dans `CAMAP-ts/docker-compose` lancez les containers avec `docker-compose up -d`
Pour développer une évolution dans l'application CAMAP, il est nécessaire de comprendre comment les projets s'articulent.

### CAMAP-haxe backend
### camap-hx (Le socle applicatif initial):

- Installer lix (équivalent de npm+nvm pour Haxe) : `npm i -g lix`
- Aller dans `CAMAP-haxe/backend`
- `lix scope create`
- Installer le compilateur Haxe 4.0.5 : `lix install haxe 4.0.5`
- `lix use haxe 4.0.5`
- Installer les dépendances du backend Haxe : `lix download`
- compiler le backend haxe : `haxe build.hxml -D i18n_generation`
- Aller dans `CAMAP-haxe` et copier `config.dist.xml` pour le renommer `config.xml`
- dans `lang/master`, créer un dossier `tmp` et donner les droits en écriture ( `chmod 777 tmp` )
- Accédez à `localhost` dans votre navigateur, une erreur doit s'afficher : `Error : INSERT INTO Error (date,error,ip,userAgent,url)...`. C'est normal, les tables de la base de données ont été créées.
- Rafraîchissez la page, vous devez avoir une erreur : `Unable to load ressources from CAMAP-ts.`
- Le backend Haxe est bien là, il a juste besoin de CAMAP-ts pour fonctionner.
#### backend (templates):
- role:
- rendu de templates "templo" via apache2 mod neko.
- service d'API sur `/api/<controller>/<action>` où <controller> est défini dans `camap-hx\src\controller\api\<Controller>.hx` et <action> en tant que `doAction` dans le controlleur.
- sources: camap-hx/common, camap-hx/src, camap-hx/lang/master/tpl, camap-hx/backend
- output: camap-hx/www/index.n (fichier neko)
- compilation: `haxe.exe backend/build.hxml --cwd backend`
- exécution: via le mod apache2 "neko" et le `camap-hx/www/.htaccess` qui pointe vers `camap-hx/www/index.n`
- documentation spécifique: [camap-hx/README.md](../../camap-hx/README.md), [camap-ts/docs/i18n.md](./i18n.md), [camap-ts/docs/templates.md](./templates.md)
- développement:
- installer l'environnement vscode + docker-compose de développement.
- Les modifications des templates (.mtt) sont prises en compte au rechargement de la page.
- Les modifications haxe nécessitent une recompilation (build backend/build.hxml depuis vscode)

### CAMAP-haxe frontend
#### backend (css, html, images, fonts et autres fichiers statics)
- role: fournir les fichiers css pour les thèmes et les styles de pages
- sources: camap-hx/www/*, camap-hx/www/theme/default/css/bootswatch.scss, camap-hx/www/theme/default/css/variables.less
- output: camap-hx/www/, camap-hx/www/theme/default/css/style.min.css
- compilation: `camap-hx/www/theme/default/css_compile.sh`
- exécution:
- Le dossier camap-hx/www est mis à disposition d'apache pour servir les fichiers statics. Voir [apache.conf](../../camap-hx/apache.conf)
- Utilisé par les templates (ie. [`camap-hx/lang/master/tpl/base.mtt`](../../camap-hx/lang/master/tpl/base.mtt))
- documentation spécifique: [camap-hx/www/theme/theme.md](../../camap-hx/www/theme/theme.md)
- développement: recompiler via `camap-hx/www/theme/default/css_compile.sh` en cas de modification de bootswatch.scss ou variables.less

- Aller dans `CAMAP-haxe/frontend`
- `lix scope create`
- `lix use haxe 4.0.5`
- Installer les dépendances du frontend Haxe : `lix download`
- `npm i`
- compiler le frontend haxe : `haxe build.hxml`
#### frontend:
- role: rendu et interactions dynamiques en JavaScript dans les pages web.
- sources: camap-hx/common, camap-hx/js, camap-hx/frontend/libs/libs.js
- output:
- camap-hx/www/js/app.js
- compilation: `haxe.exe frontend/build.hxml --cwd frontend`
- camap-hx/www/js/libs.prod.js
- fonctionnement: voir https://lib.haxe.org/p/modular/0.6.0/
- compilation (depuis camap-hx/frontend) : `npm run libs:prod`
- exécution:
- Le dossier camap-hx/www est mis à disposition d'apache pour servir les fichiers statics. Voir [apache.conf](../../camap-hx/apache.conf)
- Utilisé par les templates (ie. [`camap-hx/lang/master/tpl/base.mtt`](../../camap-hx/lang/master/tpl/base.mtt))

### CAMAP-TS
### camap-ts

- Aller dans `CAMAP-ts`
- Créer un fichier `.env` à partir de `.env.sample`
- Installer les dépendances : `npm i`
- Tout compiler : `npm run build`
- Relancez éventuellement le container CAMAP-ts en allant dans `/docker-compose` avec la commande `docker-compose restart camap-nest`

### Fin de l'installation

- CAMAP-haxe est disponible sur `localhost` , CAMAP-ts est disponible sur `localhost:3010`
- Aller sur `localhost/install` pour finaliser l'installation
## Installer l'environnement projet

Tout d'abord, suivez les étapes d'installation de [**camap-docker**](https://github.com/CAMAP-APP/camap-docker).

Utiliser dans un premier temps le docker-compose.yml de base (pas celui de dev).

Une fois les étapes terminées, assurez vous de jouer une première fois la commande `docker compose up -d --build` et de vérifier que l'environnement fonctionne en mode production.

## Installer les outils et dépendances

- Installer [NodeJS en version 20.X](https://nodejs.org/)
- Installer lix (équivalent de npm+nvm pour Haxe) : `npm i -g lix`
- Installer [VSCode](https://code.visualstudio.com/)
- Installer l'extension "Haxe extension pack" depuis l'onglet extensions de VSCode
- Installer l'extension "Templo" depuis l'onglet extensions de VSCode
- Installer l'extension "lix" depuis l'onglet extensions de VSCode

## Projet haxe

- Ouvrez [backend.code-workspace](../../camap-hx/backend/backend.code-workspace) avec VSCode pour avoir l'environnement backend
- Exécutez les commandes dans le dossier backend:
- `lix scope create`
- `lix install haxe 4.0.5`
- `lix use haxe 4.0.5`
- `lix download`
- Exécutez les actions:
- "Haxe: Restart Language Server" pour vérifier que votre installation a bien détecté l'environnement haxe.
- "Build"
- Ouvrez [frontend.code-workspace](../../camap-hx/frontend/frontend.code-workspace) avec VSCode pour avoir l'environnement frontend
- Exécutez les commandes dans le dossier frontend:
- `lix scope create`
- `lix use haxe 4.0.5`
- `lix download`
- `npm install`
- Exécutez les actions:
- "Haxe: Restart Language Server" pour vérifier que votre installation a bien détecté l'environnement haxe.
- "Build"

## Utiliser le docker-compose.yml pour le dev

Copier/coller `camap-docker\docker-compose.dev.yml` comme `docker-compose.yml` dans votre dossier camap et exécuter ce docker-compose

exécuter ```docker-compose up -d --build```


File renamed without changes.
Empty file removed docs/templo.md
Empty file.
Loading

0 comments on commit b5be969

Please sign in to comment.