diff --git a/docs/changelog.md b/docs/changelog.md index 636500e66..c6c36644a 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,5 +1,20 @@ # Changelog +3.5.3 (2021-12-17) +------------------ + +**🐛 Fixes** + +* Fix Node.js to version 14, instead of LTR, to fix cache errors (#460) + +**🚀 New features** + +* Add setting ``enableServerCache`` to be able to disable server cache (#460) + +**✨ Improvements** + +* Mention ``COMPOSE_PROJECT_NAME`` in installation documentation with several Geotrek-rando on the same server (by @mviadere-openig) + 3.5.2 (2021-11-26) ------------------ diff --git a/docs/installation.md b/docs/installation.md index 30ed867dd..674a26104 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -37,11 +37,13 @@ You can now serve what comes out of the default 8080 port. To configure NGINX, s If you want to have logs directly in terminal you can just run `docker-compose up`. `ctrl`+`c` will exit the command and stop the container. That's why `docker-compose up -d` is used in production to run the service in the background. +You can also access Node.js server logs with `docker-compose logs -t`. + After updating customization, you just have to run `docker-compose restart` to apply changes. You can also create the optional `.env` file based on the example (`cp .env.example .env`), if you want to change the Docker image URL (or run a specific version different from the latest one), the running port, or the `customization` and `medias` folders path. Run `docker-compose down && docker-compose up -d` to apply changes to `.env` file. -If you want to run several Geotrek-rando on the same server, just download one Geotrek-rando-v3-installer for each portal with their own customization and set a different port for each. +If you want to run several Geotrek-rando on the same server, just download one Geotrek-rando-v3-installer for each portal with their own customization and set a different port for each. You should name each Geotrek-rando project with a different container name with adding `COMPOSE_PROJECT_NAME=name_of_geotrek_rando_project` variable in `.env` file. Otherwise the command `docker-compose down && docker-compose up -d` will overwrite the previous container. ## An example with NGINX @@ -98,7 +100,7 @@ docker-compose pull && docker-compose down && docker-compose up -d It will download and install the latest version of Geotrek-rando. If you want to install a specific version of Geotrek-rando, you can specify it in your `.env` file, instead of `latest`. -### Manage Docker images storage on disk: +### Manage Docker images storage on disk The old images will stay on your system and use disk storage. diff --git a/docs/knowledge/caching.md b/docs/knowledge/caching.md index e6d1d1c42..3a720a4bd 100644 --- a/docs/knowledge/caching.md +++ b/docs/knowledge/caching.md @@ -41,10 +41,12 @@ They will appear as "stale" after a year. ## Nodejs Application cache -The second one consist in storing the configuration data (activities list, theme list etc..) we get from geotrek admin into ephemeral variable to avoid a lot of API calls to get the same data. +The second one consist in storing the configuration data (activities list, theme list etc..) we get from Geotrek-admin into ephemeral variable to avoid a lot of API calls to get the same data. This configuration will appear as "stale" after one day. If you need to make it available immediately, you can restart your container which will clear the memory and force the refreshment of this configuration data. +This cache can be disabled with ``enableServerCache`` setting in ``global.json`` (default to ``True``). + ![Server Memory Caching Strategy](../assets/ServerMemoryCachingStrategy.png) diff --git a/docs/presentation-fr.md b/docs/presentation-fr.md index ff77d37ca..195a8b965 100644 --- a/docs/presentation-fr.md +++ b/docs/presentation-fr.md @@ -15,7 +15,7 @@ La page d'accueil est composée : - un selecteur de langue pour basculer entre celles disponibles - un lien permanent vers la page de recherche - d'une grande image paramétrable, avec un texte d'introduction paramétrable et masquable -- de la liste des pratiques de randonnées puis des catégories de contenus touristiques sous forme de pictogramme cliquables dans l'ordre défini dans Geotrek-admin +- de la liste des pratiques de randonnées, des pratiques Outdoor, des catégories de contenus touristiques et des catégories d'événements (selon les contenus publiés) sous forme de pictogramme cliquables dans l'ordre défini dans Geotrek-admin ![Homepage](https://geotrek.ecrins-parcnational.fr/images/gtr3-01-homepage.jpg) @@ -34,17 +34,18 @@ La page d'accueil est composée : ## Page recherche -La page de recherche permet de rechercher des objets parmis les randonnées et les services (contenus touristiques). +La page de recherche permet de rechercher des objets parmis les randonnées, les sites Outdoor, les services (contenus touristiques) et les événements touristiques. ![Search](https://geotrek.ecrins-parcnational.fr/images/gtr3-04-search.jpg) **Filtres :** -- Il est possible de sélectionner une ou plusieurs activités de randonnée et une ou plusieurs catégories de service. -- Si je ne sélectionne aucune activité de randonnée et aucune catégorie de service, alors j'affiche tous les objets -- La première ligne de filtre est fixe et comprend les filtres communs à tous les objets (thèmes, communes, secteurs et structures) -- Si je sélectionne uniquement des activités de randonnée, alors les filtres spécifiques aux randonnées sont aussi affichés (difficulté, durée, longueur, dénivelé, type de parcours et accessibilité) -- Si je sélectionne uniquement une seule catégories de service, alors les filtres spécifiques à cette catégorie sont affichés (type 1 et éventuel type 2) +- Il est possible de sélectionner une ou plusieurs pratiques de randonnée, une ou plusieurs pratiques Outdoor, une ou plusieurs catégories de service et une ou plusieurs catégories d'événements touristiques. +- Si je ne sélectionne aucune pratique de randonnée, aucune pratique Outdoor, aucune catégorie de service et aucune catégorie d'événement, alors cela affiche tous les objets +- Il est aussi possible d'utiliser les filtres communs à tous les objets (thèmes, communes, secteurs et structures) +- Si je sélectionne des pratiques de randonnée, alors les filtres spécifiques aux randonnées sont affichés (difficulté, durée, longueur, dénivelé, type de parcours et accessibilité) +- Si je sélectionne une catégories de service, alors les filtres spécifiques à cette catégorie sont affichés (type 1 et éventuel type 2) +- La zone de la carte affichée est aussi utilisée pour filtrer les résultats (fonctionnalités désactivable) - Il est possible de customiser, masquer ou réordonner les filtres **Résultats :** @@ -57,12 +58,6 @@ La page de recherche permet de rechercher des objets parmis les randonnées et l - Au survol d'un résultat dans la liste, sa localisation est mise en avant sur la carte - Les résultats dans la liste et sur la carte permettent d'accéder à la fiche détail de chaque objet -**A venir :** - -- Ajout des évènements touristiques -- Ajout des sites outdoor -- Amélioration de l'ergonomie des filtres - ## Page détail Chaque objet dispose d'une page de détail avec ses informations détaillées et sa carte. @@ -104,18 +99,22 @@ La page détail d'une randonnée se termine par la liste des services (contenus ![Detail](https://geotrek.ecrins-parcnational.fr/images/gtr3-11-detail.jpg) +### Sites outdoor + +- On entre par le site principal de premier niveau +- Si le site dispose d'un ou plusieurs sous-sites, alors ils sont listés dans la page +- Les parcours du site ou de ses sous-sites sont aussi listés dans la page +- Les randonnées à proximité du site sont aussi listés, pour identifier les accès au site + ### Contenus touristiques Les pages de détail des contenus touristiques sont construits de la même manière, mais avec un contenu plus simple. ![Detail](https://geotrek.ecrins-parcnational.fr/images/gtr3-12-detail.jpg) -### A venir +### Evénements touristiques -- Ajout d'informations sur la carte (services, lieux de renseignement, signalétique et aménagements) -- Ajout des pages détail des évènements touristiques -- Ajout des pages détail des sites outdoor -- Amélioration des informations affichées sur les cartes en version mobile +Assez similaires aux contenus touristiques, mais avec plus de champs et des dates. ## Pages statiques @@ -139,8 +138,9 @@ Le portail web étant une PWA, quand il est consulté avec un smartphone, un mes Un raccourci sera alors créé sur le bureau du smartphone, et il sera alors possible de consulter le contenu comme dans une application mobile. Des premières fonctionnalités ont été développées pour embarquer une partie du contenu en offline, et ainsi pouvoir le consulter ultérieurement sans connexion internet. -Les dernières randonnées consultées et leurs fonds de carte peuvent ainsi être consultées offline. -Voir la [documentation sur la gestion du cache](./knowledge/caching.md) pour en savoir plus. +Il est ainsi possible d'embarquer le détail des contenus souhaités depuis leur fiche détail, pour y accéder sans connexion (textes, photos, cartes). + +Il est aussi possible d'afficher sa localisation GPS sur la carte. ## Données @@ -176,3 +176,5 @@ Un travail a été réalisé pour optimiser le référencement des contenus du p Un rendu côté serveur (Server Side Rendering / SSR) des pages est réalisé pour optimiser et prégénérer les pages renvoyées aux moteurs de recherche (avec NextJS). Une liste de toutes les pages du portail est générée automatiquement pour faciliter leur indexation dans les moteurs de recherche. Elle est disponible à l'adresse "URL-DU-PORTAIL/sitemap.xml". + +Il est aussi possible de définir des règles de redirection, notamment pour optimiser le passage de Geotrek-rando v3 à Geotrek-rando v3. diff --git a/frontend/Dockerfile b/frontend/Dockerfile index d0d6dd631..ea3f088e3 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -1,5 +1,5 @@ # Install dependencies only when needed -FROM node:lts-alpine AS deps +FROM node:14-alpine AS deps # Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed. RUN apk add --no-cache libc6-compat g++ gcc libgcc libstdc++ linux-headers make python3 WORKDIR /app @@ -7,14 +7,14 @@ COPY package.json yarn.lock ./ RUN yarn install --frozen-lockfile # Rebuild the source code only when needed -FROM node:lts-alpine AS builder +FROM node:14-alpine AS builder WORKDIR /app COPY . . COPY --from=deps /app/node_modules ./node_modules RUN yarn build && yarn install --production --ignore-scripts --prefer-offline # Production image, copy all the files and run next -FROM node:lts-alpine AS runner +FROM node:14-alpine AS runner WORKDIR /app ENV NODE_ENV production diff --git a/frontend/config/global.json b/frontend/config/global.json index 222b26cf4..f8808e6a5 100644 --- a/frontend/config/global.json +++ b/frontend/config/global.json @@ -16,5 +16,6 @@ "applicationName": "Geotrek-rando", "enableIndexation": true, "enableReport": true, - "enableSearchByMap": true + "enableSearchByMap": true, + "enableServerCache": true } diff --git a/frontend/customization/config/global.json b/frontend/customization/config/global.json index 67abeb1b6..ca7296fd0 100644 --- a/frontend/customization/config/global.json +++ b/frontend/customization/config/global.json @@ -15,5 +15,6 @@ "touristicContentLabelImageUri": "https://upload.wikimedia.org/wikipedia/fr/d/df/Logo_ecrins.png", "applicationName": "Custom Geotrek", "enableReport": true, - "enableSearchByMap": true + "enableSearchByMap": true, + "enableServerCache": true } diff --git a/frontend/package.json b/frontend/package.json index 7a2083085..e31997d46 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "geotrek-rando-frontend", - "version": "3.5.2", + "version": "3.5.3", "private": true, "scripts": { "debug": "NODE_OPTIONS='--inspect' next ./src", diff --git a/frontend/src/modules/interface.ts b/frontend/src/modules/interface.ts index 6db3c2990..2d8d2db60 100644 --- a/frontend/src/modules/interface.ts +++ b/frontend/src/modules/interface.ts @@ -63,6 +63,7 @@ export interface APICallsConfig { enableIndexation: boolean; enableReport: boolean; enableSearchByMap: boolean; + enableServerCache: boolean; } /** @deprecated please use Coordinate2D or Coordinate3D instead */ diff --git a/frontend/src/services/api/client.ts b/frontend/src/services/api/client.ts index dbb50f8aa..34aaae95f 100644 --- a/frontend/src/services/api/client.ts +++ b/frontend/src/services/api/client.ts @@ -93,4 +93,7 @@ const cacheMiddleware = (throttle = 0): ConfiguredMiddleware => { }; }; -export const GeotrekAPI = wretch(getGlobalConfig().apiUrl).middlewares([cacheMiddleware(1000)]); +const wretcher = wretch(getGlobalConfig().apiUrl); +export const GeotrekAPI = getGlobalConfig().enableServerCache + ? wretcher.middlewares([cacheMiddleware(1000)]) + : wretcher;