00
fix(landing): correction stricte des commandes CLI, routes API, ports SSH et suppression des métriques fictives
2 fichiers modifiés · +71 −64
Modifiésrc/app/page.tsx+34−32
| @@ -1,5 +1,5 @@ | ||
| 1 | 1 | import Link from "next/link"; |
| 2 | −import { listPages } from "@/lib/content"; | |
| 2 | +import { listPages, allPages } from "@/lib/content"; | |
| 3 | 3 | import { SECTIONS } from "@/lib/sections"; |
| 4 | 4 | import { HeroSearch } from "@/components/HeroSearch"; |
| 5 | 5 | import { TerminalShowcase } from "@/components/TerminalShowcase"; |
| @@ -37,20 +37,20 @@ const SECTION_BADGES: Record<string, string> = { | ||
| 37 | 37 | |
| 38 | 38 | const SECTION_HIGHLIGHTS: Record<string, string[]> = { |
| 39 | 39 | hebergement: [ |
| 40 | − "Serveurs VPS NVMe & Accès root SSH", | |
| 40 | + "Serveurs VPS Linux avec accès root SSH (port 2222)", | |
| 41 | 41 | "Bases de données PostgreSQL & MariaDB", |
| 42 | 42 | "Déploiements continus Git & Webhooks", |
| 43 | 43 | "Sauvegardes automatiques & Snapshots", |
| 44 | 44 | ], |
| 45 | 45 | api: [ |
| 46 | 46 | "Jetons sécurisés préfixés dim_live_", |
| 47 | − "Gestion programmatique des services", | |
| 48 | − "Pare-feu applicatif WAF & Règles réseau", | |
| 47 | + "Gestion du cycle de vie des services (/api/hosts)", | |
| 48 | + "Pare-feu applicatif & Redirections de ports", | |
| 49 | 49 | "Métriques de charge & Journal d'audit", |
| 50 | 50 | ], |
| 51 | 51 | git: [ |
| 52 | 52 | "Dépôts privés illimités hébergés en France", |
| 53 | − "Pipelines CI/CD & Actions intégrées", | |
| 53 | + "Pipelines CI/CD & Automatisation de builds", | |
| 54 | 54 | "Registre de paquets (npm, Docker, PyPI)", |
| 55 | 55 | "Hébergement statique Dimdam's Pages", |
| 56 | 56 | ], |
| @@ -65,43 +65,43 @@ const SECTION_HIGHLIGHTS: Record<string, string[]> = { | ||
| 65 | 65 | const STACK_CARDS = [ |
| 66 | 66 | { |
| 67 | 67 | title: "Node.js & Next.js", |
| 68 | − badge: "SSR & Fullstack", | |
| 69 | − desc: "Applications SSR, workers PM2 et déploiement continu à chaque git push.", | |
| 68 | + badge: "SSR & Git Deploy", | |
| 69 | + desc: "Déploiement Git continu avec build automatique et gestion de processus.", | |
| 70 | 70 | href: "/hebergement/deploiement-git/", |
| 71 | 71 | icon: IconZap, |
| 72 | 72 | }, |
| 73 | 73 | { |
| 74 | 74 | title: "Python & Bots", |
| 75 | − badge: "Workers & APIs", | |
| 76 | − desc: "Bots Discord, scripts d'automatisation et micro-services FastAPI résilients.", | |
| 75 | + badge: "Discord & Telegram", | |
| 76 | + desc: "Hébergement continu de bots Discord, Telegram et scripts d'arrière-plan.", | |
| 77 | 77 | href: "/hebergement/bots/", |
| 78 | 78 | icon: IconCode, |
| 79 | 79 | }, |
| 80 | 80 | { |
| 81 | 81 | title: "Bases de données SQL", |
| 82 | 82 | badge: "PostgreSQL & MariaDB", |
| 83 | − desc: "Instances managées avec accès direct, rétention et snapshots quotidiens.", | |
| 83 | + desc: "Instances managées avec accès direct, sauvegardes automatiques et snapshots.", | |
| 84 | 84 | href: "/hebergement/bases-de-donnees/", |
| 85 | 85 | icon: IconDatabase, |
| 86 | 86 | }, |
| 87 | 87 | { |
| 88 | 88 | title: "Serveurs VPS Linux", |
| 89 | − badge: "Debian & Ubuntu", | |
| 90 | − desc: "Accès root SSH sur le port 22, stockage NVMe haute performance et pare-feu.", | |
| 89 | + badge: "Accès root SSH", | |
| 90 | + desc: "Accès SSH via passerelle sécurisée (port 2222) ou shell web, IPv6 dédiée et redirections IPv4.", | |
| 91 | 91 | href: "/hebergement/vps/", |
| 92 | 92 | icon: IconCpu, |
| 93 | 93 | }, |
| 94 | 94 | { |
| 95 | 95 | title: "Forge Git & CI/CD", |
| 96 | − badge: "Actions & Pipelines", | |
| 97 | − desc: "Automatisez vos tests, vos builds et vos paquets sur notre forge souveraine.", | |
| 96 | + badge: "Forge Souveraine", | |
| 97 | + desc: "Dépôts Git rapides, pipelines CI/CD automatisés et hébergement statique Pages.", | |
| 98 | 98 | href: "/git/automatisation/", |
| 99 | 99 | icon: IconGitBranch, |
| 100 | 100 | }, |
| 101 | 101 | { |
| 102 | 102 | title: "API REST & CLI", |
| 103 | − badge: "dimdams CLI", | |
| 104 | − desc: "Pilotez l'infrastructure depuis vos scripts avec notre binaire officiel et l'API v1.", | |
| 103 | + badge: "dimdams.mjs", | |
| 104 | + desc: "Automatisez vos déploiements et le cycle de vie de vos services avec l'API REST et le CLI.", | |
| 105 | 105 | href: "/api/", |
| 106 | 106 | icon: IconTerminal, |
| 107 | 107 | }, |
| @@ -110,34 +110,36 @@ const STACK_CARDS = [ | ||
| 110 | 110 | const ARCHITECTURE_PILLARS = [ |
| 111 | 111 | { |
| 112 | 112 | title: "Protection Anti-DDoS & WAF", |
| 113 | − desc: "Filtrage volumétrique automatique, pare-feu applicatif WAF et gestion centralisée des certificats SSL/TLS Let's Encrypt.", | |
| 113 | + desc: "Filtrage volumétrique automatique, pare-feu applicatif WAF et certificats SSL/TLS Let's Encrypt automatiques.", | |
| 114 | 114 | icon: IconShield, |
| 115 | 115 | }, |
| 116 | 116 | { |
| 117 | 117 | title: "Sauvegardes & Snapshots", |
| 118 | − desc: "Sauvegardes automatiques quotidiennes, isolation des volumes et restauration instantanée depuis la console de gestion.", | |
| 118 | + desc: "Sauvegardes automatiques quotidiennes, isolation des données et restauration instantanée depuis la console client.", | |
| 119 | 119 | icon: IconDatabase, |
| 120 | 120 | }, |
| 121 | 121 | { |
| 122 | 122 | title: "Contrôle d'Accès & Clés", |
| 123 | − desc: "Authentification par clés SSH ed25519, tokens d'API avec permissions granulaires révocables et journal d'audit immuable.", | |
| 123 | + desc: "Connexions sécurisées par clés SSH (RSA / Ed25519) et clés d'API dim_live_ avec permissions granulaires révocables.", | |
| 124 | 124 | icon: IconLock, |
| 125 | 125 | }, |
| 126 | 126 | { |
| 127 | − title: "100% Souveraineté France", | |
| 128 | − desc: "Infrastructure et données exclusivement hébergées en France métropolitaine, conformité RGPD stricte et zéro dépendance cloud tiers.", | |
| 127 | + title: "100% Hébergé en France", | |
| 128 | + desc: "Infrastructure et données exclusivement hébergées en France métropolitaine, conformité RGPD stricte et souveraineté des données.", | |
| 129 | 129 | icon: IconGlobe, |
| 130 | 130 | }, |
| 131 | 131 | ]; |
| 132 | 132 | |
| 133 | 133 | export default function Home() { |
| 134 | + const totalArticles = allPages().length; | |
| 135 | + | |
| 134 | 136 | return ( |
| 135 | 137 | <main className="home"> |
| 136 | 138 | {/* Hero Header */} |
| 137 | 139 | <section className="hero"> |
| 138 | 140 | <div className="hero-badge"> |
| 139 | 141 | <span className="live-dot" /> |
| 140 | − <span>Documentation Officielle · Plateforme v2.4 Souveraine</span> | |
| 142 | + <span>Documentation Technique Officielle · Hébergé en France</span> | |
| 141 | 143 | </div> |
| 142 | 144 | <h1>Tout l'écosystème Dimdam's, documenté en détail.</h1> |
| 143 | 145 | <p> |
| @@ -157,13 +159,13 @@ export default function Home() { | ||
| 157 | 159 | {/* Metrics / Ecosystem Stats */} |
| 158 | 160 | <section className="metrics-strip"> |
| 159 | 161 | <div className="metric-item"> |
| 160 | − <span className="metric-val">4</span> | |
| 162 | + <span className="metric-val">{SECTIONS.length}</span> | |
| 161 | 163 | <span className="metric-label">Pôles d'ingénierie documentés</span> |
| 162 | 164 | </div> |
| 163 | 165 | <div className="metric-separator" /> |
| 164 | 166 | <div className="metric-item"> |
| 165 | − <span className="metric-val">33+</span> | |
| 166 | − <span className="metric-label">Guides techniques et références</span> | |
| 167 | + <span className="metric-val">{totalArticles}</span> | |
| 168 | + <span className="metric-label">Guides et références techniques</span> | |
| 167 | 169 | </div> |
| 168 | 170 | <div className="metric-separator" /> |
| 169 | 171 | <div className="metric-item"> |
| @@ -172,8 +174,8 @@ export default function Home() { | ||
| 172 | 174 | </div> |
| 173 | 175 | <div className="metric-separator" /> |
| 174 | 176 | <div className="metric-item"> |
| 175 | − <span className="metric-val">99.98%</span> | |
| 176 | − <span className="metric-label">Disponibilité constatée et sondée</span> | |
| 177 | + <span className="metric-val">24/7</span> | |
| 178 | + <span className="metric-label">Supervision active sur status.dimdams.com</span> | |
| 177 | 179 | </div> |
| 178 | 180 | </section> |
| 179 | 181 | |
| @@ -211,7 +213,7 @@ export default function Home() { | ||
| 211 | 213 | |
| 212 | 214 | {/* Key Capabilities */} |
| 213 | 215 | <div className="card-highlights"> |
| 214 | − <span className="card-highlights-title">Fonctionnalités clés :</span> | |
| 216 | + <span className="card-highlights-title">Fonctionnalités documentées :</span> | |
| 215 | 217 | <ul> |
| 216 | 218 | {highlights.map((h, idx) => ( |
| 217 | 219 | <li key={idx}> |
| @@ -338,11 +340,11 @@ export default function Home() { | ||
| 338 | 340 | </div> |
| 339 | 341 | <div className="status-live-badge"> |
| 340 | 342 | <span className="pulse-dot" /> |
| 341 | − <span>Tous systèmes opérationnels</span> | |
| 343 | + <span>Supervision en direct</span> | |
| 342 | 344 | </div> |
| 343 | 345 | </div> |
| 344 | 346 | <h4>Dimdam's Status</h4> |
| 345 | − <p>Supervisez en direct l'état des serveurs, la latence moyenne et les incidents passés.</p> | |
| 347 | + <p>Supervisez en direct l'état des services, le temps de réponse et l'historique des sondes.</p> | |
| 346 | 348 | <div className="ecosystem-card-link"> |
| 347 | 349 | <span>status.dimdams.com</span> |
| 348 | 350 | <IconExternalLink width={14} height={14} /> |
| @@ -400,8 +402,8 @@ export default function Home() { | ||
| 400 | 402 | </div> |
| 401 | 403 | <h3>Besoin d'un accompagnement sur votre infrastructure ?</h3> |
| 402 | 404 | <p> |
| 403 | − Notre équipe technique vous assiste pour vos migrations de code, configurations réseau sur mesure | |
| 404 | − ou dimensionnements de serveurs VPS dédiés. | |
| 405 | + Notre équipe technique vous assiste pour vos déploiements, vos configurations réseau | |
| 406 | + ou la gestion de vos instances de production. | |
| 405 | 407 | </p> |
| 406 | 408 | </div> |
| 407 | 409 | <div className="support-banner-actions"> |
Modifiésrc/components/TerminalShowcase.tsx+37−32
| @@ -17,58 +17,64 @@ const TABS: TabSnippet[] = [ | ||
| 17 | 17 | id: "cli", |
| 18 | 18 | title: "dimdams CLI", |
| 19 | 19 | icon: IconTerminal, |
| 20 | − badge: "v1.4.0", | |
| 20 | + badge: "Node.js", | |
| 21 | 21 | language: "bash", |
| 22 | − code: `# 1. Connexion sécurisée avec votre jeton d'API | |
| 23 | −dimdams auth login --token dim_live_a8f9c2d14e... | |
| 22 | + code: `# 1. Connexion avec votre clé d'API (dim_live_...) | |
| 23 | +dimdams login | |
| 24 | 24 | |
| 25 | −# 2. Déploiement continu vers vos serveurs en France | |
| 26 | −dimdams deploy --service app-prod --env production | |
| 25 | +# 2. Lister vos services actifs et leur état | |
| 26 | +dimdams services | |
| 27 | 27 | |
| 28 | −# ✓ Build complété en 3.8s · Conteneur en ligne sur https://mon-app.dimdams.com`, | |
| 28 | +# 3. Lancer un déploiement Git | |
| 29 | +dimdams deploy mon-site | |
| 30 | + | |
| 31 | +# 4. Consulter les journaux en direct | |
| 32 | +dimdams logs mon-site -f`, | |
| 29 | 33 | }, |
| 30 | 34 | { |
| 31 | 35 | id: "api", |
| 32 | 36 | title: "REST API", |
| 33 | 37 | icon: IconCode, |
| 34 | − badge: "v1 JSON", | |
| 38 | + badge: "JSON", | |
| 35 | 39 | language: "bash", |
| 36 | − code: `curl -X POST https://api.dimdams.com/v1/services \\ | |
| 37 | − -H "Authorization: Bearer dim_live_a8f9c2d14e..." \\ | |
| 40 | + code: `# Lister vos services actifs | |
| 41 | +curl -X GET "https://www.dimdams.com/api/hosts" \\ | |
| 42 | + -H "Authorization: Bearer dim_live_9f8e7d6c..." | |
| 43 | + | |
| 44 | +# Redémarrer un service (scope requis : hosts:power) | |
| 45 | +curl -X POST "https://www.dimdams.com/api/hosts/vps-01/actions" \\ | |
| 46 | + -H "Authorization: Bearer dim_live_9f8e7d6c..." \\ | |
| 38 | 47 | -H "Content-Type: application/json" \\ |
| 39 | − -d '{ | |
| 40 | − "name": "backend-api", | |
| 41 | − "template": "nodejs-22", | |
| 42 | − "replicas": 2, | |
| 43 | − "port": 3000 | |
| 44 | − }'`, | |
| 48 | + -d '{"action": "restart"}'`, | |
| 45 | 49 | }, |
| 46 | 50 | { |
| 47 | 51 | id: "git", |
| 48 | 52 | title: "Forge Git", |
| 49 | 53 | icon: IconGitBranch, |
| 50 | − badge: "CI/CD", | |
| 54 | + badge: "SSH", | |
| 51 | 55 | language: "bash", |
| 52 | 56 | code: `# Lier votre dépôt local à la forge Dimdam's |
| 53 | −git remote add dimdams git@git.dimdams.com:org/projet.git | |
| 57 | +git remote add dimdams git@git.dimdams.com:utilisateur/mon-projet.git | |
| 54 | 58 | |
| 55 | −# Déclencher le pipeline de compilation automatique | |
| 59 | +# Pousser sur la branche principale | |
| 56 | 60 | git push dimdams main |
| 57 | 61 | |
| 58 | −# Pipeline CI: test ✓ | build ✓ | deploiement srv-003 ✓`, | |
| 62 | +# Le webhook déclenche le build et le déploiement continu`, | |
| 59 | 63 | }, |
| 60 | 64 | { |
| 61 | 65 | id: "ssh", |
| 62 | − title: "SSH Direct", | |
| 66 | + title: "SSH VPS", | |
| 63 | 67 | icon: IconServer, |
| 64 | − badge: "Port 22", | |
| 68 | + badge: "Port 2222", | |
| 65 | 69 | language: "bash", |
| 66 | − code: `# Accès root sans intermédiaire avec clé ed25519 | |
| 67 | −ssh -i ~/.ssh/id_ed25519 root@vps-01.dimdams.com | |
| 70 | + code: `# Connexion au VPS via la passerelle sécurisée Dimdam's | |
| 71 | +ssh root.vps-1793740523964-d3bw0r@ssh.dimdams.com -p 2222 | |
| 68 | 72 | |
| 69 | −Linux vps-01 6.8.0-dimdams-nvme #1 SMP PREEMPT_DYNAMIC | |
| 70 | −root@vps-01:~# ufw status | |
| 71 | −Status: active (Pare-feu WAF & Anti-DDoS actif)`, | |
| 73 | +# Accès root complet sur votre serveur Linux dédié | |
| 74 | +root@vps:~# systemctl status | |
| 75 | +● State: running | |
| 76 | + Jobs: 0 queued | |
| 77 | + Failed: 0 units`, | |
| 72 | 78 | }, |
| 73 | 79 | ]; |
| 74 | 80 | |
| @@ -116,7 +122,7 @@ export function TerminalShowcase() { | ||
| 116 | 122 | })} |
| 117 | 123 | </div> |
| 118 | 124 | |
| 119 | − {/* Copy button & status indicator */} | |
| 125 | + {/* Copy button */} | |
| 120 | 126 | <div className="terminal-actions"> |
| 121 | 127 | <button |
| 122 | 128 | type="button" |
| @@ -145,7 +151,7 @@ export function TerminalShowcase() { | ||
| 145 | 151 | <code> |
| 146 | 152 | {currentSnippet.code.split("\n").map((line, idx) => { |
| 147 | 153 | const isComment = line.trim().startsWith("#"); |
| 148 | − const isOutput = line.trim().startsWith("✓") || line.trim().startsWith("Linux") || line.trim().startsWith("root@"); | |
| 154 | + const isOutput = line.trim().startsWith("●") || line.trim().startsWith("Jobs:") || line.trim().startsWith("Failed:") || line.trim().startsWith("root@"); | |
| 149 | 155 | const isCommand = !isComment && !isOutput && (line.trim().startsWith("dimdams") || line.trim().startsWith("curl") || line.trim().startsWith("git") || line.trim().startsWith("ssh")); |
| 150 | 156 | |
| 151 | 157 | return ( |
| @@ -175,15 +181,14 @@ export function TerminalShowcase() { | ||
| 175 | 181 | <div className="terminal-footer"> |
| 176 | 182 | <div className="terminal-status-left"> |
| 177 | 183 | <span className="pulse-dot" /> |
| 178 | − <span>Nœuds d'infrastructure & sondes en ligne</span> | |
| 184 | + <span>Surveillance continue de l'infrastructure</span> | |
| 179 | 185 | </div> |
| 180 | 186 | <div className="terminal-status-right"> |
| 181 | − <span>Latence réseau moyenne : <strong>1.4 ms</strong></span> | |
| 187 | + <span>Hébergement 100% en France</span> | |
| 182 | 188 | <span>·</span> |
| 183 | − <span>Hébergement 100% France</span> | |
| 189 | + <span>Clés Ed25519 & API dim_live_</span> | |
| 184 | 190 | </div> |
| 185 | 191 | </div> |
| 186 | 192 | </div> |
| 187 | 193 | ); |
| 188 | 194 | } |
| 189 | − | |