From 250a1f1617d5e70658d63e58e4fc508b47f2d952 Mon Sep 17 00:00:00 2001 From: Marc Lasserre Date: Sat, 23 May 2026 23:09:26 +0200 Subject: [PATCH] =?UTF-8?q?Release=20v3.0.0:=20Architecture=20d=C3=A9coupl?= =?UTF-8?q?=C3=A9e,=20labopenSuse=20et=20documentation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 49 ++++++++++++++++++++++++++ ARCHITECTURE.md | 54 ++++++++++++++++++++++++++++ CHANGELOG.md | 43 +++++++++++++++++++++++ LICENSE | 68 ++++++++++++++++++++++++++++++++++++ README.md | 18 ++++++++++ app.js | 45 ++++++++++++++++++++++++ index.html | 76 ++++++++++++++++++++-------------------- style.css | 93 +++++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 408 insertions(+), 38 deletions(-) create mode 100644 .gitignore create mode 100644 ARCHITECTURE.md create mode 100644 CHANGELOG.md create mode 100644 LICENSE create mode 100644 README.md create mode 100644 app.js create mode 100644 style.css diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3055b57 --- /dev/null +++ b/.gitignore @@ -0,0 +1,49 @@ +# ==================================================================== +# RYM Horizon - Git Ignore Rules +# ==================================================================== + +# --- Système d'Exploitation (Hôtes & Laboratoires) --- +# Fedora / Linux généraux +.directory +.Trash-* +*~ + +# Fichiers systèmes Windows / macOS au cas où un collaborateur en utilise +Thumbs.db +Desktop.ini +.DS_Store +.AppleDouble +.LSOverride + +# --- Éditeurs de Code & IDE --- +# VS Codium / VS Code +.vscode/ +*.code-workspace +.history/ + +# --- Infrastructure locale (Podman / Docker) --- +.docker/ +.podman/ +*.tar +*.tar.gz +# Ne pas ignorer les fichiers de conf Nginx si nécessaire, +# mais ignorer les logs locaux si générés dans le projet +*.log + +# --- Fichiers d'environnement & Sécurité --- +# Contient les clés d'API, secrets RYM Bank, accès serveurs +.env +.env.local +.env.*.local +*.pem +*.key +*.secret + +# --- Dépendances futures --- +# Pour anticiper l'arrivée de Node.js, npm, ou de préprocesseurs CSS +node_modules/ +.npm/ +dist/ +build/ +.sass-cache/ +.cache/ diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md new file mode 100644 index 0000000..72f27e6 --- /dev/null +++ b/ARCHITECTURE.md @@ -0,0 +1,54 @@ +RYM Horizon — Spécifications Architecturales + +Version : 3.0.0 (Souveraine & Épurée) + +Date : Samedi 23 Mai 2026 + +Statut : Validé en Laboratoire Local +1. Philosophie & Alignement Géopolitique + +RYM Horizon est le cockpit d'organisation temporelle et de gestion des actifs de la performance pour l'athlète d'endurance. Conformément à la charte "Tout sauf US", l'intégralité de l'environnement de développement et de déploiement est étanche aux lois extra-territoriales américaines (Cloud Act, EAR). + + Hébergement cible : Serveurs souverains européens (Debian VPS). + + Laboratoire local : Conteneurisé sous OS Européen (Allemagne/Suède). + + Flux Financiers : Intégration native exclusive des rails européens (Wero / Euro Numérique). + +2. Infrastructure du Laboratoire Local (Podman & openSUSE) + +Pour valider le fonctionnement de l'application sans dépendance externe, le projet est exécuté dans un bac à sable isolé. +Composants techniques : + + Orchestrateur : Podman (Rootless, natif Fedora, sans démon privilégié). + + Système d'Exploitation : openSUSE Leap 15.6 (Distribution allemande/suédoise, ultra-stable). + + Serveur Web : Nginx (Configuration optimisée). + +Architecture Réseau & Ports : + +Pour des raisons de sécurité (mode Rootless de Podman), le conteneur n'a pas les droits pour ouvrir le port standard 80. La configuration a été basculée sur le port 8080. Un tunnel de port lie la machine hôte au conteneur. + + Accès local de développement : http://localhost:8080 + +3. Spécifications Fonctionnelles de l'Interface (v3.0.0) + +L'interface abandonne le look "calendrier de bureau" au profit d'un cockpit de vie multi-échelle, inspiré de la clarté de Runna, de la précision de Garmin et du minimalisme de Stripe/Vercel. +Les 4 Échelles Temporelles : + + Vue Jour : Découpage de la journée en cours (Matin / Après-midi / Soir) pour coller au bi-quotidien des athlètes. + + Vue Semaine : Timeline horizontale fluide avec capacité de réorganisation des séances (Drag & Drop). + + Vue Mois : Aperçu stratégique de la charge globale et des blocs d'assimilation. + + Vue Macro / Olympiades : Planification à long terme des objectifs majeurs (Ex: Ironman, Pics de forme) et des budgets matériels associés. + +Cockpit Physiologique & Matériel (Les Spinners) : + +Indicateurs circulaires fins calculant en temps réel : + + Fraîcheur / VRC : Niveau de tolérance à la charge d'entraînement. + + Santé Matériel : Indice d'usure des actifs critiques (chaînes, chaussures carbone) corrélé directement à la RYM Bank pour le provisionnement budgétaire automatique. diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..c0a27c2 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,43 @@ +# Journal des Modifications — RYM Horizon + +Toutes les modifications notables de ce projet seront documentées dans ce fichier. + +Le format est basé sur [Keep a Changelog](https://keepachangelog.com/fr/1.0.0/) +et ce projet respecte le [Versionnement Sémantique](https://semver.org/lang/fr/). + +--- + +## [3.0.0] - 2026-05-23 + +### Ajouté +- **Architecture W3C :** Découplage complet et strict du code source en trois entités distinctes (`index.html`, `style.css`, `app.js`). +- **Logique JS Moderne :** Remplacement des attributs obsolètes `onclick` par un gestionnaire d'événements JavaScript non-intrusif basé sur les `data-attributes`. +- **Documentation :** Création du fichier `ARCHITECTURE.md` figeant la vision technique et la philosophie souveraine du projet. +- **Sécurité & Git :** Déploiement d'un fichier `.gitignore` standardisé pour protéger les secrets de la RYM Bank (fichiers `.env`, clés privées). +- **Cockpit à 4 Échelles :** Intégration de la vision multi-échelle (Jour J détaillé / Semaine fluide / Aperçu Mensuel / Macro-Olympiades). +- **Indicateurs Fins :** Implémentation des "spinners" circulaires en CSS pur pour le suivi de la fraîcheur physiologique (VRC) et de la santé du matériel. + +### Modifié +- **Infrastructure Lab :** Bascule du serveur de test local vers un conteneur souverain européen **openSUSE Leap 15.6** opéré via **Podman** (Rootless). +- **Réseau :** Configuration et routage du serveur Nginx local sur le port alternatif `8080` pour contourner les restrictions de privilèges. + +### Sécurisé +- Exclusion stricte des fichiers de configuration locaux et des dossiers caches d'éditeurs (`.vscode/`). + +--- + +## [2.4.0] - 2026-05-10 + +### Ajouté +- Première ébauche de la vue calendrier hebdomadaire en tableau standard. +- Intégration des boutons d'exports de rapports pour l'Espace Expert (Cohort-Dashboard). +- Intégration visuelle de l'état de synchronisation avec l'API Strava. +- Structure HTML de base intégrant Bootstrap 5 (version monolithique avec style et script intégrés). + +--- + +## [1.0.0] - 2026-04-01 + +### Ajouté +- Initialisation du projet RYM Horizon. +- Maquette de principe de l'interface et choix de la charte graphique de base. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..3324573 --- /dev/null +++ b/LICENSE @@ -0,0 +1,68 @@ +==================================================================== +RYM HORIZON — CONTRAT DE LICENCE COMMERCIALE ET DE CONFIDENTIALITÉ +==================================================================== + +Version : 1.0.0 +Date de révision : 23 Mai 2026 +Titulaire des droits : RYM Bank / Écosystème RYM +Juridiction exclusive : République Française / Union Européenne + +-------------------------------------------------------------------- +1. PROPRIÉTÉ ET DROITS D'AUTEUR +-------------------------------------------------------------------- +Le présent logiciel, incluant sans limitation le code source (HTML, +CSS, JavaScript), l'architecture technique, les éléments graphiques, +l'arborescence et la documentation associée (ci-après "le Logiciel"), +est la propriété exclusive et entière de son auteur originel et de +la structure RYM Bank. + +Le Logiciel est protégé par les lois françaises et internationales +relatives au droit d'auteur et à la propriété intellectuelle. +Tous droits non expressément concédés par le présent contrat sont +strictement réservés par le titulaire des droits. + +-------------------------------------------------------------------- +2. SOUVERAINETÉ ET ÉTANCHÉITÉ COMPORTEMENTALE +-------------------------------------------------------------------- +Conformément à la charte fondamentale de l'écosystème RYM, ce logiciel +est conçu pour garantir une étanchéité absolue vis-à-vis des lois +extra-territoriales étrangères (notamment le US Cloud Act / USA PATRIOT Act). + +Toute intégration future, modification ou exploitation du code source +doit impérativement respecter cette clause d'étanchéité et de +souveraineté numérique européenne. + +-------------------------------------------------------------------- +3. RESTRICTIONS D'UTILISATION ET DE DISTRIBUTION +-------------------------------------------------------------------- +Sauf autorisation écrite, préalable et expresse du titulaire des +droits, il est strictement interdit de : +- Copier, modifier, adapter, traduire ou créer des œuvres dérivées + du Logiciel à des fins commerciales externes ou personnelles. +- Distribuer, louer, sous-licencier, vendre ou transférer le Logiciel + ou son code source à des tiers. +- Divulguer ou publier le code source sur des forges logicielles + publiques non contrôlées ou non hébergées en Europe de manière souveraine. + +-------------------------------------------------------------------- +4. CLAUSE PARTICULIÈRE : RECRUTEMENT ET COLLABORATION (LEAD TECH) +-------------------------------------------------------------------- +Le présent code source est structuré selon les meilleures pratiques du +W3C à des fins d'audit technique et d'intégration de collaborateurs +clés (notamment un Lead Technical Officer). + +L'accès à ce code par un tiers dans le cadre d'un recrutement, d'un +partenariat ou d'un co-développement implique de plein droit une +obligation stricte de secret professionnel, de réserve et de non-divulgation. + +-------------------------------------------------------------------- +5. EXCLUSION DE GARANTIE +-------------------------------------------------------------------- +Le Logiciel est fourni "en l'état", sans garantie d'aucune sorte, +expresse ou implicite, y compris mais sans s'y limiter, les garanties +de commercialisation ou d'adéquation à un usage particulier. + +-------------------------------------------------------------------- +Fait à usage de droit. Pour toute demande de licence ou contribution : +Contact de l'infrastructure : www.gorym.fr +==================================================================== diff --git a/README.md b/README.md new file mode 100644 index 0000000..3f1f508 --- /dev/null +++ b/README.md @@ -0,0 +1,18 @@ +# RYM Horizon + +> Le Cockpit de Performance Souverain pour l'Athlète d'Endurance. + +## Présentation +RYM Horizon fusionne l'organisation temporelle, le suivi de la fraîcheur physiologique et la gestion budgétaire de la performance (MCO des actifs), de manière totalement étanche aux technologies extra-territoriales américaines. + +## Installation Rapide (Laboratoire Local) +Le projet est configuré pour tourner de manière isolée sur un serveur web openSUSE via Podman. + +1. Lancer le conteneur : + podman run -d -p 8080:8080 --name rym-suse-stable registry.opensuse.org/opensuse/leap:latest tail -f /dev/null + +2. Accéder à l'application : `http://localhost:8080` + +## Documentation +- Spécifications techniques : `ARCHITECTURE.md` +- Historique des versions : `CHANGELOG.md` diff --git a/app.js b/app.js new file mode 100644 index 0000000..1393500 --- /dev/null +++ b/app.js @@ -0,0 +1,45 @@ +/** + * RYM Horizon - Core Navigation Script + * @description Gestionnaire d'onglets découplé conforme aux standards W3C + */ + +document.addEventListener('DOMContentLoaded', () => { + + // Sélecteurs d'éléments de navigation + const navLinks = document.querySelectorAll('.sidebar .nav-link'); + const tabContents = document.querySelectorAll('.tab-content'); + + /** + * Bascule l'affichage vers l'onglet ciblé + * @param {string} targetTabId - L'identifiant de la section à afficher + */ + const switchTab = (targetTabId) => { + // 1. Masquer tous les contenus actifs + tabContents.forEach(content => content.classList.remove('active')); + + // 2. Afficher le contenu demandé + const activeTarget = document.getElementById(targetTabId); + if (activeTarget) { + activeTarget.classList.add('active'); + } + }; + + // Attribution dynamique des écouteurs d'événements + navLinks.forEach(link => { + link.addEventListener('click', (event) => { + event.preventDefault(); + + // Récupération de l'ID cible via le dataset + const targetTab = link.getAttribute('data-tab'); + + if (targetTab) { + // Gestion de l'état graphique de la navigation + navLinks.forEach(item => item.classList.remove('active')); + link.classList.add('active'); + + // Exécution de la bascule logique + switchTab(targetTab); + } + }); + }); +}); diff --git a/index.html b/index.html index b0f3eaa..8c9bdc6 100644 --- a/index.html +++ b/index.html @@ -6,58 +6,64 @@ RYM Horizon | Écosystème Souverain - - +
+
-
+

MCO Dashboard

-
Status Infra

● Online - France (OVH)

-
+
+
Status Infra
+

● Online - France (OVH)

+
+ -
+

RYM Bank

Solde Courant

12 450,80 €

-
+ -
+

RYM Coach | Mon Planning

Saison : Triathlon @@ -84,7 +90,7 @@
Agenda Précision Premium (24h/24)
-
+
06:00
Sommeil / Réveil
07:00
Natation : 2500m Seuil
08:00
Petit-Déjeuner & Hydratation
@@ -92,9 +98,9 @@
23:00
Repos / Nuit
-
+ -
+

Espace Expert | Dashboard Cohorte

@@ -128,7 +134,7 @@
Cou: 39cm
Poitrine: 104cm
Hanches: 92cm
Taille: 80cm
-
Cuisse (D/G): 58/58
Mollet (D/G): 39/39
+
Cuisse (D/G): 58/58
Mollet (D/G): 39/39
Données Chiffrées (Souveraineté RYM) @@ -136,19 +142,13 @@
-
+
- + + diff --git a/style.css b/style.css new file mode 100644 index 0000000..563d02a --- /dev/null +++ b/style.css @@ -0,0 +1,93 @@ +/* Variables de Design System RYM */ +:root { + --rym-main: #004a99; + --rym-dark: #121416; + --rym-accent: #00d1b2; + --rym-premium: #ffd700; + --rym-bg: #f0f2f5; +} + +/* Base App Layout */ +body { + background-color: var(--rym-bg); + font-family: 'Inter', sans-serif; + font-size: 0.9rem; +} + +/* Navigation & Sidebar UI */ +.sidebar { + min-height: 100vh; + background: var(--rym-dark); + color: white; +} + +.sidebar-heading { + font-size: 0.7rem; + font-weight: 700; + text-transform: uppercase; + color: #495057; + margin-top: 1.5rem; + padding-bottom: 5px; + border-bottom: 1px solid #343a40; +} + +.nav-link { + color: #8a8d91; + border-radius: 10px; + padding: 10px 15px; + margin-bottom: 4px; + cursor: pointer; + transition: background 0.2s ease, color 0.2s ease; +} + +.nav-link:hover { + color: white; + background: rgba(255, 255, 255, 0.05); +} + +.nav-link.active { + background: var(--rym-main); + color: white; +} + +/* UI Components */ +.card-rym { + border: none; + border-radius: 18px; + box-shadow: 0 4px 20px rgba(0,0,0,0.05); + background: white; +} + +.premium-zone { + border: 2px solid var(--rym-premium); + position: relative; +} + +/* Agenda Components */ +.agenda-scroll { + max-height: 250px; + overflow-y: auto; +} + +.hour-row { + border-bottom: 1px solid #eee; + min-height: 40px; + display: flex; + align-items: center; +} + +/* Router / Navigation Tabs States */ +.tab-content { + display: none; +} + +.tab-content.active { + display: block; + animation: fadeIn 0.3s forwards; +} + +/* Animations */ +@keyframes fadeIn { + from { opacity: 0; transform: translateY(4px); } + to { opacity: 1; transform: translateY(0); } +}