Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 98 additions & 13 deletions en/index.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion en/roadmap/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ <h1 class="text-gradient mb-3">OKDP Roadmap</h1>
<div class="max-w-5xl mx-auto">
<div class="flex items-center gap-4 mb-10">
<h2 class="text-3xl font-bold">v1.0.0</h2>
<span class="px-4 py-1.5 bg-primary/10 text-primary font-semibold rounded-full text-sm">June 2026</span>
<span class="px-4 py-1.5 bg-primary/10 text-primary font-semibold rounded-full text-sm">September 2026</span>
</div>

<!-- Modules Data & IA -->
Expand Down
111 changes: 98 additions & 13 deletions index.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion roadmap/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ <h1 class="text-gradient mb-3">Roadmap OKDP</h1>
<div class="max-w-5xl mx-auto">
<div class="flex items-center gap-4 mb-10">
<h2 class="text-3xl font-bold">v1.0.0</h2>
<span class="px-4 py-1.5 bg-primary/10 text-primary font-semibold rounded-full text-sm">Juin 2026</span>
<span class="px-4 py-1.5 bg-primary/10 text-primary font-semibold rounded-full text-sm">Septembre 2026</span>
</div>

<!-- Modules Data & IA -->
Expand Down
15 changes: 12 additions & 3 deletions src/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,16 @@
"title": "Open Kubernetes Data Platform",
"subtitle": "A free, open-source and cloud-native data platform built on Kubernetes. Modular, sovereign, and community-driven.",
"ctaPrimary": "Get started",
"ctaSecondary": "Join Community"
"ctaSecondary": "Join Community",
"countdown": {
"label": "Release v1.0.0 — 14 September 2026",
"days": "Days",
"hours": "Hours",
"minutes": "Minutes",
"seconds": "Seconds",
"cta": "Discover the roadmap",
"done": "v1.0.0 available 🎉"
}
},
"stats": {
"contributors": "Contributors",
Expand Down Expand Up @@ -163,7 +172,7 @@
},
"roadmap": {
"title": "Roadmap",
"teaser": "First release <strong class=\"text-text\">v1.0.0</strong> planned for <strong class=\"text-text\">June 2026</strong>.",
"teaser": "First release <strong class=\"text-text\">v1.0.0</strong> planned for <strong class=\"text-text\">the 14th September 2026</strong>.",
"cta": "View the full roadmap"
},
"community": {
Expand Down Expand Up @@ -213,7 +222,7 @@
},
"v1": {
"title": "v1.0.0",
"date": "June 2026",
"date": "September 2026",
"modulesTitle": "Data & AI Modules",
"modulesSubtitle": "A catalog of reference open source tools. Usable individually or combined, without depending on the OKDP Control Plane (UI/Server).",
"categories": [
Expand Down
15 changes: 12 additions & 3 deletions src/locales/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,16 @@
"title": "Open Kubernetes Data Platform",
"subtitle": "Une plateforme de données cloud-native, libre et 100% open source. Modulaire, souveraine et propulsée par la communauté.",
"ctaPrimary": "Démarrer",
"ctaSecondary": "Rejoindre la communauté"
"ctaSecondary": "Rejoindre la communauté",
"countdown": {
"label": "Release v1.0.0 — 14 septembre 2026",
"days": "Jours",
"hours": "Heures",
"minutes": "Minutes",
"seconds": "Secondes",
"cta": "Découvrir la roadmap",
"done": "v1.0.0 disponible 🎉"
}
},
"stats": {
"contributors": "Contributeurs",
Expand Down Expand Up @@ -163,7 +172,7 @@
},
"roadmap": {
"title": "Roadmap",
"teaser": "Première release <strong class=\"text-text\">v1.0.0</strong> prévue pour <strong class=\"text-text\">Juin 2026</strong>.",
"teaser": "Première release <strong class=\"text-text\">v1.0.0</strong> prévue pour <strong class=\"text-text\">14 Septembre 2026</strong>.",
"cta": "Consulter la roadmap complète"
},
"community": {
Expand Down Expand Up @@ -213,7 +222,7 @@
},
"v1": {
"title": "v1.0.0",
"date": "Juin 2026",
"date": "Septembre 2026",
"modulesTitle": "Modules Data & IA",
"modulesSubtitle": "Un catalogue d'outils open source de référence. Utilisables unitairement ou combinés, sans dépendre du Control Plane OKDP (UI/Server).",
"categories": [
Expand Down
32 changes: 32 additions & 0 deletions src/partials/countdown.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<script>
(function () {
const root = document.getElementById('release-countdown');
if (!root) return;
const target = new Date(root.dataset.release).getTime();
const doneMsg = root.dataset.done || '';
const out = {
days: root.querySelector('[data-cd="days"]'),
hours: root.querySelector('[data-cd="hours"]'),
minutes: root.querySelector('[data-cd="minutes"]'),
seconds: root.querySelector('[data-cd="seconds"]'),
};
const label = root.querySelector('[data-cd-label]');
const pad = n => String(n).padStart(2, '0');
function tick() {
const diff = target - Date.now();
if (diff <= 0) {
out.days.textContent = out.hours.textContent = out.minutes.textContent = out.seconds.textContent = '00';
if (label && doneMsg) label.textContent = doneMsg;
clearInterval(timer);
return;
}
const s = Math.floor(diff / 1000);
out.days.textContent = Math.floor(s / 86400);
out.hours.textContent = pad(Math.floor((s % 86400) / 3600));
out.minutes.textContent = pad(Math.floor((s % 3600) / 60));
out.seconds.textContent = pad(s % 60);
}
tick();
const timer = setInterval(tick, 1000);
})();
</script>
69 changes: 57 additions & 12 deletions src/template.html
Original file line number Diff line number Diff line change
Expand Up @@ -38,18 +38,47 @@ <h1 class="text-gradient mb-6">{{ hero.title }}</h1>
{{ hero.ctaSecondary }}
</a>
</div>
<div class="grid grid-cols-3 gap-8 max-w-md mx-auto">
<div class="text-center">
<div class="text-3xl font-bold text-primary mb-1">7+</div>
<div class="text-sm text-text-light">{{ stats.contributors }}</div>
</div>
<div class="text-center">
<div class="text-3xl font-bold text-primary mb-1">~20</div>
<div class="text-sm text-text-light">{{ stats.downloads }}</div>
</div>
<div class="text-center">
<div class="text-3xl font-bold text-primary mb-1">2024</div>
<div class="text-sm text-text-light">{{ stats.started }}</div>

<!-- v1.0.0 Release Countdown -->
<div class="group relative max-w-2xl mx-auto mb-12" id="release-countdown" data-release="2026-09-24T00:00:00" data-done="{{ hero.countdown.done }}">
<span class="absolute -inset-6 rounded-[2.5rem] bg-[radial-gradient(circle_at_20%_30%,rgba(84,173,170,0.42),transparent_28%),radial-gradient(circle_at_80%_25%,rgba(65,144,141,0.3),transparent_30%),radial-gradient(circle_at_50%_100%,rgba(245,243,255,0.9),transparent_38%),linear-gradient(135deg,rgba(65,144,141,0.22),rgba(84,173,170,0.18),rgba(245,243,255,0.65))] blur-3xl"></span>
<span class="absolute -inset-[2px] rounded-[1.8rem] bg-gradient-to-r from-primary via-primary-light to-primary-dark opacity-95"></span>
<div class="relative overflow-hidden rounded-[1.7rem] bg-white/92 px-5 py-6 shadow-[0_30px_90px_-38px_rgba(65,144,141,0.95)] ring-1 ring-white/90 backdrop-blur sm:px-8 sm:py-7">
<div class="absolute inset-0 bg-[linear-gradient(135deg,rgba(255,255,255,0.92),rgba(255,255,255,0.78)_45%,rgba(240,244,248,0.98))]"></div>
<div class="absolute inset-x-10 top-0 h-px bg-gradient-to-r from-transparent via-white to-transparent opacity-90"></div>
<div class="absolute inset-x-8 -bottom-12 h-20 rounded-full bg-primary/10 blur-2xl"></div>
<div class="relative flex flex-col items-center gap-5">
<div class="inline-flex items-center gap-2.5 rounded-full border border-primary/15 bg-white/90 px-4 py-2.5 shadow-sm ring-1 ring-white/70">
<span class="relative inline-flex h-2.5 w-2.5 shrink-0 rounded-full bg-primary"></span>
<span class="text-sm font-bold tracking-[0.01em] text-primary-dark sm:text-[0.95rem]" data-cd-label>{{ hero.countdown.label }}</span>
</div>

<div class="grid w-full grid-cols-4 gap-2 sm:gap-3">
<div class="rounded-2xl border border-primary/10 bg-white/80 px-2 py-4 shadow-sm sm:px-3">
<span class="block text-4xl font-black leading-none tracking-tight text-text tabular-nums sm:text-5xl" data-cd="days">--</span>
<span class="mt-2 block text-[10px] font-bold uppercase tracking-[0.22em] text-text-light">{{ hero.countdown.days }}</span>
</div>
<div class="rounded-2xl border border-primary/10 bg-white/80 px-2 py-4 shadow-sm sm:px-3">
<span class="block text-4xl font-black leading-none tracking-tight text-text tabular-nums sm:text-5xl" data-cd="hours">--</span>
<span class="mt-2 block text-[10px] font-bold uppercase tracking-[0.22em] text-text-light">{{ hero.countdown.hours }}</span>
</div>
<div class="rounded-2xl border border-primary/10 bg-white/80 px-2 py-4 shadow-sm sm:px-3">
<span class="block text-4xl font-black leading-none tracking-tight text-text tabular-nums sm:text-5xl" data-cd="minutes">--</span>
<span class="mt-2 block text-[10px] font-bold uppercase tracking-[0.22em] text-text-light">{{ hero.countdown.minutes }}</span>
</div>
<div class="rounded-2xl border border-primary/10 bg-white/80 px-2 py-4 shadow-sm sm:px-3">
<span class="block text-4xl font-black leading-none tracking-tight text-primary tabular-nums sm:text-5xl" data-cd="seconds">--</span>
<span class="mt-2 block text-[10px] font-bold uppercase tracking-[0.22em] text-text-light">{{ hero.countdown.seconds }}</span>
</div>
</div>

<a href="{{ roadmapUrl }}" class="group/button inline-flex items-center justify-center gap-2 rounded-full bg-gradient-to-r from-primary to-primary-dark px-5 py-3 text-sm font-bold text-white shadow-md shadow-primary/20 transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-primary/40 focus:ring-offset-2" aria-label="{{ hero.countdown.cta }}">
<span>{{ hero.countdown.cta }}</span>
<svg class="h-4 w-4 transition-transform duration-200 group-hover:translate-x-1 group-hover/button:translate-x-1 hover:translate-x-1" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 5l7 7m0 0l-7 7m7-7H3"></path>
</svg>
</a>
</div>
</div>
</div>
</div>
Expand All @@ -70,6 +99,21 @@ <h2 class="mb-6">{{ about.title }}</h2>
</p>
</div>

<div class="grid grid-cols-3 gap-8 max-w-2xl mx-auto mb-16 py-8 border-y border-accent">
<div class="text-center">
<div class="text-3xl md:text-4xl font-bold text-primary mb-1">7+</div>
<div class="text-sm text-text-light">{{ stats.contributors }}</div>
</div>
<div class="text-center">
<div class="text-3xl md:text-4xl font-bold text-primary mb-1">~20</div>
<div class="text-sm text-text-light">{{ stats.downloads }}</div>
</div>
<div class="text-center">
<div class="text-3xl md:text-4xl font-bold text-primary mb-1">2024</div>
<div class="text-sm text-text-light">{{ stats.started }}</div>
</div>
</div>

<div class="mb-16">
<h3 class="text-2xl font-bold text-center mb-8">{{ why.title }}</h3>
<div class="grid md:grid-cols-3 gap-6">
Expand Down Expand Up @@ -274,6 +318,7 @@ <h2 class="mb-4">{{ tosit.title }}</h2>
</div>

{{> scripts }}
{{> countdown }}
</body>

</html>
Loading