// ============================================================
// WASIED · Mock data - single source of truth
// ============================================================

const DATA = {
  brand: {
    name: 'Wasied',
    tagline: "L'infrastructure des créateurs Garry's Mod.",
    sub: "Hébergement, développement custom, formations et addons. Un seul écosystème, un seul login, une seule facturation.",
    founder: {
      name: 'Maxime', alias: 'Wasied',
      role: 'Développeur · Fondateur',
      bio: "Développeur Garry's Mod depuis 8 ans. Indépendant basé en Belgique. J'opère seul l'ensemble de l'écosystème Wasied : hosting, dev sur commande, formations, et la communauté Discord qui va avec.",
      location: 'Belgique',
      email: 'contact@wasied.com',
      discord: 'wasied',
    },
    stats: [
      { value: '50+', label: 'Devs formés' },
      { value: '4.9 / 5', label: 'Note moyenne' },
      { value: '8 ans', label: "D'expérience" },
      { value: '100%', label: 'Remboursable' },
    ],
    hireStatus: 'available', // available | limited | busy
  },

  // ---------- Public reviews ----------
  reviews: {
    formations: [
      { name: 'Zapz', role: 'Expert', text: "Super formation, la meilleure sur le marché francophone et sûrement international. Wasied a fait ses preuves professionnellement et partage tout ce qu'il a appris ici. Merci pour tout.", tone: 'indigo' },
      { name: 'Dydy G', role: 'Intermédiaire', text: "La formation est particulièrement bien adaptée aux débutants. Les vidéos théoriques ainsi que les petits exercices sont vraiment efficaces pour assimiler les concepts de base.", tone: 'cyan' },
      { name: 'Dvrk', role: 'Expert', text: "Très bien expliqué, des thèmes qui apprennent vraiment les bases du GLua et des thèmes un peu plus poussés. Vraiment, je recommande.", tone: 'purple' },
      { name: 'Shibaz', role: 'Débutant', text: "La formation est complète et accessible à tout niveau. Le contenu est progressif et adapté. J'ai renforcé mes compétences grâce à la formation de Wasied. Merci !", tone: 'green' },
      { name: 'Sainox', role: 'Expert', text: "Formation très complète, qui traite de la base du langage jusqu'à un niveau avancé, toujours de manière ludique et interactive.", tone: 'amber' },
      { name: 'Stracss', role: 'Expert', text: "Une excellente formation avec un contenu riche en tous points (vidéos théoriques, vidéos pratiques, quizz et cas pratiques). L'apprentissage des grandes bases du GLua est assuré.", tone: 'red' },
      { name: 'Somedeos', role: 'Intermédiaire', text: "Il y a peu de développeurs compétents en Lua, et les ressources pour l'apprendre sont limitées. À mon sens, c'est la seule formation valable et complète pour commencer et s'améliorer.", tone: 'slate' },
      { name: 'GeoNight', role: 'Expert', text: "Très bon contenu, très bonnes propositions d'offres pour des niveaux différents et surtout, très bons conseils lors du suivi.", tone: 'indigo' },
    ],
    orders: [
      { name: 'raalii_', date: '2026-01', stars: 5, text: "Je suis client chez l'hébergeur Wasied depuis plusieurs mois et je suis pleinement satisfait de notre collaboration. Les différentes commandes qu'il a réalisées pour moi ont toutes été conformes à mes attentes et d'excellente qualité. Les délais ont toujours été respectés, la communication est claire et efficace, et le support est très réactif." },
      { name: 'damie2pain', date: '2025-12', stars: 5, text: "Top, super communication avec Wasied, rendu super qualitatif et grande attention aux détails. Il a été réactif quant aux quelques demandes de modifications. Je recommande." },
      { name: 'nono_.83', date: '2025-11', stars: 5, text: "C'est la deuxième fois que je travaille avec Wasied, et je ne peux dire qu'une chose : parfait. Wasied prend le temps de répondre aux questions de ses clients, réalise un addon qui correspond aux attentes. Je ne peux que recommander." },
      { name: 'wolfcoco', date: '2025-04', stars: 5, text: "Petite commande réalisée avec succès et en très peu de temps. Wasied a fait preuve de professionnalisme et de gentillesse. Je recommande à 100%." },
      { name: 'rhalfex', date: '2024-12', stars: 5, text: "Maxime est un développeur compétent et efficace. Il a su respecter la maquette fournie à la perfection, sans nécessiter de modifications ultérieures. Son travail est rigoureux et fidèle aux attentes." },
      { name: 'kogui', date: '2025-03', stars: 5, text: "Un script compliqué à réaliser, mais Wasied a su répondre à nos demandes. Merci à lui." },
      { name: 'louisonn', date: '2025-02', stars: 5, text: "Des productions de qualité et un support au top, je recommande vivement." },
      { name: 'onesidious', date: '2025-01', stars: 5, text: "Comme à son habitude, commande réalisée à la perfection." },
      { name: 'cocoapero', date: '2024-11', stars: 5, text: "Rien à dire, fait preuve de professionnalisme et la qualité des addons est géniale. Je recommande." },
      { name: 'anikiyuri', date: '2024-08', stars: 5, text: "L'addon demandé a été réalisé avec succès, et nous avons été ravis par le design ainsi que l'interface. Rien à redire, c'est du travail très professionnel." },
      { name: 'floconavoine', date: '2024-08', stars: 5, text: "Wasied est un développeur extrêmement professionnel. En tant que collaborateur, il fait preuve d'une grande expertise et d'un engagement remarquable. Je le recommande vivement." },
      { name: 'osef', date: '2024-07', stars: 5, text: "Je n'ai quasiment jamais rencontré un développeur aussi gentil et efficace sur Garry's Mod. Wasied a su répondre à mes attentes et proposer des alternatives hors de mes demandes mais dans l'intérêt de ma commande, le tout avec politesse et bienveillance." },
      { name: 'spacev', date: '2022-10', stars: 5, text: "Wasied respecte les deadlines, rapide, respectueux et n'hésite pas à faire des révisions quand c'est nécessaire. Service parfait." },
    ],
  },

  // ---------- Hosting ----------
  hosting: {
    machine: {
      cpu: 'AMD EPYC 4584PX · 16c/32t · 4.2GHz / 5.7GHz turbo',
      ram: '64 GB DDR5 ECC · 5200 MHz',
      storage: 'NVMe Gen4',
      location: 'France · Gravelines',
      network: 'Anti-DDoS GMod-aware · latence < 5ms FR',
      backup: 'AWS S3 toutes les 24h · 30 jours de rétention',
    },
    perks: [
      { icon: 'shield', title: 'Anti-DDoS avancé', text: "Protection avancée pensée pour Garry's Mod, mitigation à la couche applicative incluse." },
      { icon: 'zap', title: 'Latence ultra-faible', text: "Datacenters France-Gravelines. Idéal pour l'expérience de jeu et le classement de votre serveur." },
      { icon: 'cpu', title: '+25 % de capacité CPU', text: "Votre serveur est automatiquement modifié pour externaliser le trafic réseau et libérer son CPU principal." },
      { icon: 'database', title: 'Hardware garanti', text: "Nos machines sont segmentées pour qu'aucun serveur ne puisse être bridé par un voisin trop gourmand." },
      { icon: 'cloud', title: 'Sauvegardes Cloud', text: "Sauvegarde automatique de votre serveur sur AWS S3 toutes les 24 heures pendant 30 jours." },
      { icon: 'user', title: 'Support compétent', text: "Réactif, technique, et qui parle GMod. Pas un centre d'appel : Maxime ou un staff qui code." },
    ],
    plans: [
      {
        id: 'dev', name: 'Dev Kit', price: 7.99, accent: '--fg-2',
        cpu: '75 %', ram: '1 Go', storage: '30 Go', players: '~5 joueurs',
        forWho: 'Tests, dev local, petits scripts.',
        features: ['1 serveur GMod', 'Console live', 'Sauvegardes 24h', 'SFTP'],
      },
      {
        id: 'starter', name: 'Starter Pack', price: 17.99, accent: 'var(--service-hosting)',
        cpu: '100 %', ram: '4 Go', storage: '40 Go', players: '~25 joueurs',
        forWho: "Serveurs roleplay légers, communautés naissantes.",
        features: ['1 serveur GMod', 'Console live + file manager', 'Sauvegardes 24h', 'SFTP', 'Support standard'],
      },
      {
        id: 'community', name: 'Community Pro', price: 34.99, accent: 'var(--accent)', popular: true,
        cpu: '125 %', ram: '8 Go', storage: '50 Go', players: '~80 joueurs',
        forWho: "Communautés actives, RP grand-public, DarkRP musclé.",
        features: ['1 serveur GMod', 'Console live + file manager', 'Sauvegardes 24h', 'SFTP', 'WebFastDL en option', 'Support prioritaire'],
      },
      {
        id: 'elite', name: 'Elite', price: 49.99, accent: 'var(--service-formations)',
        cpu: '∞', ram: '64 Go', storage: '300 Go', players: '~128 joueurs',
        forWho: "Gros RP, événements 100+, serveurs custom complexes.",
        features: ['1 serveur GMod', 'Console live + file manager', 'Sauvegardes 24h', 'SFTP', 'IP personnalisée incluse', 'WebFastDL inclus', 'Serveur de dev synchronisé GitHub inclus', 'Support prioritaire 24/7'],
      },
    ],
    bots: [
      { id: 'bot-starter', name: 'Bot Starter', price: 3.99, ram: '512 Mo', cpu: 'partagé', features: ['1 bot Discord', 'Uptime 99,9 %', 'Logs 7 jours'] },
      { id: 'bot-pro', name: 'Bot Pro', price: 8.99, ram: '2 Go', cpu: 'dédié', features: ['1 bot Discord', 'Uptime 99,99 %', 'Logs 30 jours', 'Webhooks sortants', 'Support prioritaire'] },
    ],
    options: [
      { name: 'IP personnalisée', price: '+ 2,99 €/mois', includedIn: 'Elite' },
      { name: 'Serveur WebFastDL avec synchro automatique', price: '+ 2,99 €/mois', includedIn: 'Elite' },
      { name: 'Serveur de développement supplémentaire (sync GitHub)', price: '+ 5,99 €/mois', includedIn: 'Elite' },
    ],
  },

  // ---------- Demo server (for Pterodactyl-style panel) ----------
  demoServer: {
    id: 'srv-1a2b3c',
    name: 'maincityrp',
    fqdn: '37.65.182.114:27015',
    plan: 'Community Pro',
    location: 'fr-gvl-01',
    status: 'running',
    uptime: '14j 8h 32m',
    players: 47, maxPlayers: 80,
    map: 'rp_southside_v3',
    gamemode: 'DarkRP - Wasied Build',
    cpuUsage: 38, ramUsage: 5.2, ramTotal: 8, diskUsage: 22.4, diskTotal: 50,
    netIn: 1.2, netOut: 3.7, // MB/s
    cpuHistory: [22, 28, 31, 25, 33, 38, 42, 40, 36, 38, 34, 38, 42, 45, 39, 38],
    ramHistory: [4.1, 4.3, 4.5, 4.8, 5.0, 5.1, 5.2, 5.2, 5.3, 5.2, 5.1, 5.2, 5.2, 5.2, 5.2, 5.2],
    playerHistory: [12, 18, 24, 31, 35, 38, 42, 45, 47, 47, 46, 47, 48, 47, 47, 47],
    consoleLines: [
      { t: '19:42:18', tag: 'INFO', text: 'Player "spacev" connected (STEAM_0:1:43219811)' },
      { t: '19:42:21', tag: 'INFO', text: '[Wasied/Login] spacev synced from Discord OAuth · role: citizen' },
      { t: '19:42:24', tag: 'INFO', text: '[DarkRP] spacev spawned as Citoyen at <2841 -1108 -127>' },
      { t: '19:43:01', tag: 'WARN', text: '[DLib] hook AcceptInput slow - 18ms (entity: prop_dynamic[442])' },
      { t: '19:43:12', tag: 'INFO', text: 'Player "kogui" connected (STEAM_0:0:91827364)' },
      { t: '19:43:14', tag: 'INFO', text: '[Wasied/Sync] 47 players currently online · 12 jobs active' },
      { t: '19:43:48', tag: 'INFO', text: '[Voice] OOC: Daniel Walker: "qui veut faire un braquage banque ?"' },
      { t: '19:44:02', tag: 'OK',   text: '[Backup] daily snapshot uploaded to s3://wasied-backups/srv-1a2b3c/2026-05-28.tar.zst (842 MB)' },
      { t: '19:44:10', tag: 'INFO', text: '[Voice] OOC: Alyx Vance: "moi"' },
      { t: '19:44:15', tag: 'INFO', text: '[Voice] OOC: Gordon Freeman: "go"' },
      { t: '19:44:28', tag: 'INFO', text: '[Admin] BANNED steamid STEAM_0:1:18233452 by Wasied · reason: cheat (FastShoot)' },
    ],
    files: [
      { name: 'addons', type: 'folder', size: '128 items', modified: '21h ago' },
      { name: 'cfg', type: 'folder', size: '12 items', modified: '2j ago' },
      { name: 'data', type: 'folder', size: '4 items', modified: '14m ago' },
      { name: 'gamemodes', type: 'folder', size: '3 items', modified: '21h ago' },
      { name: 'maps', type: 'folder', size: '8 items', modified: '14j ago' },
      { name: 'materials', type: 'folder', size: '892 items', modified: '14j ago' },
      { name: 'lua', type: 'folder', size: '64 items', modified: '4h ago' },
      { name: 'server.cfg', type: 'file', size: '4.2 KB', modified: '2j ago' },
      { name: 'darkrp_jobs.lua', type: 'file', size: '38 KB', modified: '12h ago' },
      { name: 'darkrp_shipments.lua', type: 'file', size: '22 KB', modified: '4h ago' },
      { name: 'README.md', type: 'file', size: '1.8 KB', modified: '14j ago' },
    ],
    backups: [
      { name: '2026-05-28-daily.tar.zst', size: '842 MB', date: '2026-05-28 03:00', auto: true, restorable: true },
      { name: '2026-05-27-daily.tar.zst', size: '838 MB', date: '2026-05-27 03:00', auto: true, restorable: true },
      { name: '2026-05-26-daily.tar.zst', size: '836 MB', date: '2026-05-26 03:00', auto: true, restorable: true },
      { name: 'pre-rework-jobs.tar.zst', size: '829 MB', date: '2026-05-24 18:42', auto: false, restorable: true },
      { name: '2026-05-23-daily.tar.zst', size: '829 MB', date: '2026-05-23 03:00', auto: true, restorable: true },
    ],
    network: {
      ip: '37.65.182.114', port: 27015, sftp: 'sftp://srv-1a2b3c.fr.wasied.com:2022',
      ddos: { status: 'protected', attacks24h: 2, mitigated: 2 },
    },
  },

  // ---------- Orders ----------
  orders: {
    services: ['Addon GMod', 'Gamemode complet', 'Site web', 'Bot Discord', 'Refonte UI', 'Audit / optimisation'],
    portfolio: [
      { id: 'beggin', client: 'Beggin', tag: 'Gamemode complet', budget: '15 000 €', duration: '4 mois', summary: 'Refonte complète du gamemode RP, écosystème panneau staff, factions, économie.', cover: 'gradient-cyan', tech: ['GLua', 'DLib', 'PostgreSQL', 'React'] },
      { id: 'oveo', client: 'Oveo', tag: 'Addon UI', budget: '4 800 €', duration: '5 semaines', summary: "Refonte du HUD principal, du système d'inventaire et des menus de quêtes.", cover: 'gradient-purple', tech: ['GLua', 'GLua Vue', 'DLib'] },
      { id: 'raalii', client: 'Raalii', tag: 'Hosting + scripts', budget: 'Contrat annuel', duration: 'En cours', summary: "Hébergement Elite, scripts custom mensuels, audits trimestriels.", cover: 'gradient-indigo', tech: ['Hosting Elite', 'GLua', 'Discord bot'] },
      { id: 'nono83', client: 'Nono', tag: 'Addons série', budget: '2 commandes', duration: 'Récurrent', summary: 'Deux missions livrées, addons custom rapides et fidèles au brief.', cover: 'gradient-amber', tech: ['GLua'] },
      { id: 'damie', client: 'Damie2pain', tag: 'UI rework', budget: '1 800 €', duration: '2 semaines', summary: "Refonte des menus principaux, attention détail sur l'animation.", cover: 'gradient-green', tech: ['GLua', 'DLib'] },
      { id: 'kogui', client: 'Kogui', tag: 'Scripts récurrents', budget: '3 commandes', duration: 'Récurrent', summary: 'Scripts complexes, toute l\'équipe satisfaite. Trois commandes successives.', cover: 'gradient-red', tech: ['GLua', 'MySQL'] },
    ],
  },

  // ---------- Formations ----------
  formations: {
    pitches: {
      h1: 'Devenez développeur Garry\'s Mod en 30 jours.',
      sub: "Formation accessible à tous sous forme de modules vidéo. Offrez-vous la possibilité de créer et vendre vos propres addons, avec comme seule limite votre imagination.",
      guarantee: "Garantie satisfait ou remboursé · 10 premiers chapitres sans engagement. Testez les 10 premiers chapitres et faites-vous rembourser intégralement la formation si vous n'accrochez pas.",
      rentab: '3 h de travail pour rentabiliser la formation, sur base d\'un tarif marché de 20 €/h.',
    },
    tiers: [
      { id: 'beginner', name: 'Pack Débutant', price: 49, sub: 'La base solide.', features: ['Accès aux 5 premiers chapitres', '40 modules vidéo', 'Quiz interactifs', 'Accès Discord apprenants'] },
      { id: 'inter', name: 'Pack Intermédiaire', price: 119, sub: 'Pour aller plus loin que les tutos YouTube.', features: ['Tous les chapitres Débutant', '+ 6 chapitres avancés', '+ Cas pratiques corrigés', 'Accès Discord apprenants + certifiés'], popular: true },
      { id: 'expert', name: 'Pack Expert', price: 249, sub: 'Suivi 1:1 hebdomadaire avec Maxime.', features: ['Tous les chapitres', 'Suivi actif 3 mois', 'Rendez-vous hebdomadaires 1:1', "Aide création de votre premier addon", "Programme de suivi Discord exclusif"] },
    ],
    perks: [
      { icon: 'book',  title: 'Applications pratiques', text: 'Quiz et exercices pratiques pour chaque domaine, afin de solidifier vos connaissances théoriques.' },
      { icon: 'award', title: 'Crédibilité renforcée', text: 'Après avoir terminé la formation, demandez à être affiché parmi les certifiés pour prouver vos compétences à vos futurs clients.' },
      { icon: 'users', title: 'Communauté de devs', text: 'Accès à un Discord exclusif pour être soutenu en direct par des développeurs certifiés.' },
    ],
    curriculum: [
      { ch: '01', title: 'Premier contact avec GLua', modules: 8, level: 'Débutant', preview: true },
      { ch: '02', title: 'Structures de données et tables', modules: 6, level: 'Débutant', preview: true },
      { ch: '03', title: 'Hooks, réseaux et synchronisation', modules: 9, level: 'Débutant', preview: true },
      { ch: '04', title: 'Création d\'entités et SWEPs', modules: 7, level: 'Débutant', preview: true },
      { ch: '05', title: 'UI et VGUI : votre premier menu', modules: 8, level: 'Débutant', preview: true },
      { ch: '06', title: 'Persistance SQL et MySQLite', modules: 7, level: 'Intermédiaire' },
      { ch: '07', title: 'Architecture d\'un gros addon', modules: 6, level: 'Intermédiaire' },
      { ch: '08', title: 'DLib et écosystème pro', modules: 8, level: 'Intermédiaire' },
      { ch: '09', title: 'Render-targets et 2D avancé', modules: 7, level: 'Intermédiaire' },
      { ch: '10', title: 'Matrices, stencils, post-processing', modules: 6, level: 'Avancé' },
      { ch: '11', title: 'Performance et profilage', modules: 5, level: 'Avancé' },
      { ch: '12', title: 'Anti-cheat et sécurité serveur', modules: 6, level: 'Avancé' },
    ],
    sampleCourse: {
      chapter: 'Chapitre 04 - Création d\'entités et SWEPs',
      currentModule: { num: '04.03', title: 'SWEP de base : structure et hooks essentiels', duration: '18:42', position: '07:23' },
      modules: [
        { num: '04.01', title: 'Vue d\'ensemble du chapitre', duration: '03:12', done: true, kind: 'video' },
        { num: '04.02', title: 'Anatomie d\'une entité', duration: '11:08', done: true, kind: 'video' },
        { num: '04.03', title: 'SWEP de base : structure et hooks', duration: '18:42', done: false, current: true, kind: 'video' },
        { num: '04.04', title: 'Quiz : hooks et networking', duration: '5 min', done: false, kind: 'quiz' },
        { num: '04.05', title: 'TP : créer un SWEP "lance-grappin"', duration: '~45 min', done: false, kind: 'practice' },
        { num: '04.06', title: 'Variables réseau (SetupDataTables)', duration: '14:21', done: false, kind: 'video' },
        { num: '04.07', title: 'Quiz : variables réseau', duration: '4 min', done: false, kind: 'quiz' },
      ],
    },
    sampleQuiz: {
      q: 'Quel hook côté serveur est appelé en tout premier quand un joueur tire avec son SWEP ?',
      options: [
        { id: 'a', label: 'SWEP:PrimaryAttack' },
        { id: 'b', label: 'SWEP:Think' },
        { id: 'c', label: 'GM:EntityFireBullets' },
        { id: 'd', label: 'WEAPON:Initialize' },
      ],
      correct: 'a',
      explanation: "PrimaryAttack est déclenché immédiatement côté serveur quand le joueur appuie sur clic gauche. EntityFireBullets vient APRÈS, comme conséquence de l'appel à Player:FireBullets() depuis PrimaryAttack. WEAPON:Initialize n'est appelé qu'une seule fois au spawn de l'arme.",
    },
  },

  // ---------- Addons ----------
  addons: {
    list: [
      { id: 'darkrp-jobs-ui',     name: 'DarkRP · Menu de jobs moderne', author: 'Wasied', tags: ['DarkRP', 'UI'],        downloads: 8421, stars: 412, updated: '2026-05-20', desc: 'Refonte du menu F4. Animations, recherche, filtres, favoris.', license: 'MIT', price: 0 },
      { id: 'wasied-anticheat',   name: 'Wasied · Anti-cheat',           author: 'Wasied', tags: ['Sécurité'],            downloads: 4128, stars: 287, updated: '2026-05-15', desc: 'Détection comportementale, kick auto, logs propres.', license: 'MIT', price: 0 },
      { id: 'wasied-hud',         name: 'Wasied · HUD universel',         author: 'Wasied', tags: ['UI', 'HUD'],          downloads: 6730, stars: 318, updated: '2026-05-10', desc: 'HUD modulaire. Thèmes, slots configurables.', license: 'MIT', price: 0 },
      { id: 'wasied-inv',         name: 'Wasied · Inventaire grid',       author: 'Wasied', tags: ['DarkRP', 'Inventory'], downloads: 5142, stars: 256, updated: '2026-04-29', desc: 'Inventaire 6×8 drag-and-drop, persistance MySQL.', license: 'MIT', price: 0 },
      { id: 'wasied-loadingurl',  name: 'Wasied · Loading screen',        author: 'Wasied', tags: ['Loading'],            downloads: 9301, stars: 489, updated: '2026-04-22', desc: 'Loading screen self-hosted, progression réelle, branding.', license: 'MIT', price: 0 },
      { id: 'wasied-voicepanel',  name: 'Wasied · Voice panel',           author: 'Wasied', tags: ['UI', 'Voice'],        downloads: 3287, stars: 184, updated: '2026-04-12', desc: 'Panel vocal animé, fade selon distance.', license: 'MIT', price: 0 },
      { id: 'wasied-mapvote',     name: 'Wasied · MapVote',               author: 'Wasied', tags: ['UI', 'Sandbox'],      downloads: 2890, stars: 142, updated: '2026-03-28', desc: 'Map vote propre, thumbnail auto, RTV.', license: 'MIT', price: 0 },
      { id: 'wasied-chatbox',     name: 'Wasied · Chatbox',               author: 'Wasied', tags: ['UI', 'Chat'],         downloads: 4019, stars: 221, updated: '2026-03-14', desc: 'Chatbox custom, OOC/IC/Radio séparés, markdown léger.', license: 'MIT', price: 0 },
      { id: 'wasied-banking-pro', name: 'Wasied · Banking Pro',           author: 'Wasied', tags: ['DarkRP', 'Économie'], downloads: 128,  stars: 22,  updated: '2026-05-26', desc: 'Système bancaire complet : comptes, virements, prêts, taxes, audit, anti-fraude.', license: 'Commercial', price: 24.99, badge: 'NOUVEAU' },
      { id: 'wasied-faction-pro', name: 'Wasied · Factions Pro',          author: 'Wasied', tags: ['DarkRP', 'RP'],       downloads: 86,   stars: 18,  updated: '2026-05-22', desc: 'Système de factions avancé : hiérarchie, permissions, guerres, alliances, économie de groupe.', license: 'Commercial', price: 34.99, badge: 'NOUVEAU' },
    ],
  },

  // ---------- Blog & changelog ----------
  blog: [
    { id: 'optimiser-darkrp', title: 'Optimiser un serveur DarkRP de 80+ joueurs', date: '2026-05-20', tag: 'Hébergement', read: '12 min', excerpt: "Profilage CPU, hooks coûteux, externalisation réseau : retour d'expérience sur les 3 leviers qui ont vraiment compté." },
    { id: 'dlib-pourquoi',    title: 'DLib : pourquoi je l\'utilise sur 100 % de mes commandes', date: '2026-05-04', tag: 'Dev',     read: '9 min', excerpt: "Un framework GLua pensé par et pour des devs qui livrent. Petit tour de ce qu'il apporte et pourquoi vous devriez l'adopter." },
    { id: 'glua-pro-2026',    title: 'Devenir développeur GMod professionnel en 2026', date: '2026-04-18', tag: 'Carrière', read: '15 min', excerpt: "Le marché, les tarifs, les compétences, et la trajectoire que je recommande à un débutant motivé." },
    { id: 'sweet-spots',      title: 'Les sweet-spots techniques d\'un addon qui vend',   date: '2026-04-02', tag: 'Dev',     read: '11 min', excerpt: "Bien plus que la qualité de code : UX, scope, naming, démo. Décortiquage." },
    { id: 'anticheat-gmod',   title: 'Anti-cheat GMod : ce que personne ne vous dit',     date: '2026-03-15', tag: 'Sécurité', read: '10 min', excerpt: "VAC ne sauvera pas votre serveur. Approche multi-couches, signaux faibles, faux positifs." },
    { id: 'pricing-comment',  title: 'Comment fixer le prix d\'une commande GMod',         date: '2026-02-28', tag: 'Business', read: '8 min', excerpt: "Au temps, au forfait, au résultat : ce que j'ai appris en 8 ans de commandes pour comprendre ce qui fonctionne." },
  ],

  changelog: [
    { version: '2026.05', date: '2026-05-25', service: 'platform', items: [
      { kind: 'feat', text: 'Sortie publique de Wasied.com - toute l\'offre sous une seule marque.' },
      { kind: 'feat', text: 'Auth Discord unifiée : un seul login pour Hosting, Orders, Formations, Addons.' },
      { kind: 'feat', text: 'Facturation centralisée avec PDF (mention TVA franchise indépendant belge).' },
    ]},
    { version: '2026.05.b', date: '2026-05-18', service: 'hosting', items: [
      { kind: 'feat', text: 'Console live websocket-streaming, taille du buffer 5 000 lignes.' },
      { kind: 'feat', text: 'Snapshot manuel à la volée, en plus du snapshot quotidien automatique.' },
      { kind: 'fix',  text: 'Correction du calcul d\'usage RAM sur les serveurs avec workshop > 10 Go.' },
    ]},
    { version: '2026.05.a', date: '2026-05-10', service: 'formations', items: [
      { kind: 'feat', text: 'Player vidéo refondu : marqueurs de chapitre, vitesse 0.5×-2×, qualité auto.' },
      { kind: 'feat', text: 'Progression sauvegardée à la seconde près, reprise au refresh.' },
    ]},
    { version: '2026.04', date: '2026-04-28', service: 'orders', items: [
      { kind: 'feat', text: 'Formulaire de devis intelligent en 6 étapes, autosave.' },
      { kind: 'feat', text: 'Paiement en deux temps (acompte 30 % → solde) avec création automatique d\'un espace de livraison privé.' },
    ]},
    { version: '2026.04.b', date: '2026-04-12', service: 'addons', items: [
      { kind: 'feat', text: 'Lancement du catalogue Addons unifié - anciens scripts payants désormais offerts gratuitement.' },
      { kind: 'feat', text: 'Nouveaux modules premium (Banking Pro, Factions Pro) maintenus en parallèle.' },
    ]},
    { version: '2026.03', date: '2026-03-20', service: 'hosting', items: [
      { kind: 'feat', text: 'Datacenter primaire migré sur AMD EPYC 4584PX. Performance CPU +35 % en moyenne sur les workloads GMod.' },
    ]},
  ],

  status: {
    services: [
      { name: 'Site & dashboard',     status: 'ok',   uptime90: 99.97 },
      { name: 'Hosting GMod · Gravelines', status: 'ok', uptime90: 99.99 },
      { name: 'Hosting Bots Discord', status: 'ok',   uptime90: 100.00 },
      { name: 'Formations · player',   status: 'ok',   uptime90: 99.95 },
      { name: 'Auth Discord OAuth',    status: 'ok',   uptime90: 99.98 },
      { name: 'Paiements (Stripe)',    status: 'ok',   uptime90: 99.99 },
      { name: 'Backups S3',            status: 'ok',   uptime90: 99.99 },
    ],
    incidents: [
      { date: '2026-05-12', title: 'Latence élevée brève côté Hosting Gravelines', status: 'résolu', duration: '14 min', impact: 'mineur' },
      { date: '2026-04-23', title: 'Indisponibilité du player Formations', status: 'résolu', duration: '6 min', impact: 'mineur' },
      { date: '2026-03-08', title: 'Attaque DDoS mitigée sans coupure', status: 'résolu', duration: 'sans impact', impact: 'aucun' },
    ],
  },

  // ---------- Demo client account ----------
  client: {
    handle: 'spacev', name: 'Spacev', discord: 'spacev#0001',
    avatarTone: 'cyan',
    joined: '2024-09', plan: 'Community Pro + Formation Expert',
    servers: 2, courses: 1, ongoingOrders: 1,
    nextInvoice: { date: '2026-06-12', amount: 34.99 },
    timeline: [
      { t: 'Il y a 14 min', icon: 'cpu',        text: 'Serveur maincityrp · pic CPU 78 % stabilisé' },
      { t: 'Il y a 2 h',    icon: 'graduation', text: 'Module 04.02 - Anatomie d\'une entité · terminé' },
      { t: 'Il y a 6 h',    icon: 'cloud',      text: 'Snapshot quotidien uploadé · 842 MB' },
      { t: 'Hier',          icon: 'briefcase',  text: 'Commande #2026-0418 - Wasied a posté une révision pour relecture' },
      { t: 'Il y a 2 j',    icon: 'check',      text: 'Facture mai 2026 · payée' },
      { t: 'Il y a 5 j',    icon: 'shield',     text: 'Attaque DDoS mitigée · 0 impact joueurs' },
    ],
    invoices: [
      { id: 'INV-2026-005', date: '2026-05-12', amount: 34.99, status: 'paid', service: 'Hosting Community Pro · mai 2026' },
      { id: 'INV-2026-004-O', date: '2026-04-22', amount: 1500, status: 'paid', service: 'Commande #2026-0418 · acompte 30 %' },
      { id: 'INV-2026-004', date: '2026-04-12', amount: 34.99, status: 'paid', service: 'Hosting Community Pro · avril 2026' },
      { id: 'INV-2026-003', date: '2026-03-12', amount: 34.99, status: 'paid', service: 'Hosting Community Pro · mars 2026' },
      { id: 'INV-2026-EXP', date: '2026-02-04', amount: 249, status: 'paid', service: 'Formation Pack Expert' },
    ],
  },

  // ---------- Admin overview ----------
  admin: {
    kpis: [
      { label: 'MRR', value: '4 821 €', delta: '+12 %', positive: true, spark: [3800, 3950, 4100, 4150, 4280, 4310, 4480, 4520, 4610, 4720, 4810, 4821] },
      { label: 'Revenu du mois',  value: '7 248 €', delta: '+18 %', positive: true, spark: [4200, 4800, 5300, 5900, 6400, 6800, 7100, 7248] },
      { label: 'Commandes en cours', value: '7', delta: '+2', positive: true, spark: [3, 4, 4, 5, 5, 6, 6, 7] },
      { label: 'Nouveaux clients (30j)', value: '24', delta: '+9', positive: true, spark: [12, 14, 16, 17, 19, 20, 22, 24] },
      { label: 'Tickets ouverts', value: '4', delta: '−2', positive: true, spark: [9, 8, 7, 6, 5, 5, 4, 4] },
      { label: 'Uptime hosting (30j)', value: '99,99 %', delta: 'stable', positive: true, spark: [99.99, 99.99, 99.99, 99.99, 99.99, 99.99, 99.99, 99.99] },
    ],
    ordersKanban: {
      'Devis envoyé': [
        { id: '0521', client: 'mathieuRP', service: 'Gamemode RP Western', budget: '6 800 €', deadline: '2026-08-01', priority: 'normal' },
        { id: '0519', client: 'Snk', service: 'Refonte HUD', budget: '1 400 €', deadline: '2026-06-22', priority: 'normal' },
      ],
      'Acompte versé': [
        { id: '0418', client: 'spacev', service: 'Addon braquage banque v2', budget: '4 800 €', deadline: '2026-06-30', priority: 'high' },
        { id: '0420', client: 'kogui',  service: 'Bot Discord stats', budget: '1 200 €', deadline: '2026-06-15', priority: 'normal' },
      ],
      'En développement': [
        { id: '0412', client: 'damie2pain', service: 'Refonte menu F4', budget: '1 800 €', deadline: '2026-06-08', priority: 'high' },
        { id: '0405', client: 'raalii_',    service: 'Système métiers v3', budget: '5 200 €', deadline: '2026-06-20', priority: 'normal' },
        { id: '0402', client: 'wolfcoco',   service: 'Petit addon RP', budget: '600 €',   deadline: '2026-06-05', priority: 'low' },
      ],
      'En relecture': [
        { id: '0388', client: 'onesidious', service: 'Anti-cheat sur-mesure', budget: '3 200 €', deadline: '2026-06-04', priority: 'high' },
      ],
      'Livré · solde dû': [
        { id: '0371', client: 'nono_.83', service: 'Addon casino', budget: '2 400 €', deadline: 'livré', priority: 'normal' },
      ],
    },
    users: [
      { handle: 'spacev', name: 'Spacev', plan: 'Community Pro', mrr: 34.99, joined: '2024-09', flag: null },
      { handle: 'kogui', name: 'Kogui', plan: 'Elite', mrr: 49.99, joined: '2023-04', flag: 'vip' },
      { handle: 'raalii_', name: 'Raalii', plan: 'Elite + retainer', mrr: 49.99, joined: '2024-11', flag: 'vip' },
      { handle: 'nono_.83', name: 'Nono', plan: 'Starter Pack', mrr: 17.99, joined: '2025-02', flag: null },
      { handle: 'damie2pain', name: 'Damie2pain', plan: 'Community Pro', mrr: 34.99, joined: '2024-08', flag: null },
      { handle: 'wolfcoco', name: 'Wolfcoco', plan: 'Dev Kit', mrr: 7.99, joined: '2025-01', flag: null },
      { handle: 'onesidious', name: 'Onesidious', plan: 'Community Pro', mrr: 34.99, joined: '2024-06', flag: null },
      { handle: 'rhalfex', name: 'Rhalfex', plan: 'Starter Pack', mrr: 17.99, joined: '2024-10', flag: null },
      { handle: 'louisonn', name: 'Louisonn', plan: 'Community Pro', mrr: 34.99, joined: '2025-02', flag: null },
      { handle: 'cocoapero', name: 'Cocoapero', plan: 'Dev Kit', mrr: 7.99, joined: '2024-09', flag: null },
    ],
    logs: [
      { t: '19:48:12', actor: 'spacev', event: 'order.revision.submitted', ref: '#0418', amount: null },
      { t: '19:42:01', actor: 'kogui', event: 'invoice.paid',           ref: 'INV-2026-005', amount: 49.99 },
      { t: '19:39:48', actor: 'Stripe', event: 'webhook.delivered',      ref: 'payment_intent.succeeded', amount: 49.99 },
      { t: '18:55:21', actor: 'damie2pain', event: 'ticket.opened',       ref: 'T-1042', amount: null },
      { t: '18:42:09', actor: 'wasied', event: 'server.restarted',         ref: 'srv-1a2b3c', amount: null },
      { t: '18:14:33', actor: 'raalii_', event: 'order.created',           ref: '#0521', amount: 6800 },
      { t: '17:58:02', actor: 'Stripe', event: 'webhook.delivered',      ref: 'invoice.created', amount: 34.99 },
      { t: '17:42:18', actor: 'system', event: 'backup.completed',         ref: 'srv-1a2b3c', amount: null },
    ],
  },

  support: {
    tickets: [
      { id: 'T-1042', subject: "Lag pic à 21h tous les soirs", status: 'open',         priority: 'high',   updated: 'il y a 14 min', service: 'Hébergement' },
      { id: 'T-1041', subject: "Question sur SetupDataTables (chap. 04)", status: 'awaiting-client', priority: 'normal', updated: 'il y a 2 h',  service: 'Formations' },
      { id: 'T-1040', subject: "Facture avril manquante dans le PDF",   status: 'resolved',    priority: 'normal', updated: 'il y a 1 j',   service: 'Facturation' },
    ],
  },
};

window.DATA = DATA;
