Commit 7e5d17da authored by Kourser's avatar Kourser
Browse files

docs(site): migrate GitLab Pages to Docusaurus with 24-locale i18n

Replace the French-only MkDocs site with a Docusaurus 3 docs-only site
covering all 24 app locales. FR + EN are complete (7 pages); the other 22
locales cover the 5 user-facing pages (home, guide, sync, FAQ, privacy),
with Architecture/Développement falling back to French.

Localized App Store screenshots are wired per locale (bg/sl fall back to
en-US) via a prebuild that syncs fastlane/screenshots into per-locale _shots
and mirrors the French contributor docs so cross-page links resolve.
appcast.json is mirrored from docs/appcast.json so the app's update check
keeps working at /skingomz-app/appcast.json. CI switches to a pinned Node
image (docker executor).

Translations for the 22 non-FR/EN locales are machine-translated first
drafts pending native review.

Co-Authored-By: Claude (RCA)
parent 204f6110
Loading
Loading
Loading
Loading
+34 −10
Original line number Diff line number Diff line
# Runner: shell executor (amd64/linux), system python3 without the
# `python3-venv` package (no ensurepip). We create a venv WITHOUT pip (which
# skips ensurepip), then bootstrap pip into it via get-pip.py. This needs only
# `python3` and network access to PyPI + bootstrap.pypa.io — no apt/sudo.
# GitLab Pages — Docusaurus multilingual site (see website/).
# Docker executor with a PINNED Node image (org policy: no floating versions —
# do not use node:latest). The site lives in website/; the build output
# (website/build) is moved to public/ at the repo root for Pages.

image: node:20.20.2

stages:
  - test
  - deploy

# Cache node_modules across pipelines, keyed by the lockfile.
default:
  cache:
    key:
      files:
        - website/package-lock.json
    paths:
      - website/node_modules/

# Build check on branches / merge requests (does not publish).
build:
  stage: test
  script:
    - cd website
    - npm ci
    - npx docusaurus clear    # drop stale .docusaurus / node_modules/.cache (cached across pipelines)
    - npm run build
  rules:
    - if: '$CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH'
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'

# Publish from the default branch, matching the previous MkDocs deploy.
pages:
  stage: deploy
  script:
    - python3 -m venv --without-pip .venv
    - . .venv/bin/activate
    - python -c "import urllib.request; urllib.request.urlretrieve('https://bootstrap.pypa.io/get-pip.py', 'get-pip.py')"
    - python get-pip.py
    - pip install mkdocs==1.6.1 mkdocs-material==9.6.9
    - mkdocs build --site-dir public
    - cd website
    - npm ci
    - npx docusaurus clear     # drop stale .docusaurus / node_modules/.cache (cached across pipelines)
    - npm run build            # runs `prebuild` → sync localized screenshots + mirror fallback docs
    - mv build ../public
  artifacts:
    paths:
      - public
+7 −5
Original line number Diff line number Diff line
@@ -100,14 +100,16 @@ par-dessus :
| `DiscoveryKit` | Recherche iTunes + fyyd + Radio Browser, import OPML |
| `SyncKit` | Sync Nextcloud / gpodder.net |

Détails : [docs/Architecture.md](docs/Architecture.md).
Détails : [Architecture](https://kourser.pages.git.cythin.eu/skingomz-app/architecture).

## Documentation

- 📖 [Guide utilisateur](docs/Guide-utilisateur.md)
- 🔄 [Configurer la synchronisation](docs/Synchronisation.md)
- 🏗️ [Architecture](docs/Architecture.md) · [Développement](docs/Developpement.md)
- ❓ [FAQ](docs/FAQ.md)
Le site de documentation est disponible en **24 langues** : <https://kourser.pages.git.cythin.eu/skingomz-app/>

- 📖 [Guide utilisateur](https://kourser.pages.git.cythin.eu/skingomz-app/guide)
- 🔄 [Configurer la synchronisation](https://kourser.pages.git.cythin.eu/skingomz-app/synchronisation)
- 🏗️ [Architecture](https://kourser.pages.git.cythin.eu/skingomz-app/architecture) · [Développement](https://kourser.pages.git.cythin.eu/skingomz-app/developpement)
- ❓ [FAQ](https://kourser.pages.git.cythin.eu/skingomz-app/faq)
- 🗺️ [Feuille de route](ROADMAP.md)

## Contribuer

docs/styles.css

deleted100644 → 0
+0 −18
Original line number Diff line number Diff line
/* Polished, centered phone screenshots in the docs. */
.md-typeset img.screenshot {
  display: block;
  margin: 1.4rem auto;
  max-width: 260px;
  width: 78%;
  border-radius: 20px;
  box-shadow: 0 8px 26px rgba(0, 0, 0, 0.18);
}

.md-typeset img.screenshot-wide {
  display: block;
  margin: 1.4rem auto;
  max-width: 560px;
  width: 100%;
  border-radius: 16px;
  box-shadow: 0 8px 26px rgba(0, 0, 0, 0.18);
}

mkdocs.yml

deleted100644 → 0
+0 −40
Original line number Diff line number Diff line
site_name: Skingomz
site_description: Lecteur de podcasts natif pour iPhone, iPad et Mac.
docs_dir: docs
use_directory_urls: true

theme:
  name: material
  language: fr
  palette:
    - scheme: default
      primary: indigo
      accent: indigo
  features:
    - navigation.top
    - content.code.copy

extra_css:
  - styles.css

nav:
  - Accueil: index.md
  - Guide utilisateur: Guide-utilisateur.md
  - Synchronisation: Synchronisation.md
  - Architecture: Architecture.md
  - Développement: Developpement.md
  - FAQ: FAQ.md
  - Confidentialité: Confidentialite.md

# Internal/submission docs and image folders are not part of the public site.
exclude_docs: |
  app-store/
  screenshots/

markdown_extensions:
  - admonition
  - attr_list
  - md_in_html
  - toc:
      permalink: true
  - pymdownx.superfences

website/.gitignore

0 → 100644
+28 −0
Original line number Diff line number Diff line
# Dependencies
/node_modules

# Production build
/build

# Generated
/.docusaurus
/.cache-loader

# Generated by scripts/sync-i18n-assets.mjs (prebuild):
# Localized screenshots (relative _shots folders next to the docs).
/docs/_shots
/i18n/*/docusaurus-plugin-content-docs/current/_shots
# French contributor-doc fallbacks mirrored into locales — except the real
# English translations, which ARE committed.
/i18n/*/docusaurus-plugin-content-docs/current/architecture.md
/i18n/*/docusaurus-plugin-content-docs/current/developpement.md
!/i18n/en/docusaurus-plugin-content-docs/current/architecture.md
!/i18n/en/docusaurus-plugin-content-docs/current/developpement.md

# appcast.json is mirrored from ../docs/appcast.json by the prebuild (source of
# truth stays docs/appcast.json, updated by the release process).
/static/appcast.json

# Misc
.DS_Store
npm-debug.log*
Loading