diff --git a/README.md b/README.md new file mode 100644 index 0000000..b401642 --- /dev/null +++ b/README.md @@ -0,0 +1,34 @@ +# Portail Associations CCDS + +Depot central du projet `portail-associations`, avec application, documentation, services locaux et references techniques. + +## Ce que ce depot contient + +- `client/` : interface web +- `server/` : API et logique serveur +- `shared/` : contrats et configuration partages +- `docs/` : documentation vivante du portail +- `deployments/` : publication preprod / prod +- `local-services/` : services locaux d'appui, dont Forgejo + +## Fusion douce CCDS + +Les anciens depots CCDS sont progressivement integres ici pour garder : + +- un seul point d'entree principal +- un historique preservé +- une lecture plus simple pour l'equipe + +Ils sont reunis sous `convergence/` : + +- `convergence/ccds-docs/` +- `convergence/ccds-infra/` +- `convergence/ccds-cartographie/` + +Le but est de centraliser sans perdre la memoire des travaux deja menes. + +## References rapides + +- [Guide de fusion douce CCDS](./docs/forgejo/fusion-douce-ccds.md) +- [Theme Forgejo CCDS](./local-services/forgejo/README.md) + diff --git a/docs/forgejo/fusion-douce-ccds.md b/docs/forgejo/fusion-douce-ccds.md new file mode 100644 index 0000000..4b0b168 --- /dev/null +++ b/docs/forgejo/fusion-douce-ccds.md @@ -0,0 +1,39 @@ +# Fusion douce des depots CCDS + +## Intention + +Centraliser les contenus CCDS dans `portail-associations` sans casser l'historique ni brusquer les habitudes. + +## Principe retenu + +La fusion se fait en douceur : + +1. `portail-associations` devient le depot central +2. les anciens depots sont integres avec historique conserve +3. les anciens depots sont archives ensuite dans Forgejo +4. les liens de lecture pointent vers le depot central et son wiki + +## Repos integres + +- `ccds/docs` -> `convergence/ccds-docs/` +- `ccds/infra` -> `convergence/ccds-infra/` +- `ccds/cartographie` -> `convergence/ccds-cartographie/` + +## Pourquoi cette approche + +- eviter l'effet brouillon de plusieurs depots pour un meme projet +- garder une seule porte d'entree cote CCDS +- conserver l'historique Git des anciens depots +- preparer un wiki unifie aux couleurs du portail + +## Ce qui reste separe + +- `NEI-K` reste autonome +- rien dans son wiki ou son theme ne doit pointer vers CCDS + +## Suite normale + +1. verifier la lecture du depot central +2. verifier le wiki CCDS recolore comme le site +3. archiver `ccds/docs`, `ccds/infra` et `ccds/cartographie` +4. garder `.profile` comme accueil d'organisation diff --git a/local-services/forgejo/theme/ccds-wiki.css b/local-services/forgejo/theme/ccds-wiki.css index 1fc97bf..e1cb5a8 100644 --- a/local-services/forgejo/theme/ccds-wiki.css +++ b/local-services/forgejo/theme/ccds-wiki.css @@ -4,18 +4,18 @@ */ :root { - --ccds-ink: #17202f; - --ccds-ink-soft: #405068; - --ccds-line: rgba(23, 32, 47, 0.1); - --ccds-line-strong: rgba(16, 72, 132, 0.18); + --ccds-ink: #172233; + --ccds-ink-soft: #526277; + --ccds-line: rgba(23, 34, 51, 0.1); + --ccds-line-strong: rgba(47, 111, 206, 0.16); --ccds-surface: #ffffff; - --ccds-surface-soft: rgba(255, 255, 255, 0.9); - --ccds-surface-muted: #f5f8fc; - --ccds-primary: #1565c0; - --ccds-primary-strong: #0d4e99; - --ccds-accent: #39b96b; - --ccds-accent-soft: rgba(57, 185, 107, 0.16); - --ccds-shadow: 0 18px 42px rgba(18, 34, 61, 0.08); + --ccds-surface-soft: rgba(255, 255, 255, 0.92); + --ccds-surface-muted: #f6faf8; + --ccds-primary: #44bf69; + --ccds-primary-strong: #2f8f4d; + --ccds-accent: #2f6fce; + --ccds-accent-soft: rgba(47, 111, 206, 0.12); + --ccds-shadow: 0 18px 42px rgba(25, 44, 76, 0.08); --ccds-radius-lg: 22px; --ccds-radius-md: 16px; --ccds-radius-sm: 12px; @@ -23,9 +23,9 @@ body:has(.page-content.repository.wiki) { background: - radial-gradient(circle at top left, rgba(57, 185, 107, 0.12), transparent 20rem), - radial-gradient(circle at top right, rgba(21, 101, 192, 0.12), transparent 24rem), - linear-gradient(180deg, #f8fbff 0%, #eef4fb 100%); + radial-gradient(circle at top left, rgba(68, 191, 105, 0.12), transparent 20rem), + radial-gradient(circle at top right, rgba(47, 111, 206, 0.1), transparent 24rem), + linear-gradient(180deg, #fbfdfb 0%, #eef6f2 100%); } .page-content.repository.wiki { @@ -55,8 +55,8 @@ body:has(.page-content.repository.wiki) { } .page-content.repository.wiki .repo-button-row .ui.basic.button { - border-color: rgba(21, 101, 192, 0.22); - background: #f6fbff; + border-color: rgba(47, 111, 206, 0.2); + background: #f7fbff; } .page-content.repository.wiki .ui.dividing.header { @@ -67,7 +67,7 @@ body:has(.page-content.repository.wiki) { border: 1px solid var(--ccds-line-strong) !important; border-radius: var(--ccds-radius-lg); background: - linear-gradient(135deg, rgba(255, 255, 255, 0.98), rgba(244, 249, 255, 0.97)); + linear-gradient(135deg, rgba(255, 255, 255, 0.99), rgba(245, 250, 247, 0.97)); box-shadow: var(--ccds-shadow); } @@ -76,7 +76,7 @@ body:has(.page-content.repository.wiki) { position: absolute; inset: auto 0 0; height: 5px; - background: linear-gradient(90deg, var(--ccds-accent), var(--ccds-primary)); + background: linear-gradient(90deg, var(--ccds-primary), var(--ccds-accent)); } .page-content.repository.wiki .ui.dividing.header::after { @@ -84,7 +84,7 @@ body:has(.page-content.repository.wiki) { position: absolute; top: 22px; right: 26px; - color: rgba(21, 101, 192, 0.12); + color: rgba(47, 111, 206, 0.12); font-size: clamp(1.4rem, 4vw, 3rem); font-weight: 900; letter-spacing: 0.12em; @@ -111,14 +111,14 @@ body:has(.page-content.repository.wiki) { } .page-content.repository.wiki .ui.primary.button { - border-color: var(--ccds-primary) !important; - background: linear-gradient(135deg, #1e77d4, #0f5cac) !important; + border-color: var(--ccds-accent) !important; + background: linear-gradient(135deg, #3e80dc, #2f6fce) !important; color: #fff !important; - box-shadow: 0 8px 18px rgba(21, 101, 192, 0.22) !important; + box-shadow: 0 8px 18px rgba(47, 111, 206, 0.22) !important; } .page-content.repository.wiki .ui.primary.button:hover { - background: linear-gradient(135deg, #3086e1, #1364b8) !important; + background: linear-gradient(135deg, #4b8ae4, #3979d4) !important; transform: translateY(-1px); } @@ -146,7 +146,7 @@ body:has(.page-content.repository.wiki) { top: 74px; padding: 20px; background: rgba(255, 255, 255, 0.94); - box-shadow: 0 14px 30px rgba(18, 34, 61, 0.08); + box-shadow: 0 14px 30px rgba(25, 44, 76, 0.08); } .page-content.repository.wiki .wiki-content-sidebar .markup { @@ -181,7 +181,7 @@ body:has(.page-content.repository.wiki) { .page-content.repository.wiki .markup h1 { margin-bottom: 1.2rem; padding-bottom: 0.8rem; - border-bottom: 2px solid rgba(21, 101, 192, 0.15); + border-bottom: 2px solid rgba(68, 191, 105, 0.18); font-size: clamp(2rem, 5vw, 3rem); } @@ -199,7 +199,7 @@ body:has(.page-content.repository.wiki) { inset: 0 auto 0 0; width: 5px; border-radius: 999px; - background: linear-gradient(180deg, var(--ccds-accent), var(--ccds-primary)); + background: linear-gradient(180deg, var(--ccds-primary), var(--ccds-accent)); } .page-content.repository.wiki .markup h3 { @@ -221,7 +221,7 @@ body:has(.page-content.repository.wiki) { .page-content.repository.wiki .markup a { color: var(--ccds-primary); font-weight: 650; - text-decoration-color: rgba(21, 101, 192, 0.28); + text-decoration-color: rgba(47, 111, 206, 0.28); text-underline-offset: 3px; } @@ -233,15 +233,15 @@ body:has(.page-content.repository.wiki) { .page-content.repository.wiki .markup blockquote { margin: 1.5rem 0; padding: 18px 20px; - border: 1px solid rgba(21, 101, 192, 0.16); + border: 1px solid rgba(47, 111, 206, 0.14); border-left: 5px solid var(--ccds-primary); border-radius: 5px var(--ccds-radius-sm) var(--ccds-radius-sm) 5px; - background: linear-gradient(115deg, #f7fbff, #fefefe); + background: linear-gradient(115deg, #f7fbf8, #fefefe); color: #445164; } .page-content.repository.wiki .markup hr { - border-color: rgba(21, 101, 192, 0.1); + border-color: rgba(68, 191, 105, 0.12); } .page-content.repository.wiki .markup ul li::marker, @@ -253,34 +253,34 @@ body:has(.page-content.repository.wiki) { display: table; width: 100%; overflow: hidden; - border: 1px solid rgba(21, 101, 192, 0.12) !important; + border: 1px solid rgba(47, 111, 206, 0.12) !important; border-radius: var(--ccds-radius-sm); border-collapse: separate; border-spacing: 0; - box-shadow: 0 10px 22px rgba(18, 34, 61, 0.05); + box-shadow: 0 10px 22px rgba(25, 44, 76, 0.05); } .page-content.repository.wiki .markup table th { - border-color: rgba(21, 101, 192, 0.12) !important; - background: #eef6ff !important; - color: #173860; + border-color: rgba(47, 111, 206, 0.12) !important; + background: #eef7f2 !important; + color: #214d34; font-weight: 760; } .page-content.repository.wiki .markup table td { - border-color: rgba(21, 101, 192, 0.08) !important; + border-color: rgba(47, 111, 206, 0.08) !important; background: rgba(255, 255, 255, 0.78); } .page-content.repository.wiki .markup table tr:hover td { - background: #f7fbff; + background: #f7fbf8; } .page-content.repository.wiki .markup code:not(pre code) { - border: 1px solid rgba(21, 101, 192, 0.12); + border: 1px solid rgba(47, 111, 206, 0.12); border-radius: 7px; - background: #f2f7fc; - color: #134d8f; + background: #f1f7f3; + color: #1f6d44; } .page-content.repository.wiki .markup pre { @@ -296,7 +296,7 @@ body:has(.page-content.repository.wiki) { .page-content.repository.wiki .markup img { border-radius: 14px; - box-shadow: 0 14px 28px rgba(18, 34, 61, 0.08); + box-shadow: 0 14px 28px rgba(25, 44, 76, 0.08); } .page-content.repository.wiki .wiki-pages-list { @@ -316,7 +316,7 @@ body:has(.page-content.repository.wiki) { .page-content.repository.wiki .markup .ui.label { border-radius: 999px; background: var(--ccds-accent-soft); - color: #157449; + color: #245a96; font-weight: 700; } @@ -332,10 +332,10 @@ body:has(.page-content.repository.wiki) { .ccds-panel, .ccds-roadmap-list, .ccds-rgaa-grid { - border: 1px solid rgba(21, 101, 192, 0.12); + border: 1px solid rgba(68, 191, 105, 0.12); border-radius: 20px; - background: linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(247, 251, 255, 0.96)); - box-shadow: 0 14px 30px rgba(18, 34, 61, 0.06); + background: linear-gradient(180deg, rgba(255, 255, 255, 0.985), rgba(247, 252, 249, 0.97)); + box-shadow: 0 14px 30px rgba(25, 44, 76, 0.06); } .ccds-hero { @@ -344,7 +344,7 @@ body:has(.page-content.repository.wiki) { .ccds-hero-kicker { margin-bottom: 10px; - color: var(--ccds-primary); + color: var(--ccds-accent); font-size: 0.82rem; font-weight: 800; letter-spacing: 0.16em; @@ -371,7 +371,7 @@ body:has(.page-content.repository.wiki) { .ccds-card { padding: 22px; - border: 1px solid rgba(21, 101, 192, 0.1); + border: 1px solid rgba(68, 191, 105, 0.1); border-radius: 18px; background: #fff; } @@ -404,19 +404,19 @@ body:has(.page-content.repository.wiki) { min-height: 28px; padding: 0 12px; border-radius: 999px; - background: #eef6ff; - color: var(--ccds-primary-strong); + background: #eef7f2; + color: var(--ccds-accent); font-size: 0.84rem; font-weight: 700; } .ccds-badge.success { background: rgba(57, 185, 107, 0.14); - color: #157449; + color: #1f6d44; } .ccds-badge.warn { - background: rgba(224, 155, 34, 0.16); + background: rgba(224, 155, 34, 0.14); color: #8b5a00; } @@ -453,7 +453,7 @@ body:has(.page-content.repository.wiki) { width: 34px; height: 34px; border-radius: 999px; - background: linear-gradient(135deg, var(--ccds-accent), var(--ccds-primary)); + background: linear-gradient(135deg, var(--ccds-primary), var(--ccds-accent)); color: #fff; font-weight: 800; } @@ -475,7 +475,7 @@ body:has(.page-content.repository.wiki) { .ccds-rgaa-card { padding: 20px; - border: 1px solid rgba(21, 101, 192, 0.1); + border: 1px solid rgba(68, 191, 105, 0.1); border-radius: 18px; background: #fff; } @@ -492,8 +492,8 @@ body:has(.page-content.repository.wiki) { body:has(.page-content.organization) { background: - radial-gradient(circle at top left, rgba(57, 185, 107, 0.09), transparent 20rem), - linear-gradient(180deg, #f8fbff 0%, #eef4fb 100%); + radial-gradient(circle at top left, rgba(68, 191, 105, 0.1), transparent 20rem), + linear-gradient(180deg, #fbfdfb 0%, #eef6f2 100%); } .page-content.organization .ui.container,