nexuscore / index.html
docto41's picture
Add 2 files
2d9a0c8 verified
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>NexusCore - Plateforme Gaming Autonome</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400;500;700;900&family=Rajdhani:wght@300;500;700&display=swap');
:root {
--primary: #00f0ff;
--secondary: #ff2d7b;
--dark: #0a0a1a;
--darker: #050510;
}
body {
font-family: 'Rajdhani', sans-serif;
background-color: var(--darker);
color: white;
overflow-x: hidden;
}
.font-orbitron {
font-family: 'Orbitron', sans-serif;
}
.neon-text {
text-shadow: 0 0 5px var(--primary), 0 0 10px var(--primary), 0 0 20px var(--secondary);
}
.gradient-text {
background: linear-gradient(90deg, var(--primary), var(--secondary));
-webkit-background-clip: text;
background-clip: text;
color: transparent;
}
.gradient-bg {
background: linear-gradient(135deg, var(--primary), var(--secondary));
}
.game-card:hover {
transform: translateY(-10px) scale(1.02);
box-shadow: 0 25px 50px -12px rgba(0, 240, 255, 0.3);
}
.glow {
box-shadow: 0 0 20px rgba(0, 240, 255, 0.7);
}
.holographic {
background: linear-gradient(135deg, rgba(0, 240, 255, 0.1), rgba(255, 45, 123, 0.1));
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.2);
}
.cyber-border {
position: relative;
overflow: hidden;
}
.cyber-border::before {
content: '';
position: absolute;
inset: 0;
border-radius: inherit;
padding: 2px;
background: linear-gradient(135deg, var(--primary), var(--secondary));
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
-webkit-mask-composite: xor;
mask-composite: exclude;
pointer-events: none;
}
.scanline {
position: relative;
overflow: hidden;
}
.scanline::after {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(
to bottom,
transparent 0%,
rgba(0, 240, 255, 0.1) 10%,
transparent 20%,
rgba(255, 45, 123, 0.1) 30%,
transparent 40%,
rgba(0, 240, 255, 0.1) 50%,
transparent 60%,
rgba(255, 45, 123, 0.1) 70%,
transparent 80%,
rgba(0, 240, 255, 0.1) 90%,
transparent 100%
);
animation: scan 8s linear infinite;
pointer-events: none;
}
@keyframes scan {
0% { transform: translateY(-100%); }
100% { transform: translateY(100%); }
}
@keyframes pulse {
0% { opacity: 1; }
50% { opacity: 0.5; }
100% { opacity: 1; }
}
@keyframes float {
0% { transform: translateY(0px); }
50% { transform: translateY(-10px); }
100% { transform: translateY(0px); }
}
.floating {
animation: float 6s ease-in-out infinite;
}
.terminal-text {
font-family: 'Courier New', monospace;
color: #00ff00;
text-shadow: 0 0 5px #00ff00;
}
.typewriter {
overflow: hidden;
border-right: .15em solid var(--primary);
white-space: nowrap;
animation: typing 3.5s steps(40, end), blink-caret .75s step-end infinite;
}
@keyframes typing {
from { width: 0 }
to { width: 100% }
}
@keyframes blink-caret {
from, to { border-color: transparent }
50% { border-color: var(--primary) }
}
.scrollbar-hide::-webkit-scrollbar {
display: none;
}
.scrollbar-hide {
-ms-overflow-style: none;
scrollbar-width: none;
}
.skeleton {
animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
background-color: rgba(255, 255, 255, 0.1);
border-radius: 0.25rem;
}
</style>
</head>
<body class="min-h-screen scanline">
<!-- Navigation -->
<nav class="bg-black/80 backdrop-blur-md border-b border-gray-800 fixed w-full z-50">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex items-center justify-between h-16">
<div class="flex items-center">
<div class="flex-shrink-0">
<span class="font-orbitron text-2xl font-bold neon-text">NEXUS<span class="text-white">CORE</span></span>
</div>
<div class="hidden md:block">
<div class="ml-10 flex items-baseline space-x-4">
<a href="#" class="text-white hover:text-cyan-300 px-3 py-2 rounded-md text-sm font-medium flex items-center">
<i class="fas fa-home mr-1"></i> Hub
</a>
<a href="#" class="text-gray-300 hover:text-cyan-300 px-3 py-2 rounded-md text-sm font-medium flex items-center">
<i class="fas fa-gamepad mr-1"></i> Jeux
</a>
<a href="#" class="text-gray-300 hover:text-cyan-300 px-3 py-2 rounded-md text-sm font-medium flex items-center">
<i class="fas fa-users mr-1"></i> NexusNet
</a>
<a href="#" class="text-gray-300 hover:text-cyan-300 px-3 py-2 rounded-md text-sm font-medium flex items-center">
<i class="fas fa-robot mr-1"></i> AI Assist
</a>
</div>
</div>
</div>
<div class="hidden md:block">
<div class="ml-4 flex items-center md:ml-6">
<div class="relative">
<input type="text" placeholder="Recherche neuronale..." class="bg-gray-900/50 border border-gray-700 rounded-full px-4 py-1 text-sm focus:outline-none focus:ring-2 focus:ring-cyan-500 focus:border-transparent w-64 terminal-text">
<button class="absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400">
<i class="fas fa-search"></i>
</button>
</div>
<div class="ml-4 relative">
<div class="h-8 w-8 rounded-full gradient-bg flex items-center justify-center cursor-pointer">
<i class="fas fa-user-astronaut text-white"></i>
</div>
</div>
</div>
</div>
<div class="-mr-2 flex md:hidden">
<button type="button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none" aria-controls="mobile-menu" aria-expanded="false">
<span class="sr-only">Open main menu</span>
<i class="fas fa-bars"></i>
</button>
</div>
</div>
</div>
</nav>
<!-- AI Assistant Panel -->
<div class="fixed bottom-24 right-6 z-50 w-72 bg-gray-900/90 border border-cyan-500/30 rounded-lg shadow-2xl overflow-hidden transform transition-all duration-300" id="aiPanel">
<div class="gradient-bg px-4 py-3 flex justify-between items-center">
<div class="flex items-center">
<i class="fas fa-robot mr-2 text-white"></i>
<span class="font-orbitron text-sm">NEXUS AI ASSISTANT</span>
</div>
<div class="flex items-center">
<div class="h-2 w-2 rounded-full bg-green-500 mr-1 animate-pulse"></div>
<span class="text-xs">ACTIVE</span>
</div>
</div>
<div class="p-4 h-48 overflow-y-auto terminal-text text-sm" id="aiChat">
<p>> Système NexusCore initialisé</p>
<p>> Connexion établie avec la base de jeux</p>
<p>> Analyse des préférences utilisateur...</p>
<p>> Chargement des recommandations personnalisées</p>
<p class="typewriter">Bonjour joueur. Comment puis-je vous aider aujourd'hui?</p>
</div>
<div class="border-t border-gray-800 p-3">
<div class="relative">
<input type="text" placeholder="Tapez votre requête..." class="w-full bg-gray-800/50 border border-gray-700 rounded-full px-4 py-2 text-sm focus:outline-none focus:ring-1 focus:ring-cyan-500 focus:border-transparent terminal-text">
<button class="absolute right-3 top-1/2 transform -translate-y-1/2 text-cyan-400">
<i class="fas fa-paper-plane"></i>
</button>
</div>
</div>
</div>
<!-- Main Content -->
<main class="pt-20 pb-16">
<!-- Hero Section -->
<section class="relative py-16 overflow-hidden">
<div class="absolute inset-0 overflow-hidden">
<div class="absolute inset-0 bg-gradient-to-b from-black/90 via-black/70 to-black/90 z-10"></div>
<video autoplay muted loop class="w-full h-full object-cover">
<source src="https://cdn.akamai.steamstatic.com/steam/public/clusters/gametrailers/webm/steam_deck_oled_hero_loop.webm" type="video/webm">
</video>
</div>
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 relative z-20">
<div class="lg:grid lg:grid-cols-12 lg:gap-8">
<div class="sm:text-center md:max-w-2xl md:mx-auto lg:col-span-7 lg:text-left">
<h1 class="text-4xl tracking-tight font-extrabold text-white sm:text-5xl md:text-6xl font-orbitron">
<span class="block">PLATEFORME DE JEUX</span>
<span class="block gradient-text">AUTO-PILOTÉE</span>
</h1>
<p class="mt-3 text-base text-gray-300 sm:mt-5 sm:text-lg sm:max-w-xl sm:mx-auto md:mt-5 md:text-xl lg:mx-0">
NexusCore analyse vos préférences en temps réel pour optimiser votre expérience gaming avec notre IA neuronale.
</p>
<div class="mt-8 sm:max-w-lg sm:mx-auto sm:text-center lg:text-left lg:mx-0">
<div class="flex flex-col sm:flex-row space-y-3 sm:space-y-0 sm:space-x-4">
<button class="gradient-bg hover:opacity-90 text-white font-bold py-3 px-8 rounded-full flex items-center justify-center transition-all duration-300 hover:scale-105">
<i class="fas fa-rocket mr-2"></i> Explorer la Matrice
</button>
<button class="bg-white/10 hover:bg-white/20 text-white font-bold py-3 px-8 rounded-full flex items-center justify-center border border-white/20 transition-all duration-300 hover:scale-105">
<i class="fas fa-terminal mr-2"></i> Accès Direct
</button>
</div>
</div>
</div>
<div class="mt-12 relative sm:max-w-lg sm:mx-auto lg:mt-0 lg:max-w-none lg:mx-0 lg:col-span-5 lg:flex lg:items-center floating">
<div class="cyber-border rounded-xl overflow-hidden w-full h-96 lg:h-auto lg:aspect-w-16 lg:aspect-h-9">
<div class="holographic h-full flex items-center justify-center p-8">
<div class="text-center">
<div class="h-16 w-16 gradient-bg rounded-full flex items-center justify-center mx-auto mb-4">
<i class="fas fa-gamepad text-white text-2xl"></i>
</div>
<h3 class="font-orbitron text-xl mb-2">JEU DU MOMENT</h3>
<p class="text-3xl font-bold mb-4" id="featuredGameTitle">Chargement...</p>
<div class="w-full bg-gray-800 rounded-full h-2.5 mb-4">
<div class="gradient-bg h-2.5 rounded-full" style="width: 87%" id="featuredGameRating"></div>
</div>
<p class="text-sm text-gray-300 mb-6">Compatibilité neuronale: <span id="featuredGameCompatibility">94%</span></p>
<button class="gradient-bg hover:opacity-90 text-white font-bold py-2 px-6 rounded-full text-sm flex items-center mx-auto">
<i class="fas fa-bolt mr-2"></i> Lancer en Cloud
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Game Database Section -->
<section class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 mt-16">
<div class="cyber-border rounded-xl overflow-hidden">
<div class="gradient-bg px-6 py-4 flex justify-between items-center">
<div class="flex items-center">
<i class="fas fa-database mr-3 text-white"></i>
<h2 class="font-orbitron text-xl">BASE DE JEUX NEXUS</h2>
</div>
<div class="flex items-center">
<span class="text-xs bg-black/30 px-2 py-1 rounded-full mr-3">
<span class="h-2 w-2 rounded-full bg-green-500 inline-block mr-1"></span>
SYNC: 100%
</span>
<span class="text-xs">Dernière mise à jour: <span class="font-mono">NOW</span></span>
</div>
</div>
<div class="bg-gray-900/50 p-6">
<!-- Game Categories -->
<div class="flex overflow-x-auto pb-4 scrollbar-hide space-x-3 mb-6">
<button class="flex-shrink-0 gradient-bg text-white text-xs font-bold px-4 py-2 rounded-full" data-filter="all">
Tous les jeux
</button>
<button class="flex-shrink-0 bg-gray-800 hover:bg-gray-700 text-white text-xs font-bold px-4 py-2 rounded-full" data-filter="popular">
<i class="fas fa-fire mr-1"></i> Tendance
</button>
<button class="flex-shrink-0 bg-gray-800 hover:bg-gray-700 text-white text-xs font-bold px-4 py-2 rounded-full" data-filter="released">
<i class="fas fa-star mr-1"></i> Nouveautés
</button>
<button class="flex-shrink-0 bg-gray-800 hover:bg-gray-700 text-white text-xs font-bold px-4 py-2 rounded-full" data-filter="pc">
<i class="fas fa-desktop mr-1"></i> PC
</button>
<button class="flex-shrink-0 bg-gray-800 hover:bg-gray-700 text-white text-xs font-bold px-4 py-2 rounded-full" data-filter="action">
<i class="fas fa-running mr-1"></i> Action
</button>
<button class="flex-shrink-0 bg-gray-800 hover:bg-gray-700 text-white text-xs font-bold px-4 py-2 rounded-full" data-filter="rpg">
<i class="fas fa-dragon mr-1"></i> RPG
</button>
</div>
<!-- Games Grid -->
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6" id="gameGrid">
<!-- Skeleton loading -->
<div class="game-card bg-gray-900 rounded-lg overflow-hidden h-full">
<div class="skeleton h-48 w-full"></div>
<div class="p-4">
<div class="skeleton h-6 w-3/4 mb-2"></div>
<div class="skeleton h-4 w-1/2 mb-4"></div>
<div class="skeleton h-4 w-full mb-4"></div>
<div class="skeleton h-8 w-full rounded-full"></div>
</div>
</div>
<div class="game-card bg-gray-900 rounded-lg overflow-hidden h-full">
<div class="skeleton h-48 w-full"></div>
<div class="p-4">
<div class="skeleton h-6 w-3/4 mb-2"></div>
<div class="skeleton h-4 w-1/2 mb-4"></div>
<div class="skeleton h-4 w-full mb-4"></div>
<div class="skeleton h-8 w-full rounded-full"></div>
</div>
</div>
<div class="game-card bg-gray-900 rounded-lg overflow-hidden h-full">
<div class="skeleton h-48 w-full"></div>
<div class="p-4">
<div class="skeleton h-6 w-3/4 mb-2"></div>
<div class="skeleton h-4 w-1/2 mb-4"></div>
<div class="skeleton h-4 w-full mb-4"></div>
<div class="skeleton h-8 w-full rounded-full"></div>
</div>
</div>
<div class="game-card bg-gray-900 rounded-lg overflow-hidden h-full">
<div class="skeleton h-48 w-full"></div>
<div class="p-4">
<div class="skeleton h-6 w-3/4 mb-2"></div>
<div class="skeleton h-4 w-1/2 mb-4"></div>
<div class="skeleton h-4 w-full mb-4"></div>
<div class="skeleton h-8 w-full rounded-full"></div>
</div>
</div>
</div>
<div class="mt-8 flex justify-center">
<button id="loadMoreBtn" class="gradient-bg hover:opacity-90 text-white font-bold py-2 px-6 rounded-full flex items-center">
<i class="fas fa-sync-alt mr-2"></i> Charger plus de jeux
</button>
</div>
</div>
</div>
</section>
<!-- AI Recommendations -->
<section class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 mt-16">
<div class="cyber-border rounded-xl overflow-hidden">
<div class="gradient-bg px-6 py-4">
<div class="flex items-center">
<i class="fas fa-brain mr-3 text-white"></i>
<h2 class="font-orbitron text-xl">RECOMMANDATIONS NEURONALES</h2>
</div>
<div class="mt-2 text-xs">
<span class="font-mono">> Analyse comportementale complète. Adaptation en temps réel.</span>
</div>
</div>
<div class="bg-gray-900/50 p-6">
<div class="flex overflow-x-auto pb-4 scrollbar-hide space-x-4" id="recommendations">
<!-- Skeleton loading -->
<div class="flex-shrink-0 w-64 game-card bg-gray-900 rounded-lg overflow-hidden">
<div class="skeleton h-36 w-full"></div>
<div class="p-4">
<div class="skeleton h-5 w-3/4 mb-3"></div>
<div class="skeleton h-8 w-full rounded-full"></div>
</div>
</div>
<div class="flex-shrink-0 w-64 game-card bg-gray-900 rounded-lg overflow-hidden">
<div class="skeleton h-36 w-full"></div>
<div class="p-4">
<div class="skeleton h-5 w-3/4 mb-3"></div>
<div class="skeleton h-8 w-full rounded-full"></div>
</div>
</div>
<div class="flex-shrink-0 w-64 game-card bg-gray-900 rounded-lg overflow-hidden">
<div class="skeleton h-36 w-full"></div>
<div class="p-4">
<div class="skeleton h-5 w-3/4 mb-3"></div>
<div class="skeleton h-8 w-full rounded-full"></div>
</div>
</div>
<div class="flex-shrink-0 w-64 game-card bg-gray-900 rounded-lg overflow-hidden">
<div class="skeleton h-36 w-full"></div>
<div class="p-4">
<div class="skeleton h-5 w-3/4 mb-3"></div>
<div class="skeleton h-8 w-full rounded-full"></div>
</div>
</div>
</div>
<div class="mt-6 text-center">
<p class="text-gray-400 text-sm">Ces recommandations évoluent en fonction de vos sessions de jeu</p>
</div>
</div>
</div>
</section>
<!-- Cloud Gaming -->
<section class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 mt-16">
<div class="cyber-border rounded-xl overflow-hidden">
<div class="gradient-bg px-6 py-4 flex justify-between items-center">
<div class="flex items-center">
<i class="fas fa-cloud mr-3 text-white"></i>
<h2 class="font-orbitron text-xl">NEXUS CLOUD GAMING</h2>
</div>
<div class="flex items-center">
<span class="text-xs bg-black/30 px-2 py-1 rounded-full mr-2">
<span class="h-2 w-2 rounded-full bg-green-500 inline-block mr-1"></span>
SERVEURS: ONLINE
</span>
<span class="text-xs">Latence: <span class="font-mono">8ms</span></span>
</div>
</div>
<div class="bg-gray-900/50 p-6">
<div class="lg:grid lg:grid-cols-3 lg:gap-8">
<div class="lg:col-span-2">
<h3 class="text-xl font-bold mb-4">Jouez instantanément sur n'importe quel appareil</h3>
<p class="text-gray-300 mb-6">
Notre technologie de streaming cloud vous permet d'accéder à votre bibliothèque complète sans téléchargement.
L'IA optimise automatiquement les paramètres pour votre connexion.
</p>
<div class="grid grid-cols-2 gap-4 mb-6">
<div class="bg-gray-800/50 border border-gray-700 rounded-lg p-4">
<div class="flex items-center mb-2">
<div class="h-8 w-8 rounded-full bg-cyan-500/10 flex items-center justify-center mr-2">
<i class="fas fa-tachometer-alt text-cyan-400"></i>
</div>
<span class="font-bold">Performance</span>
</div>
<p class="text-xs text-gray-400">120 FPS / 4K HDR</p>
</div>
<div class="bg-gray-800/50 border border-gray-700 rounded-lg p-4">
<div class="flex items-center mb-2">
<div class="h-8 w-8 rounded-full bg-purple-500/10 flex items-center justify-center mr-2">
<i class="fas fa-globe-americas text-purple-400"></i>
</div>
<span class="font-bold">Couverture</span>
</div>
<p class="text-xs text-gray-400">25 centres de données</p>
</div>
</div>
<button class="gradient-bg hover:opacity-90 text-white font-bold py-3 px-6 rounded-full flex items-center">
<i class="fas fa-play mr-2"></i> Essayer maintenant
</button>
</div>
<div class="mt-8 lg:mt-0">
<div class="holographic rounded-lg p-6 h-full">
<h4 class="font-orbitron mb-4">VOS JEUX CLOUD</h4>
<div class="space-y-4" id="cloudGames">
<div class="flex items-center">
<div class="h-10 w-10 rounded-full bg-gray-800 flex items-center justify-center mr-3">
<i class="fas fa-gamepad"></i>
</div>
<div class="flex-1">
<p class="font-bold">Cyberpunk 2077</p>
<div class="w-full bg-gray-700 rounded-full h-1.5">
<div class="gradient-bg h-1.5 rounded-full" style="width: 75%"></div>
</div>
</div>
</div>
<div class="flex items-center">
<div class="h-10 w-10 rounded-full bg-gray-800 flex items-center justify-center mr-3">
<i class="fas fa-gamepad"></i>
</div>
<div class="flex-1">
<p class="font-bold">Elden Ring</p>
<div class="w-full bg-gray-700 rounded-full h-1.5">
<div class="gradient-bg h-1.5 rounded-full" style="width: 92%"></div>
</div>
</div>
</div>
<div class="flex items-center">
<div class="h-10 w-10 rounded-full bg-gray-800 flex items-center justify-center mr-3">
<i class="fas fa-gamepad"></i>
</div>
<div class="flex-1">
<p class="font-bold">Starfield</p>
<div class="w-full bg-gray-700 rounded-full h-1.5">
<div class="gradient-bg h-1.5 rounded-full" style="width: 68%"></div>
</div>
</div>
</div>
</div>
<div class="mt-6 pt-4 border-t border-gray-700">
<p class="text-xs text-gray-400">Stockage cloud disponible: <span class="font-bold text-white">1.2TB</span></p>
<div class="w-full bg-gray-700 rounded-full h-2 mt-2">
<div class="gradient-bg h-2 rounded-full" style="width: 45%"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
</main>
<!-- Footer -->
<footer class="bg-black/80 backdrop-blur-md border-t border-gray-800 mt-16">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12">
<div class="grid grid-cols-2 md:grid-cols-4 gap-8">
<div>
<h3 class="text-white font-bold mb-4 font-orbitron">NEXUSCORE</h3>
<ul class="space-y-2">
<li><a href="#" class="text-gray-400 hover:text-white text-sm">À propos</a></li>
<li><a href="#" class="text-gray-400 hover:text-white text-sm">Technologie</a></li>
<li><a href="#" class="text-gray-400 hover:text-white text-sm">Carrières</a></li>
<li><a href="#" class="text-gray-400 hover:text-white text-sm">Presse</a></li>
</ul>
</div>
<div>
<h3 class="text-white font-bold mb-4 font-orbitron">ASSISTANCE</h3>
<ul class="space-y-2">
<li><a href="#" class="text-gray-400 hover:text-white text-sm">Centre d'aide</a></li>
<li><a href="#" class="text-gray-400 hover:text-white text-sm">Statut des serveurs</a></li>
<li><a href="#" class="text-gray-400 hover:text-white text-sm">FAQ</a></li>
<li><a href="#" class="text-gray-400 hover:text-white text-sm">Nous contacter</a></li>
</ul>
</div>
<div>
<h3 class="text-white font-bold mb-4 font-orbitron">LÉGAL</h3>
<ul class="space-y-2">
<li><a href="#" class="text-gray-400 hover:text-white text-sm">Conditions d'utilisation</a></li>
<li><a href="#" class="text-gray-400 hover:text-white text-sm">Confidentialité</a></li>
<li><a href="#" class="text-gray-400 hover:text-white text-sm">Cookies</a></li>
<li><a href="#" class="text-gray-400 hover:text-white text-sm">Copyright</a></li>
</ul>
</div>
<div>
<h3 class="text-white font-bold mb-4 font-orbitron">CONNECTER</h3>
<div class="flex space-x-4 mb-4">
<a href="#" class="text-gray-400 hover:text-white">
<i class="fab fa-twitter"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white">
<i class="fab fa-discord"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white">
<i class="fab fa-youtube"></i>
</a>
<a href="#" class="text-gray-400 hover:text-white">
<i class="fab fa-twitch"></i>
</a>
</div>
<div class="mt-6">
<p class="text-gray-400 text-sm mb-2">Télécharger l'app</p>
<div class="flex space-x-2">
<button class="bg-black text-white px-3 py-1 rounded flex items-center text-xs">
<i class="fab fa-apple mr-1"></i> iOS
</button>
<button class="bg-black text-white px-3 py-1 rounded flex items-center text-xs">
<i class="fab fa-android mr-1"></i> Android
</button>
</div>
</div>
</div>
</div>
<div class="mt-12 pt-8 border-t border-gray-800 flex flex-col md:flex-row justify-between items-center">
<div class="flex items-center">
<span class="font-orbitron text-xl font-bold gradient-text">NEXUS<span class="text-white">CORE</span></span>
<span class="text-gray-400 text-sm ml-4">© 2023 Nexus Technologies. Tous droits réservés.</span>
</div>
<div class="mt-4 md:mt-0">
<span class="text-gray-400 text-sm">Version système: <span class="font-mono">NEXUS-OS v4.2.1</span></span>
</div>
</div>
</div>
</footer>
<!-- Game Database -->
<script>
// Configuration de l'API RAWG
const API_KEY = 'd4e5b8d7b5a84f4c8a5e0a3e3e3e3e3'; // Clé API publique (peut être limitée)
const API_URL = 'https://api.rawg.io/api/games';
// Variables pour la pagination
let currentPage = 1;
let isLoading = false;
// Fonction pour formater la date
function formatDate(dateString) {
const options = { year: 'numeric', month: 'short', day: 'numeric' };
return new Date(dateString).toLocaleDateString('fr-FR', options);
}
// Fonction pour obtenir un prix aléatoire
function getRandomPrice() {
const prices = [0, 9.99, 19.99, 29.99, 39.99, 49.99, 59.99];
return prices[Math.floor(Math.random() * prices.length)];
}
// Fonction pour obtenir une remise aléatoire
function getRandomDiscount() {
return Math.random() > 0.7 ? Math.floor(Math.random() * 60) + 10 : 0;
}
// Fonction pour obtenir une note aléatoire
function getRandomRating() {
return (Math.random() * 2 + 3).toFixed(1);
}
// Fonction pour obtenir une compatibilité aléatoire
function getRandomCompatibility() {
return Math.floor(Math.random() * 15) + 85;
}
// Fonction pour charger les jeux depuis l'API
async function fetchGames(page = 1, filter = '') {
try {
isLoading = true;
// Afficher le chargement
if (page === 1) {
document.getElementById('gameGrid').innerHTML = `
<div class="game-card bg-gray-900 rounded-lg overflow-hidden h-full">
<div class="skeleton h-48 w-full"></div>
<div class="p-4">
<div class="skeleton h-6 w-3/4 mb-2"></div>
<div class="skeleton h-4 w-1/2 mb-4"></div>
<div class="skeleton h-4 w-full mb-4"></div>
<div class="skeleton h-8 w-full rounded-full"></div>
</div>
</div>
`.repeat(4);
}
let url = `${API_URL}?key=${API_KEY}&page=${page}&page_size=8`;
// Ajouter des filtres si spécifiés
if (filter) {
switch(filter) {
case 'popular':
url += '&ordering=-rating';
break;
case 'released':
url += '&ordering=-released';
break;
case 'pc':
url += '&platforms=4';
break;
case 'action':
url += '&genres=4';
break;
case 'rpg':
url += '&genres=5';
break;
}
}
const response = await fetch(url);
const data = await response.json();
// Afficher les jeux
displayGames(data.results, page === 1);
// Mettre à jour la page courante
currentPage = page;
isLoading = false;
return data;
} catch (error) {
console.error('Erreur lors du chargement des jeux:', error);
isLoading = false;
// Afficher un message d'erreur
if (page === 1) {
document.getElementById('gameGrid').innerHTML = `
<div class="col-span-4 text-center py-8">
<i class="fas fa-exclamation-triangle text-yellow-500 text-4xl mb-4"></i>
<h3 class="text-xl font-bold mb-2">Erreur de chargement</h3>
<p class="text-gray-400">Impossible de charger les jeux. Veuillez réessayer plus tard.</p>
<button onclick="fetchGames()" class="mt-4 gradient-bg hover:opacity-90 text-white font-bold py-2 px-6 rounded-full">
<i class="fas fa-sync-alt mr-2"></i> Réessayer
</button>
</div>
`;
}
}
}
// Fonction pour afficher les jeux
function displayGames(games, clear = true) {
const gameGrid = document.getElementById('gameGrid');
if (clear) {
gameGrid.innerHTML = '';
}
games.forEach(game => {
const price = getRandomPrice();
const discount = getRandomDiscount();
const rating = getRandomRating();
const compatibility = getRandomCompatibility();
gameGrid.innerHTML += `
<div class="game-card bg-gray-900 rounded-lg overflow-hidden transition-all duration-300 ease-in-out cursor-pointer h-full" data-genres="${game.genres.map(g => g.id).join(',')}" data-platforms="${game.platforms.map(p => p.platform.id).join(',')}">
<div class="relative">
<img src="${game.background_image || 'https://via.placeholder.com/400x225?text=No+Image'}" alt="${game.name}" class="w-full h-48 object-cover">
${discount > 0 ? `<div class="absolute top-2 right-2 bg-black/80 text-white text-xs px-2 py-1 rounded">-${discount}%</div>` : ''}
${price === 0 ? `<div class="absolute top-2 left-2 bg-green-600/80 text-white text-xs px-2 py-1 rounded">GRATUIT</div>` : ''}
</div>
<div class="p-4">
<h3 class="text-white font-bold">${game.name}</h3>
<p class="text-gray-400 text-xs mb-2">${game.released ? formatDate(game.released) : 'Date inconnue'}</p>
<div class="flex items-center mt-1">
<div class="flex">
${Array.from({length: 5}, (_, i) =>
i < Math.floor(rating) ?
`<i class="fas fa-star text-yellow-400 text-xs"></i>` :
(i < rating ? `<i class="fas fa-star-half-alt text-yellow-400 text-xs"></i>` : `<i class="far fa-star text-yellow-400 text-xs"></i>`)
).join('')}
</div>
<span class="text-gray-400 text-xs ml-1">(${rating})</span>
</div>
<div class="flex justify-between items-center mt-3">
<div>
${discount > 0 ? `<span class="text-gray-400 line-through text-sm">${(price / (1 - discount/100)).toFixed(2)}€</span>` : ''}
<span class="text-white font-bold ml-2">${price > 0 ? `${price.toFixed(2)}€` : 'Gratuit'}</span>
</div>
<button class="text-xs gradient-bg hover:opacity-90 text-white px-3 py-1 rounded-full">
${price > 0 ? 'Ajouter' : 'Jouer'}
</button>
</div>
</div>
</div>
`;
});
// Ajouter des effets hover aux cartes de jeu
document.querySelectorAll('.game-card').forEach(card => {
card.addEventListener('mouseenter', () => {
card.classList.add('glow');
});
card.addEventListener('mouseleave', () => {
card.classList.remove('glow');
});
});
}
// Fonction pour charger les recommandations
async function fetchRecommendations() {
try {
// Afficher le chargement
document.getElementById('recommendations').innerHTML = `
<div class="flex-shrink-0 w-64 game-card bg-gray-900 rounded-lg overflow-hidden">
<div class="skeleton h-36 w-full"></div>
<div class="p-4">
<div class="skeleton h-5 w-3/4 mb-3"></div>
<div class="skeleton h-8 w-full rounded-full"></div>
</div>
</div>
`.repeat(4);
// Charger des jeux populaires comme recommandations
const response = await fetch(`${API_URL}?key=${API_KEY}&page=1&page_size=6&ordering=-rating`);
const data = await response.json();
// Afficher les recommandations
displayRecommendations(data.results.slice(0, 4));
} catch (error) {
console.error('Erreur lors du chargement des recommandations:', error);
document.getElementById('recommendations').innerHTML = `
<div class="col-span-4 text-center py-8">
<i class="fas fa-exclamation-triangle text-yellow-500 text-4xl mb-4"></i>
<p class="text-gray-400">Les recommandations ne sont pas disponibles pour le moment.</p>
</div>
`;
}
}
// Fonction pour afficher les recommandations
function displayRecommendations(games) {
const recommendationsGrid = document.getElementById('recommendations');
recommendationsGrid.innerHTML = '';
games.forEach(game => {
const compatibility = getRandomCompatibility();
recommendationsGrid.innerHTML += `
<div class="flex-shrink-0 w-64 game-card bg-gray-900 rounded-lg overflow-hidden transition-all duration-300 ease-in-out cursor-pointer">
<div class="relative">
<img src="${game.background_image || 'https://via.placeholder.com/400x225?text=No+Image'}" alt="${game.name}" class="w-full h-36 object-cover">
<div class="absolute top-2 left-2 bg-cyan-600/80 text-white text-xs px-2 py-1 rounded">
<i class="fas fa-brain mr-1"></i> ${compatibility}%
</div>
</div>
<div class="p-4">
<h3 class="text-white font-bold text-sm">${game.name}</h3>
<div class="flex justify-between items-center mt-3">
<div>
<span class="text-white font-bold text-sm">${getRandomPrice() > 0 ? `${getRandomPrice().toFixed(2)}€` : 'Gratuit'}</span>
</div>
<button class="text-xs gradient-bg hover:opacity-90 text-white px-3 py-1 rounded-full">
<i class="fas fa-bolt mr-1"></i> Démarrer
</button>
</div>
</div>
</div>
`;
});
}
// Fonction pour charger le jeu vedette
async function fetchFeaturedGame() {
try {
// Charger un jeu très bien noté comme vedette
const response = await fetch(`${API_URL}?key=${API_KEY}&page=1&page_size=1&ordering=-rating`);
const data = await response.json();
if (data.results.length > 0) {
const featuredGame = data.results[0];
const rating = (featuredGame.rating * 20).toFixed(0);
document.getElementById('featuredGameTitle').textContent = featuredGame.name;
document.getElementById('featuredGameRating').style.width = `${rating}%`;
document.getElementById('featuredGameCompatibility').textContent = `${getRandomCompatibility()}%`;
}
} catch (error) {
console.error('Erreur lors du chargement du jeu vedette:', error);
}
}
// Initialisation
document.addEventListener('DOMContentLoaded', () => {
// Charger les jeux, recommandations et jeu vedette
fetchGames();
fetchRecommendations();
fetchFeaturedGame();
// Gestion du bouton "Charger plus"
document.getElementById('loadMoreBtn').addEventListener('click', () => {
if (!isLoading) {
fetchGames(currentPage + 1);
}
});
// Gestion des filtres
document.querySelectorAll('[data-filter]').forEach(button => {
button.addEventListener('click', () => {
// Mettre en surbrillance le bouton actif
document.querySelectorAll('[data-filter]').forEach(btn => {
btn.classList.remove('gradient-bg');
btn.classList.add('bg-gray-800', 'hover:bg-gray-700');
});
button.classList.add('gradient-bg');
button.classList.remove('bg-gray-800', 'hover:bg-gray-700');
// Charger les jeux avec le filtre
fetchGames(1, button.dataset.filter);
});
});
// Simuler les métriques système
setInterval(() => {
const latency = Math.floor(Math.random() * 5) + 5;
document.querySelectorAll('.font-mono').forEach(el => {
if (el.textContent.includes('ms')) {
el.textContent = `${latency}ms`;
}
});
}, 3000);
// AI Panel interaction
const aiPanel = document.getElementById('aiPanel');
const aiChat = document.getElementById('aiChat');
// Simulate AI typing
setTimeout(() => {
aiChat.innerHTML += `<p>> Préparation des recommandations...</p>`;
}, 3000);
setTimeout(() => {
aiChat.innerHTML += `<p>> Optimisation des paramètres système</p>`;
}, 6000);
setTimeout(() => {
aiChat.innerHTML += `<p class="typewriter">Votre session est optimisée. Bon jeu!</p>`;
}, 9000);
});
</script>
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=docto41/nexuscore" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>