@nextblock-cms/db 0.21.2 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -47
- package/package.json +1 -1
- package/supabase/functions/nextblock-migration-ingest/index.ts +8 -8
- package/supabase/migrations/02000_catchup_gen1.sql +5880 -5880
- package/supabase/migrations/02001_baseline_schema.sql +2734 -2734
- package/supabase/migrations/02002_baseline_constraints_and_indexes.sql +1262 -1262
- package/supabase/migrations/02003_baseline_security_and_grants.sql +1577 -1577
- package/supabase/migrations/02004_baseline_seed.sql +565 -565
- package/supabase/migrations/02005_home_live_demo_promo_cadence_15min.sql +53 -53
- package/supabase/migrations/02006_home_marketing_contrast.sql +56 -56
- package/supabase/migrations/02007_home_pillar_caption_contrast.sql +44 -44
- package/supabase/migrations/02008_home_fr_parity.sql +89 -89
- package/supabase/migrations/02009_fr_cortex_posts.sql +67 -67
- package/supabase/migrations/02010_shop_hero_redesign.sql +72 -72
- package/supabase/migrations/02011_drop_backdrop_blur_on_pages.sql +26 -26
- package/supabase/migrations/02012_drop_variant_backdrop_blur.sql +17 -17
- package/supabase/migrations/02013_advisor_rls_and_trigger_grants.sql +102 -102
- package/supabase/migrations/02014_package_activations_staff_read.sql +18 -18
- package/supabase/migrations/02018_install_paths_and_seed_copy_accuracy.sql +1820 -1820
- package/supabase/migrations/02019_open_handed_licensing_and_mcp_clients.sql +448 -448
- package/supabase/migrations/02020_commerce_product_accuracy.sql +93 -0
- package/supabase/migrations/02021_profiles_staff_read_and_role_guard.sql +362 -0
|
@@ -1,89 +1,89 @@
|
|
|
1
|
-
-- 02008: French home page ('accueil') brought to parity with the English 'home'.
|
|
2
|
-
--
|
|
3
|
-
-- The 2026-09-10 marketing revamp (retired 037-042, now folded into 02000/02004)
|
|
4
|
-
-- rewrote five sections of the English home page and left the French page on the
|
|
5
|
-
-- previous positioning: hero, "why an AI website builder CMS" (comparison table +
|
|
6
|
-
-- pillar cards), the MCP walkthrough, the commerce feature cards and the Cortex AI
|
|
7
|
-
-- CTA. Every public page, post and product must ship its French equivalent, so this
|
|
8
|
-
-- migration replaces those five French blocks with faithful translations of the
|
|
9
|
-
-- English blocks -- identical markup, classes and structure, French text -- and
|
|
10
|
-
-- mirrors the English page metadata.
|
|
11
|
-
--
|
|
12
|
-
-- Scoped by parent page + block position + a signature of the OLD French copy, never
|
|
13
|
-
-- by blocks.id (ids drift on every install). Each UPDATE therefore runs once: after
|
|
14
|
-
-- it, the signature is gone and a re-run matches zero rows. A French page that an
|
|
15
|
-
-- operator has already rewritten (signature absent) is left alone.
|
|
16
|
-
--
|
|
17
|
-
-- Links point at the French equivalents: the Cortex AI licence product (-fr slug)
|
|
18
|
-
-- and the French MCP guide created by 02009.
|
|
19
|
-
|
|
20
|
-
DO $$
|
|
21
|
-
DECLARE
|
|
22
|
-
v_fr bigint;
|
|
23
|
-
v_accueil bigint;
|
|
24
|
-
BEGIN
|
|
25
|
-
SELECT id INTO v_fr FROM public.languages WHERE code = 'fr' LIMIT 1;
|
|
26
|
-
IF v_fr IS NULL THEN
|
|
27
|
-
RAISE NOTICE '02008: no French language row; nothing to do.';
|
|
28
|
-
RETURN;
|
|
29
|
-
END IF;
|
|
30
|
-
|
|
31
|
-
SELECT id INTO v_accueil FROM public.pages WHERE slug = 'accueil' AND language_id = v_fr LIMIT 1;
|
|
32
|
-
IF v_accueil IS NULL THEN
|
|
33
|
-
RAISE NOTICE '02008: no French home page (accueil); nothing to do.';
|
|
34
|
-
RETURN;
|
|
35
|
-
END IF;
|
|
36
|
-
|
|
37
|
-
-- Block #0: replaces the section whose old copy contains 'Ultra-Rapides'.
|
|
38
|
-
UPDATE public.blocks
|
|
39
|
-
SET content = $nb${"is_hero":true,"padding":{"top":"xl","bottom":"xl"},"background":{"type":"gradient","gradient":{"type":"linear","stops":[{"color":"#020817","position":0},{"color":"#0f172a","position":50},{"color":"#1e293b","position":100}],"direction":"135deg"}},"column_gap":"xl","column_blocks":[[{"content":{"html_content":"<h1 class='text-5xl md:text-6xl font-extrabold tracking-tight text-white text-center leading-tight'>Du prompt à la <span class='relative inline-block mx-1 group'><span class='absolute inset-0 bg-gradient-to-r from-blue-600 to-cyan-400 translate-y-1 md:translate-y-2 transform -skew-x-12 rounded-sm shadow-lg group-hover:skew-x-0 transition-transform duration-300 ease-out'></span><span class='relative text-white italic px-1'>production</span></span>.<br class='md:hidden' /> Le CMS constructeur de sites web par l'IA.</h1>"},"block_type":"text"},{"content":{"html_content":"<p class='text-xl text-slate-300 text-center max-w-3xl mx-auto mt-4 leading-relaxed'>NextBlock est le CMS constructeur de sites web par l'IA, gratuit et open source, pour les équipes qui veulent plus qu'un prototype. Ajoutez Cortex AI pour brancher Claude Code, Cursor ou ChatGPT sur votre site via MCP, gratuitement pendant 30 jours. Vous conservez un site Next.js 16 et Supabase en production, avec un éditeur visuel que votre équipe maîtrise dès le deuxième jour.</p>"},"block_type":"text"},{"content":{"url":"https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fnextblock-cms%2Fnextblock&project-name=nextblock&repository-name=nextblock&stores=%5B%7B%22type%22%3A%22integration%22%2C%22integrationSlug%22%3A%22supabase%22%2C%22productSlug%22%3A%22supabase%22%7D%5D","size":"lg","text":"Déployer sur Vercel en un clic","variant":"default","position":"center"},"block_type":"button"},{"content":{"url":"https://nextblock.dev/product/nextblock-cortex-ai-cortex-ai-license-fr","size":"lg","text":"Commencer l'essai gratuit de Cortex AI","variant":"outline","position":"center"},"block_type":"button"},{"content":{"html_content":"<div class='flex flex-wrap justify-center gap-6 text-sm uppercase tracking-wide text-slate-400 mt-8'><a href='https://github.com/nextblock-cms' target='_blank' rel='noopener noreferrer' class='hover:text-white transition-colors'>GitHub</a><a href='https://x.com/NextBlockCMS' target='_blank' rel='noopener noreferrer' class='hover:text-white transition-colors'>X</a><a href='https://www.linkedin.com/in/nextblock/' target='_blank' rel='noopener noreferrer' class='hover:text-white transition-colors'>LinkedIn</a><a href='https://dev.to/nextblockcms' target='_blank' rel='noopener noreferrer' class='hover:text-white transition-colors'>Dev.to</a><a href='https://www.npmjs.com/~nextblockcms' target='_blank' rel='noopener noreferrer' class='hover:text-white transition-colors'>npm</a></div>"},"block_type":"text"}],[{"content":{"html_content":"<div class='p-10 border border-white/10 rounded-3xl bg-white/5 backdrop-blur-xl shadow-2xl relative overflow-hidden group'><div class='absolute inset-0 bg-gradient-to-br from-blue-500/10 to-purple-500/10 opacity-0 group-hover:opacity-100 transition-opacity duration-500'></div><div class='relative z-10'><p class='text-xs text-white uppercase tracking-widest font-semibold mb-2'>En ligne en 10 minutes. Gratuit pour commencer.</p><p class='text-3xl font-bold text-white mb-2'>Essayez toute la pile gratuitement.</p><p class='text-base text-slate-300 mb-6'>Le CMS est gratuit pour toujours. Cortex AI, la couche IA payante qui inclut le serveur MCP, commence par un essai de 30 jours sans carte de crédit. Un clic déploie sur Vercel, et vous promptez votre propre site en dix minutes.</p><ul class='space-y-3 text-sm text-slate-200'><li><span class='text-blue-400 mr-2'>✓</span> CMS : gratuit et open source, avec pages, éditeurs et sites illimités.</li><li><span class='text-blue-400 mr-2'>✓</span> Cortex AI : 30 jours gratuits, sans carte de crédit, puis une seule licence.</li><li><span class='text-blue-400 mr-2'>✓</span> Utilisez votre propre abonnement IA. Aucune majoration sur les jetons, jamais.</li></ul><div class='mt-6 rounded-2xl overflow-hidden border border-white/10 shadow-lg'><div class='relative w-full aspect-video'><iframe class='absolute inset-0 h-full w-full border-0' src='https://www.youtube-nocookie.com/embed/71MyfoL4YVM?si=jtlDXV6cSC8rDgz0' title='Vidéo de démonstration de NextBlock' allow='accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share' referrerpolicy='strict-origin-when-cross-origin' loading='lazy' allowfullscreen></iframe></div></div></div></div>"},"block_type":"text"}]],"container_type":"container","responsive_columns":{"mobile":1,"tablet":1,"desktop":2},"vertical_alignment":"center"}$nb$::jsonb,
|
|
40
|
-
updated_at = now()
|
|
41
|
-
WHERE page_id = v_accueil
|
|
42
|
-
AND "order" = 0
|
|
43
|
-
AND block_type = 'section'
|
|
44
|
-
AND content::text LIKE '%Ultra-Rapides%';
|
|
45
|
-
|
|
46
|
-
-- Block #2: replaces the section whose old copy contains 'Vitesse Extr'.
|
|
47
|
-
UPDATE public.blocks
|
|
48
|
-
SET content = $nb${"padding":{"top":"xl","bottom":"xl"},"background":{"type":"none"},"column_gap":"lg","column_blocks":[[{"content":{"level":2,"textAlign":"center","text_content":"Pourquoi un CMS constructeur de sites par l'IA l'emporte sur le code de prototype."},"block_type":"heading"},{"content":{"html_content":"<p class='text-lg text-muted-foreground text-center max-w-3xl mx-auto mb-10'>Les constructeurs par prompt comme Lovable, Bolt et v0 excellent pour un premier jet. Ensuite, ils vous remettent du code que vous devez héberger, corriger et reconstruire à chaque changement de texte. NextBlock prend les mêmes prompts et en fait un site web que toute votre équipe peut faire vivre.</p>"},"block_type":"text"},{"content":{"html_content":"<div class='grid gap-6 md:grid-cols-3'><div class='h-full rounded-2xl border border-slate-200 bg-white p-6 shadow-sm transition-colors hover:border-blue-300 dark:border-slate-800 dark:bg-slate-900'><div class='mb-4 flex h-10 w-10 items-center justify-center rounded-xl bg-blue-50 text-xl dark:bg-blue-950'>🧩</div><h3 class='text-lg font-bold text-foreground mb-2'>Du prompt au CMS, pas seulement au code.</h3><p class='text-sm text-muted-foreground leading-relaxed'>Des agents IA externes construisent de vraies mises en page sous forme de blocs typés. Les éditeurs ajustent ensuite textes, images et sections dans un éditeur de type Notion. Personne n'écrit de prompt ni ne touche au code pour changer un titre.</p></div><div class='h-full rounded-2xl border border-slate-200 bg-white p-6 shadow-sm transition-colors hover:border-blue-300 dark:border-slate-800 dark:bg-slate-900'><div class='mb-4 flex h-10 w-10 items-center justify-center rounded-xl bg-blue-50 text-xl dark:bg-blue-950'>🔌</div><h3 class='text-lg font-bold text-foreground mb-2'>Votre propre abonnement IA, via MCP.</h3><p class='text-sm text-muted-foreground leading-relaxed'>Connectez Claude Code, Cursor, ChatGPT ou Gemini directement à /api/mcp. Vous payez le forfait IA que vous avez déjà, pas une majoration SaaS sur les jetons. C'est la couche Cortex AI : gratuite 30 jours, sans carte de crédit.</p></div><div class='h-full rounded-2xl border border-slate-200 bg-white p-6 shadow-sm transition-colors hover:border-blue-300 dark:border-slate-800 dark:bg-slate-900'><div class='mb-4 flex h-10 w-10 items-center justify-center rounded-xl bg-blue-50 text-xl dark:bg-blue-950'>⚡</div><h3 class='text-lg font-bold text-foreground mb-2'>Architecture JSONB sans redéploiement.</h3><p class='text-sm text-muted-foreground leading-relaxed'>Les blocs générés atterrissent dans PostgreSQL sous forme de JSONB validé. Les pages se publient en quelques secondes, avec des scores Lighthouse de 100/100 par défaut et sans reconstruction.</p></div></div>"},"block_type":"text"},{"content":{"html_content":"<div class='mt-12 overflow-hidden rounded-3xl border border-slate-200 bg-white shadow-sm dark:border-slate-800 dark:bg-slate-900'><div class='flex flex-wrap items-end justify-between gap-3 px-5 pt-6 pb-4'><div><p class='text-xs font-semibold uppercase tracking-[0.22em] text-slate-500 dark:text-slate-400'>Côte à côte</p><p class='mt-1 text-xl font-semibold text-foreground'>Les outils de prototype face à NextBlock.</p></div><p class='text-xs text-slate-500 dark:text-slate-400'>Lovable, Bolt et v0 comparés sur ce qui se passe après le premier prompt.</p></div><div class='overflow-x-auto'><table class='w-full min-w-[640px] border-collapse'><thead><tr class='bg-slate-50 dark:bg-slate-950/60'><th scope='col' class='px-5 py-3 text-left text-xs font-semibold uppercase tracking-[0.2em] text-slate-500 dark:text-slate-400'>Ce que vous obtenez</th><th scope='col' class='px-5 py-3 text-left text-xs font-semibold uppercase tracking-[0.2em] text-rose-700 dark:text-rose-300'>Lovable, Bolt, v0</th><th scope='col' class='bg-emerald-50/60 px-5 py-3 text-left text-xs font-semibold uppercase tracking-[0.2em] text-emerald-700 dark:bg-emerald-500/10 dark:text-emerald-200'>NextBlock</th></tr></thead><tbody><tr class='border-t border-slate-200 dark:border-slate-800'><th scope='row' class='px-5 py-4 text-left align-top text-sm font-semibold text-foreground'>Jour un</th><td class='px-5 py-4 align-top text-sm text-muted-foreground'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-rose-100 text-xs font-bold text-rose-600 dark:bg-rose-500/20 dark:text-rose-300'>✗</span>Du code de prototype que vous hébergez et corrigez vous-même.</td><td class='bg-emerald-50/60 px-5 py-4 align-top text-sm text-foreground dark:bg-emerald-500/10'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-emerald-100 text-xs font-bold text-emerald-700 dark:bg-emerald-500/20 dark:text-emerald-200'>✓</span>Un site Next.js 16 et Supabase en production.</td></tr><tr class='border-t border-slate-200 dark:border-slate-800'><th scope='row' class='px-5 py-4 text-left align-top text-sm font-semibold text-foreground'>Modifier après le lancement</th><td class='px-5 py-4 align-top text-sm text-muted-foreground'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-rose-100 text-xs font-bold text-rose-600 dark:bg-rose-500/20 dark:text-rose-300'>✗</span>Un nouveau prompt ou une pull request pour chaque changement.</td><td class='bg-emerald-50/60 px-5 py-4 align-top text-sm text-foreground dark:bg-emerald-500/10'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-emerald-100 text-xs font-bold text-emerald-700 dark:bg-emerald-500/20 dark:text-emerald-200'>✓</span>Un éditeur visuel de type Notion, sans code.</td></tr><tr class='border-t border-slate-200 dark:border-slate-800'><th scope='row' class='px-5 py-4 text-left align-top text-sm font-semibold text-foreground'>Brouillons et révisions</th><td class='px-5 py-4 align-top text-sm text-muted-foreground'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-rose-100 text-xs font-bold text-rose-600 dark:bg-rose-500/20 dark:text-rose-300'>✗</span>Un historique du code seulement, rien pour le contenu.</td><td class='bg-emerald-50/60 px-5 py-4 align-top text-sm text-foreground dark:bg-emerald-500/10'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-emerald-100 text-xs font-bold text-emerald-700 dark:bg-emerald-500/20 dark:text-emerald-200'>✓</span>Brouillons en direct et restauration en un clic de n'importe quelle page.</td></tr><tr class='border-t border-slate-200 dark:border-slate-800'><th scope='row' class='px-5 py-4 text-left align-top text-sm font-semibold text-foreground'>Publication</th><td class='px-5 py-4 align-top text-sm text-muted-foreground'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-rose-100 text-xs font-bold text-rose-600 dark:bg-rose-500/20 dark:text-rose-300'>✗</span>Reconstruire et redéployer.</td><td class='bg-emerald-50/60 px-5 py-4 align-top text-sm text-foreground dark:bg-emerald-500/10'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-emerald-100 text-xs font-bold text-emerald-700 dark:bg-emerald-500/20 dark:text-emerald-200'>✓</span>Instantanée, directement depuis PostgreSQL.</td></tr><tr class='border-t border-slate-200 dark:border-slate-800'><th scope='row' class='px-5 py-4 text-left align-top text-sm font-semibold text-foreground'>Traductions et SEO</th><td class='px-5 py-4 align-top text-sm text-muted-foreground'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-rose-100 text-xs font-bold text-rose-600 dark:bg-rose-500/20 dark:text-rose-300'>✗</span>Pas inclus.</td><td class='bg-emerald-50/60 px-5 py-4 align-top text-sm text-foreground dark:bg-emerald-500/10'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-emerald-100 text-xs font-bold text-emerald-700 dark:bg-emerald-500/20 dark:text-emerald-200'>✓</span>Traduction bloc par bloc et SEO noté pendant que vous écrivez.</td></tr><tr class='border-t border-slate-200 dark:border-slate-800'><th scope='row' class='px-5 py-4 text-left align-top text-sm font-semibold text-foreground'>Coûts de l'IA</th><td class='px-5 py-4 align-top text-sm text-muted-foreground'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-rose-100 text-xs font-bold text-rose-600 dark:bg-rose-500/20 dark:text-rose-300'>✗</span>Des crédits de plateforme, achetés à l'outil.</td><td class='bg-emerald-50/60 px-5 py-4 align-top text-sm text-foreground dark:bg-emerald-500/10'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-emerald-100 text-xs font-bold text-emerald-700 dark:bg-emerald-500/20 dark:text-emerald-200'>✓</span>Votre propre abonnement via MCP, sans majoration.</td></tr><tr class='border-t border-slate-200 dark:border-slate-800'><th scope='row' class='px-5 py-4 text-left align-top text-sm font-semibold text-foreground'>Prix de la plateforme</th><td class='px-5 py-4 align-top text-sm text-muted-foreground'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-rose-100 text-xs font-bold text-rose-600 dark:bg-rose-500/20 dark:text-rose-300'>✗</span>Un forfait mensuel.</td><td class='bg-emerald-50/60 px-5 py-4 align-top text-sm text-foreground dark:bg-emerald-500/10'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-emerald-100 text-xs font-bold text-emerald-700 dark:bg-emerald-500/20 dark:text-emerald-200'>✓</span>Gratuit et open source, pour toujours. Cortex AI est le seul module payant.</td></tr></tbody></table></div></div>"},"block_type":"text"},{"content":{"html_content":"<div class='mt-10 grid gap-4 md:grid-cols-3'><div class='rounded-3xl border border-emerald-200/70 bg-emerald-50/70 p-6 dark:border-emerald-500/20 dark:bg-emerald-500/10'><p class='text-xs font-semibold uppercase tracking-[0.22em] text-emerald-700 dark:text-emerald-200'>Gratuit pour toujours</p><p class='mt-3 text-xl font-semibold text-foreground'>Le CMS ne coûte rien.</p><p class='mt-3 text-sm text-slate-600 dark:text-slate-400'>Le CMS constructeur de sites par l'IA est gratuit et open source. Pages, éditeurs et sites illimités, autohébergé ou sur Vercel, sans forfait à dépasser.</p></div><div class='rounded-3xl border border-violet-200/70 bg-violet-50/70 p-6 dark:border-violet-500/20 dark:bg-violet-500/10'><p class='text-xs font-semibold uppercase tracking-[0.22em] text-violet-700 dark:text-violet-200'>Cortex AI : essai gratuit de 30 jours</p><p class='mt-3 text-xl font-semibold text-foreground'>Essayez la couche IA, puis décidez.</p><p class='mt-3 text-sm text-slate-600 dark:text-slate-400'>Cortex AI est la seule licence payante. Elle commence par un essai de 30 jours sans carte de crédit et débloque l'IA dans l'éditeur ainsi que le serveur MCP. Pour annuler, ne faites rien.</p></div><div class='rounded-3xl border border-sky-200/70 bg-sky-50/70 p-6 dark:border-sky-500/20 dark:bg-sky-500/10'><p class='text-xs font-semibold uppercase tracking-[0.22em] text-sky-700 dark:text-sky-200'>Aucune majoration sur les jetons</p><p class='mt-3 text-xl font-semibold text-foreground'>Votre forfait fait le travail.</p><p class='mt-3 text-sm text-slate-600 dark:text-slate-400'>Cortex AI fonctionne avec l'abonnement Claude, ChatGPT, Cursor ou Gemini que vous payez déjà. La licence achète la connexion, pas les jetons.</p></div></div>"},"block_type":"text"}]],"container_type":"container","responsive_columns":{"mobile":1,"tablet":1,"desktop":1}}$nb$::jsonb,
|
|
49
|
-
updated_at = now()
|
|
50
|
-
WHERE page_id = v_accueil
|
|
51
|
-
AND "order" = 2
|
|
52
|
-
AND block_type = 'section'
|
|
53
|
-
AND content::text LIKE '%Vitesse Extr%';
|
|
54
|
-
|
|
55
|
-
-- Block #3: replaces the section whose old copy contains 'meilleurs outils'.
|
|
56
|
-
UPDATE public.blocks
|
|
57
|
-
SET content = $nb${"padding":{"top":"xl","bottom":"xl"},"background":{"type":"gradient","gradient":{"type":"linear","stops":[{"color":"#0f172a","position":0},{"color":"#1e293b","position":100}],"direction":"135deg"}},"column_gap":"lg","column_blocks":[[{"content":{"html_content":"<p class='text-xs uppercase tracking-[0.3em] text-cyan-300 font-semibold text-center mb-3'>Model Context Protocol</p><h2 class='text-3xl md:text-4xl font-extrabold text-white text-center mb-4'>Comment fonctionne la connexion MCP.</h2><p class='text-lg text-slate-300 text-center max-w-3xl mx-auto mb-4'>Cortex AI expose votre CMS comme un serveur MCP à l'adresse /api/mcp. Tout agent qui parle ce standard peut lire votre schéma et écrire des pages. Le serveur fait partie de la licence Cortex AI, et l'essai de 30 jours n'exige aucune carte de crédit.</p><p class='text-base text-slate-400 text-center max-w-2xl mx-auto mb-10'>Trois étapes vous mènent d'un déploiement neuf à des pages publiées, en une dizaine de minutes.</p><div class='grid gap-6 md:grid-cols-3'><div class='rounded-2xl border border-white/10 bg-white/5 p-6 backdrop-blur'><p class='text-xs uppercase tracking-[0.25em] text-cyan-300 font-semibold mb-3'>Étape 1</p><h3 class='text-lg font-bold text-white mb-2'>Déployez et lancez l'essai.</h3><p class='text-sm text-slate-300 leading-relaxed'>Un clic vers Vercel, puis lancez l'essai gratuit de Cortex AI dans les réglages du CMS. Générez un jeton à portée limitée et collez un seul bloc JSON dans Claude Code, Cursor ou VS Code.</p></div><div class='rounded-2xl border border-white/10 bg-white/5 p-6 backdrop-blur'><p class='text-xs uppercase tracking-[0.25em] text-cyan-300 font-semibold mb-3'>Étape 2</p><h3 class='text-lg font-bold text-white mb-2'>Promptez la mise en page.</h3><p class='text-sm text-slate-300 leading-relaxed'>Demandez une page d'accueil. L'agent appelle generate_jsonb_layout et le résultat arrive sous forme de brouillon en direct composé de blocs validés.</p></div><div class='rounded-2xl border border-white/10 bg-white/5 p-6 backdrop-blur'><p class='text-xs uppercase tracking-[0.25em] text-cyan-300 font-semibold mb-3'>Étape 3</p><h3 class='text-lg font-bold text-white mb-2'>Modifiez et publiez.</h3><p class='text-sm text-slate-300 leading-relaxed'>Les éditeurs peaufinent le brouillon dans l'éditeur visuel et cliquent sur Publier. La page est en ligne depuis PostgreSQL, sans redéploiement.</p></div></div>"},"block_type":"text"},{"content":{"html_content":"<div class='mt-12 grid gap-8 md:grid-cols-2'><div class='rounded-2xl border border-white/10 bg-slate-950/60 p-6'><h3 class='text-base font-bold text-white mb-4'>Pour les rédacteurs et les éditeurs</h3><ul class='space-y-3 text-sm text-slate-300'><li><strong class='text-white'>Éditeur de type Notion.</strong> Commandes slash, glisser-déposer et IA intégrée sur chaque bloc.</li><li><strong class='text-white'>Brouillons en direct.</strong> Mettez en attente la production de l'IA en toute sécurité, puis publiez quand le texte est au point.</li><li><strong class='text-white'>Révisions.</strong> Restaurez n'importe quelle version d'une page ou d'un article en un clic.</li><li><strong class='text-white'>Vérifications SEO intégrées.</strong> Titres, mots-clés, lisibilité et métadonnées notés pendant que vous écrivez.</li></ul></div><div class='rounded-2xl border border-white/10 bg-slate-950/60 p-6'><h3 class='text-base font-bold text-white mb-4'>Pour les développeurs</h3><ul class='space-y-3 text-sm text-slate-300'><li><strong class='text-white'>Cœur Next.js 16.</strong> Server Components, ISR et cache en périphérie, prêts à l'emploi.</li><li><strong class='text-white'>Backend Supabase.</strong> Postgres, authentification, stockage et sécurité au niveau des lignes, lisibles par vous.</li><li><strong class='text-white'>Registre de blocs typés.</strong> Chaque bloc possède un schéma Zod : la production de l'IA est validée avant d'être affichée.</li><li><strong class='text-white'>Open source.</strong> Autohébergez sur Docker ou déployez sur Vercel en un clic.</li></ul></div></div><p class='mt-10 text-center text-xs uppercase tracking-[0.25em] text-slate-400'>Construit avec Next.js, React, Supabase, Stripe, Tailwind, Tiptap, Vercel et Nx.</p>"},"block_type":"text"}]],"container_type":"container","responsive_columns":{"mobile":1,"tablet":1,"desktop":1}}$nb$::jsonb,
|
|
58
|
-
updated_at = now()
|
|
59
|
-
WHERE page_id = v_accueil
|
|
60
|
-
AND "order" = 3
|
|
61
|
-
AND block_type = 'section'
|
|
62
|
-
AND content::text LIKE '%meilleurs outils%';
|
|
63
|
-
|
|
64
|
-
-- Block #5: replaces the section whose old copy contains 'Multi-Devises'.
|
|
65
|
-
UPDATE public.blocks
|
|
66
|
-
SET content = $nb${"padding":{"top":"xl","bottom":"xl"},"background":{"type":"none"},"column_gap":"lg","column_blocks":[[{"content":{"level":2,"textAlign":"center","text_content":"Tout ce qu'il faut pour vendre en ligne"},"block_type":"heading"},{"content":{"html_content":"<p class='text-lg text-slate-600 dark:text-slate-400 text-center max-w-3xl mx-auto mb-12'>NextBlock™ Commerce livre une trousse complète de boutique en ligne pour passer du catalogue au paiement en toute simplicité.</p><div class='grid gap-6 md:grid-cols-2 lg:grid-cols-3'><div class='p-8 rounded-3xl border border-slate-200 dark:border-white/10 bg-slate-50 dark:bg-white/5 hover:border-emerald-500/30 transition-colors duration-300'><div class='w-10 h-10 rounded-lg bg-emerald-100 dark:bg-emerald-500/10 flex items-center justify-center mb-4'><svg class='w-5 h-5 text-emerald-600 dark:text-emerald-400' fill='none' stroke='currentColor' viewBox='0 0 24 24'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1M21 12a9 9 0 11-18 0 9 9 0 0118 0z'></path></svg></div><h3 class='text-lg font-bold text-slate-900 dark:text-white mb-2'>Multidevises</h3><p class='text-sm text-slate-600 dark:text-slate-400'>Taux de change en temps réel, modes d'arrondi, prix psychologiques et synchronisation automatique des prix des produits dans un nombre illimité de devises.</p></div><div class='p-8 rounded-3xl border border-slate-200 dark:border-white/10 bg-slate-50 dark:bg-white/5 hover:border-emerald-500/30 transition-colors duration-300'><div class='w-10 h-10 rounded-lg bg-emerald-100 dark:bg-emerald-500/10 flex items-center justify-center mb-4'><svg class='w-5 h-5 text-emerald-600 dark:text-emerald-400' fill='none' stroke='currentColor' viewBox='0 0 24 24'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 14l6-6m-5.5.5h.01m4.99 5h.01M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16l3.5-2 3.5 2 3.5-2 3.5 2z'></path></svg></div><h3 class='text-lg font-bold text-slate-900 dark:text-white mb-2'>Taxes automatisées</h3><p class='text-sm text-slate-600 dark:text-slate-400'>Taux de taxes manuels et cumulés (TPS + TVQ) ou calcul entièrement automatique via Stripe Tax — à vous de choisir.</p></div><div class='p-8 rounded-3xl border border-slate-200 dark:border-white/10 bg-slate-50 dark:bg-white/5 hover:border-emerald-500/30 transition-colors duration-300'><div class='w-10 h-10 rounded-lg bg-emerald-100 dark:bg-emerald-500/10 flex items-center justify-center mb-4'><svg class='w-5 h-5 text-emerald-600 dark:text-emerald-400' fill='none' stroke='currentColor' viewBox='0 0 24 24'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M8 7h12m0 0l-4-4m4 4l-4 4m0 6H4m0 0l4 4m-4-4l4-4'></path></svg></div><h3 class='text-lg font-bold text-slate-900 dark:text-white mb-2'>Zones d'expédition</h3><p class='text-sm text-slate-600 dark:text-slate-400'>Tarifs par zone avec correspondance pays et province, prix par devise et seuils de livraison gratuite.</p></div><div class='p-8 rounded-3xl border border-slate-200 dark:border-white/10 bg-slate-50 dark:bg-white/5 hover:border-emerald-500/30 transition-colors duration-300'><div class='w-10 h-10 rounded-lg bg-emerald-100 dark:bg-emerald-500/10 flex items-center justify-center mb-4'><svg class='w-5 h-5 text-emerald-600 dark:text-emerald-400' fill='none' stroke='currentColor' viewBox='0 0 24 24'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M3 10h18M7 15h1m4 0h1m-7 4h12a3 3 0 003-3V8a3 3 0 00-3-3H6a3 3 0 00-3 3v8a3 3 0 003 3z'></path></svg></div><h3 class='text-lg font-bold text-slate-900 dark:text-white mb-2'>Paiement Stripe & Freemius</h3><p class='text-sm text-slate-600 dark:text-slate-400'>Stripe pour les produits physiques, Freemius pour les licences numériques — un paiement adapté au fournisseur, avec validation de l'inventaire.</p></div><div class='p-8 rounded-3xl border border-slate-200 dark:border-white/10 bg-slate-50 dark:bg-white/5 hover:border-emerald-500/30 transition-colors duration-300'><div class='w-10 h-10 rounded-lg bg-emerald-100 dark:bg-emerald-500/10 flex items-center justify-center mb-4'><svg class='w-5 h-5 text-emerald-600 dark:text-emerald-400' fill='none' stroke='currentColor' viewBox='0 0 24 24'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4'></path></svg></div><h3 class='text-lg font-bold text-slate-900 dark:text-white mb-2'>Suivi d'inventaire</h3><p class='text-sm text-slate-600 dark:text-slate-400'>Déduction automatique des quantités au paiement, avec voies de repli résilientes et gestion des stocks par variante.</p></div><div class='p-8 rounded-3xl border border-slate-200 dark:border-white/10 bg-slate-50 dark:bg-white/5 hover:border-emerald-500/30 transition-colors duration-300'><div class='w-10 h-10 rounded-lg bg-emerald-100 dark:bg-emerald-500/10 flex items-center justify-center mb-4'><svg class='w-5 h-5 text-emerald-600 dark:text-emerald-400' fill='none' stroke='currentColor' viewBox='0 0 24 24'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z'></path></svg></div><h3 class='text-lg font-bold text-slate-900 dark:text-white mb-2'>Commandes & factures</h3><p class='text-sm text-slate-600 dark:text-slate-400'>Gestion complète du cycle de vie des commandes, numérotation stable des factures, documents imprimables et rapports de commandes exportables.</p></div></div>"},"block_type":"text"}]],"container_type":"container","responsive_columns":{"mobile":1,"tablet":1,"desktop":1}}$nb$::jsonb,
|
|
67
|
-
updated_at = now()
|
|
68
|
-
WHERE page_id = v_accueil
|
|
69
|
-
AND "order" = 5
|
|
70
|
-
AND block_type = 'section'
|
|
71
|
-
AND content::text LIKE '%Multi-Devises%';
|
|
72
|
-
|
|
73
|
-
-- Block #6: replaces the section whose old copy contains 'Boostez votre'.
|
|
74
|
-
UPDATE public.blocks
|
|
75
|
-
SET content = $nb${"padding":{"top":"xl","bottom":"xl"},"background":{"type":"gradient","gradient":{"type":"linear","stops":[{"color":"#1e1b4b","position":0},{"color":"#0f172a","position":100}],"direction":"135deg"}},"column_gap":"xl","column_blocks":[[{"content":{"html_content":"<p class='text-xs uppercase tracking-[0.3em] text-violet-400 font-semibold mb-4'>Maintenant disponible — Cortex AI</p><h2 class='text-4xl md:text-5xl font-bold text-white mb-6 leading-tight'>Le CMS est gratuit.<br/>Cortex AI est la mise à niveau.</h2><p class='text-lg text-slate-300 max-w-2xl leading-relaxed mb-4'>NextBlock ne coûte rien et ne coûtera jamais rien. Cortex AI est la seule licence que nous vendons. Elle ajoute l'IA dans l'éditeur et un serveur MCP à l'extérieur, pour que Claude Code, Cursor, ChatGPT et Gemini puissent bâtir votre site.</p><p class='text-base text-slate-400 max-w-2xl leading-relaxed'>Essayez-la gratuitement pendant 30 jours, sans carte de crédit. Vous apportez l'abonnement IA que vous payez déjà. La licence achète la connexion, jamais les jetons, et rien n'est mis en ligne tant qu'un éditeur ne l'a pas publié.</p>"},"block_type":"text"},{"content":{"url":"https://nextblock.dev/product/nextblock-cortex-ai-cortex-ai-license-fr","size":"lg","text":"Commencer l'essai gratuit de 30 jours →","variant":"default","position":"left"},"block_type":"button"},{"content":{"url":"/article/guide-connexion-mcp-cortex-ai","size":"lg","text":"Lire le guide de configuration MCP","variant":"outline","position":"left"},"block_type":"button"}],[{"content":{"html_content":"<div class='grid grid-cols-1 gap-4 sm:grid-cols-3 lg:grid-cols-1'><div class='rounded-2xl border border-violet-500/30 bg-white/5 p-6 text-center'><p class='text-3xl font-extrabold text-white'>$0</p><p class='text-xs uppercase tracking-wider text-violet-200 mt-1'>Le CMS, pour toujours</p></div><div class='rounded-2xl border border-violet-500/30 bg-white/5 p-6 text-center'><p class='text-3xl font-extrabold text-white'>30</p><p class='text-xs uppercase tracking-wider text-violet-200 mt-1'>jours de Cortex AI gratuits, sans carte</p></div><div class='rounded-2xl border border-violet-500/30 bg-white/5 p-6 text-center'><p class='text-3xl font-extrabold text-white'>0 %</p><p class='text-xs uppercase tracking-wider text-violet-200 mt-1'>de majoration sur les jetons</p></div></div>"},"block_type":"text"}]],"container_type":"container","responsive_columns":{"mobile":1,"tablet":1,"desktop":2},"vertical_alignment":"center"}$nb$::jsonb,
|
|
76
|
-
updated_at = now()
|
|
77
|
-
WHERE page_id = v_accueil
|
|
78
|
-
AND "order" = 6
|
|
79
|
-
AND block_type = 'section'
|
|
80
|
-
AND content::text LIKE '%Boostez votre%';
|
|
81
|
-
|
|
82
|
-
-- Page metadata: mirror the English title/description.
|
|
83
|
-
UPDATE public.pages
|
|
84
|
-
SET meta_title = 'NextBlock CMS',
|
|
85
|
-
meta_description = 'NextBlock™ est le CMS Next.js open source pensé pour les développeurs, qui allie des scores Lighthouse de 100 % à un puissant éditeur visuel par blocs.',
|
|
86
|
-
updated_at = now()
|
|
87
|
-
WHERE id = v_accueil
|
|
88
|
-
AND COALESCE(meta_description, '') <> 'NextBlock™ est le CMS Next.js open source pensé pour les développeurs, qui allie des scores Lighthouse de 100 % à un puissant éditeur visuel par blocs.';
|
|
89
|
-
END $$;
|
|
1
|
+
-- 02008: French home page ('accueil') brought to parity with the English 'home'.
|
|
2
|
+
--
|
|
3
|
+
-- The 2026-09-10 marketing revamp (retired 037-042, now folded into 02000/02004)
|
|
4
|
+
-- rewrote five sections of the English home page and left the French page on the
|
|
5
|
+
-- previous positioning: hero, "why an AI website builder CMS" (comparison table +
|
|
6
|
+
-- pillar cards), the MCP walkthrough, the commerce feature cards and the Cortex AI
|
|
7
|
+
-- CTA. Every public page, post and product must ship its French equivalent, so this
|
|
8
|
+
-- migration replaces those five French blocks with faithful translations of the
|
|
9
|
+
-- English blocks -- identical markup, classes and structure, French text -- and
|
|
10
|
+
-- mirrors the English page metadata.
|
|
11
|
+
--
|
|
12
|
+
-- Scoped by parent page + block position + a signature of the OLD French copy, never
|
|
13
|
+
-- by blocks.id (ids drift on every install). Each UPDATE therefore runs once: after
|
|
14
|
+
-- it, the signature is gone and a re-run matches zero rows. A French page that an
|
|
15
|
+
-- operator has already rewritten (signature absent) is left alone.
|
|
16
|
+
--
|
|
17
|
+
-- Links point at the French equivalents: the Cortex AI licence product (-fr slug)
|
|
18
|
+
-- and the French MCP guide created by 02009.
|
|
19
|
+
|
|
20
|
+
DO $$
|
|
21
|
+
DECLARE
|
|
22
|
+
v_fr bigint;
|
|
23
|
+
v_accueil bigint;
|
|
24
|
+
BEGIN
|
|
25
|
+
SELECT id INTO v_fr FROM public.languages WHERE code = 'fr' LIMIT 1;
|
|
26
|
+
IF v_fr IS NULL THEN
|
|
27
|
+
RAISE NOTICE '02008: no French language row; nothing to do.';
|
|
28
|
+
RETURN;
|
|
29
|
+
END IF;
|
|
30
|
+
|
|
31
|
+
SELECT id INTO v_accueil FROM public.pages WHERE slug = 'accueil' AND language_id = v_fr LIMIT 1;
|
|
32
|
+
IF v_accueil IS NULL THEN
|
|
33
|
+
RAISE NOTICE '02008: no French home page (accueil); nothing to do.';
|
|
34
|
+
RETURN;
|
|
35
|
+
END IF;
|
|
36
|
+
|
|
37
|
+
-- Block #0: replaces the section whose old copy contains 'Ultra-Rapides'.
|
|
38
|
+
UPDATE public.blocks
|
|
39
|
+
SET content = $nb${"is_hero":true,"padding":{"top":"xl","bottom":"xl"},"background":{"type":"gradient","gradient":{"type":"linear","stops":[{"color":"#020817","position":0},{"color":"#0f172a","position":50},{"color":"#1e293b","position":100}],"direction":"135deg"}},"column_gap":"xl","column_blocks":[[{"content":{"html_content":"<h1 class='text-5xl md:text-6xl font-extrabold tracking-tight text-white text-center leading-tight'>Du prompt à la <span class='relative inline-block mx-1 group'><span class='absolute inset-0 bg-gradient-to-r from-blue-600 to-cyan-400 translate-y-1 md:translate-y-2 transform -skew-x-12 rounded-sm shadow-lg group-hover:skew-x-0 transition-transform duration-300 ease-out'></span><span class='relative text-white italic px-1'>production</span></span>.<br class='md:hidden' /> Le CMS constructeur de sites web par l'IA.</h1>"},"block_type":"text"},{"content":{"html_content":"<p class='text-xl text-slate-300 text-center max-w-3xl mx-auto mt-4 leading-relaxed'>NextBlock est le CMS constructeur de sites web par l'IA, gratuit et open source, pour les équipes qui veulent plus qu'un prototype. Ajoutez Cortex AI pour brancher Claude Code, Cursor ou ChatGPT sur votre site via MCP, gratuitement pendant 30 jours. Vous conservez un site Next.js 16 et Supabase en production, avec un éditeur visuel que votre équipe maîtrise dès le deuxième jour.</p>"},"block_type":"text"},{"content":{"url":"https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fnextblock-cms%2Fnextblock&project-name=nextblock&repository-name=nextblock&stores=%5B%7B%22type%22%3A%22integration%22%2C%22integrationSlug%22%3A%22supabase%22%2C%22productSlug%22%3A%22supabase%22%7D%5D","size":"lg","text":"Déployer sur Vercel en un clic","variant":"default","position":"center"},"block_type":"button"},{"content":{"url":"https://nextblock.dev/product/nextblock-cortex-ai-cortex-ai-license-fr","size":"lg","text":"Commencer l'essai gratuit de Cortex AI","variant":"outline","position":"center"},"block_type":"button"},{"content":{"html_content":"<div class='flex flex-wrap justify-center gap-6 text-sm uppercase tracking-wide text-slate-400 mt-8'><a href='https://github.com/nextblock-cms' target='_blank' rel='noopener noreferrer' class='hover:text-white transition-colors'>GitHub</a><a href='https://x.com/NextBlockCMS' target='_blank' rel='noopener noreferrer' class='hover:text-white transition-colors'>X</a><a href='https://www.linkedin.com/in/nextblock/' target='_blank' rel='noopener noreferrer' class='hover:text-white transition-colors'>LinkedIn</a><a href='https://dev.to/nextblockcms' target='_blank' rel='noopener noreferrer' class='hover:text-white transition-colors'>Dev.to</a><a href='https://www.npmjs.com/~nextblockcms' target='_blank' rel='noopener noreferrer' class='hover:text-white transition-colors'>npm</a></div>"},"block_type":"text"}],[{"content":{"html_content":"<div class='p-10 border border-white/10 rounded-3xl bg-white/5 backdrop-blur-xl shadow-2xl relative overflow-hidden group'><div class='absolute inset-0 bg-gradient-to-br from-blue-500/10 to-purple-500/10 opacity-0 group-hover:opacity-100 transition-opacity duration-500'></div><div class='relative z-10'><p class='text-xs text-white uppercase tracking-widest font-semibold mb-2'>En ligne en 10 minutes. Gratuit pour commencer.</p><p class='text-3xl font-bold text-white mb-2'>Essayez toute la pile gratuitement.</p><p class='text-base text-slate-300 mb-6'>Le CMS est gratuit pour toujours. Cortex AI, la couche IA payante qui inclut le serveur MCP, commence par un essai de 30 jours sans carte de crédit. Un clic déploie sur Vercel, et vous promptez votre propre site en dix minutes.</p><ul class='space-y-3 text-sm text-slate-200'><li><span class='text-blue-400 mr-2'>✓</span> CMS : gratuit et open source, avec pages, éditeurs et sites illimités.</li><li><span class='text-blue-400 mr-2'>✓</span> Cortex AI : 30 jours gratuits, sans carte de crédit, puis une seule licence.</li><li><span class='text-blue-400 mr-2'>✓</span> Utilisez votre propre abonnement IA. Aucune majoration sur les jetons, jamais.</li></ul><div class='mt-6 rounded-2xl overflow-hidden border border-white/10 shadow-lg'><div class='relative w-full aspect-video'><iframe class='absolute inset-0 h-full w-full border-0' src='https://www.youtube-nocookie.com/embed/71MyfoL4YVM?si=jtlDXV6cSC8rDgz0' title='Vidéo de démonstration de NextBlock' allow='accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share' referrerpolicy='strict-origin-when-cross-origin' loading='lazy' allowfullscreen></iframe></div></div></div></div>"},"block_type":"text"}]],"container_type":"container","responsive_columns":{"mobile":1,"tablet":1,"desktop":2},"vertical_alignment":"center"}$nb$::jsonb,
|
|
40
|
+
updated_at = now()
|
|
41
|
+
WHERE page_id = v_accueil
|
|
42
|
+
AND "order" = 0
|
|
43
|
+
AND block_type = 'section'
|
|
44
|
+
AND content::text LIKE '%Ultra-Rapides%';
|
|
45
|
+
|
|
46
|
+
-- Block #2: replaces the section whose old copy contains 'Vitesse Extr'.
|
|
47
|
+
UPDATE public.blocks
|
|
48
|
+
SET content = $nb${"padding":{"top":"xl","bottom":"xl"},"background":{"type":"none"},"column_gap":"lg","column_blocks":[[{"content":{"level":2,"textAlign":"center","text_content":"Pourquoi un CMS constructeur de sites par l'IA l'emporte sur le code de prototype."},"block_type":"heading"},{"content":{"html_content":"<p class='text-lg text-muted-foreground text-center max-w-3xl mx-auto mb-10'>Les constructeurs par prompt comme Lovable, Bolt et v0 excellent pour un premier jet. Ensuite, ils vous remettent du code que vous devez héberger, corriger et reconstruire à chaque changement de texte. NextBlock prend les mêmes prompts et en fait un site web que toute votre équipe peut faire vivre.</p>"},"block_type":"text"},{"content":{"html_content":"<div class='grid gap-6 md:grid-cols-3'><div class='h-full rounded-2xl border border-slate-200 bg-white p-6 shadow-sm transition-colors hover:border-blue-300 dark:border-slate-800 dark:bg-slate-900'><div class='mb-4 flex h-10 w-10 items-center justify-center rounded-xl bg-blue-50 text-xl dark:bg-blue-950'>🧩</div><h3 class='text-lg font-bold text-foreground mb-2'>Du prompt au CMS, pas seulement au code.</h3><p class='text-sm text-muted-foreground leading-relaxed'>Des agents IA externes construisent de vraies mises en page sous forme de blocs typés. Les éditeurs ajustent ensuite textes, images et sections dans un éditeur de type Notion. Personne n'écrit de prompt ni ne touche au code pour changer un titre.</p></div><div class='h-full rounded-2xl border border-slate-200 bg-white p-6 shadow-sm transition-colors hover:border-blue-300 dark:border-slate-800 dark:bg-slate-900'><div class='mb-4 flex h-10 w-10 items-center justify-center rounded-xl bg-blue-50 text-xl dark:bg-blue-950'>🔌</div><h3 class='text-lg font-bold text-foreground mb-2'>Votre propre abonnement IA, via MCP.</h3><p class='text-sm text-muted-foreground leading-relaxed'>Connectez Claude Code, Cursor, ChatGPT ou Gemini directement à /api/mcp. Vous payez le forfait IA que vous avez déjà, pas une majoration SaaS sur les jetons. C'est la couche Cortex AI : gratuite 30 jours, sans carte de crédit.</p></div><div class='h-full rounded-2xl border border-slate-200 bg-white p-6 shadow-sm transition-colors hover:border-blue-300 dark:border-slate-800 dark:bg-slate-900'><div class='mb-4 flex h-10 w-10 items-center justify-center rounded-xl bg-blue-50 text-xl dark:bg-blue-950'>⚡</div><h3 class='text-lg font-bold text-foreground mb-2'>Architecture JSONB sans redéploiement.</h3><p class='text-sm text-muted-foreground leading-relaxed'>Les blocs générés atterrissent dans PostgreSQL sous forme de JSONB validé. Les pages se publient en quelques secondes, avec des scores Lighthouse de 100/100 par défaut et sans reconstruction.</p></div></div>"},"block_type":"text"},{"content":{"html_content":"<div class='mt-12 overflow-hidden rounded-3xl border border-slate-200 bg-white shadow-sm dark:border-slate-800 dark:bg-slate-900'><div class='flex flex-wrap items-end justify-between gap-3 px-5 pt-6 pb-4'><div><p class='text-xs font-semibold uppercase tracking-[0.22em] text-slate-500 dark:text-slate-400'>Côte à côte</p><p class='mt-1 text-xl font-semibold text-foreground'>Les outils de prototype face à NextBlock.</p></div><p class='text-xs text-slate-500 dark:text-slate-400'>Lovable, Bolt et v0 comparés sur ce qui se passe après le premier prompt.</p></div><div class='overflow-x-auto'><table class='w-full min-w-[640px] border-collapse'><thead><tr class='bg-slate-50 dark:bg-slate-950/60'><th scope='col' class='px-5 py-3 text-left text-xs font-semibold uppercase tracking-[0.2em] text-slate-500 dark:text-slate-400'>Ce que vous obtenez</th><th scope='col' class='px-5 py-3 text-left text-xs font-semibold uppercase tracking-[0.2em] text-rose-700 dark:text-rose-300'>Lovable, Bolt, v0</th><th scope='col' class='bg-emerald-50/60 px-5 py-3 text-left text-xs font-semibold uppercase tracking-[0.2em] text-emerald-700 dark:bg-emerald-500/10 dark:text-emerald-200'>NextBlock</th></tr></thead><tbody><tr class='border-t border-slate-200 dark:border-slate-800'><th scope='row' class='px-5 py-4 text-left align-top text-sm font-semibold text-foreground'>Jour un</th><td class='px-5 py-4 align-top text-sm text-muted-foreground'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-rose-100 text-xs font-bold text-rose-600 dark:bg-rose-500/20 dark:text-rose-300'>✗</span>Du code de prototype que vous hébergez et corrigez vous-même.</td><td class='bg-emerald-50/60 px-5 py-4 align-top text-sm text-foreground dark:bg-emerald-500/10'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-emerald-100 text-xs font-bold text-emerald-700 dark:bg-emerald-500/20 dark:text-emerald-200'>✓</span>Un site Next.js 16 et Supabase en production.</td></tr><tr class='border-t border-slate-200 dark:border-slate-800'><th scope='row' class='px-5 py-4 text-left align-top text-sm font-semibold text-foreground'>Modifier après le lancement</th><td class='px-5 py-4 align-top text-sm text-muted-foreground'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-rose-100 text-xs font-bold text-rose-600 dark:bg-rose-500/20 dark:text-rose-300'>✗</span>Un nouveau prompt ou une pull request pour chaque changement.</td><td class='bg-emerald-50/60 px-5 py-4 align-top text-sm text-foreground dark:bg-emerald-500/10'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-emerald-100 text-xs font-bold text-emerald-700 dark:bg-emerald-500/20 dark:text-emerald-200'>✓</span>Un éditeur visuel de type Notion, sans code.</td></tr><tr class='border-t border-slate-200 dark:border-slate-800'><th scope='row' class='px-5 py-4 text-left align-top text-sm font-semibold text-foreground'>Brouillons et révisions</th><td class='px-5 py-4 align-top text-sm text-muted-foreground'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-rose-100 text-xs font-bold text-rose-600 dark:bg-rose-500/20 dark:text-rose-300'>✗</span>Un historique du code seulement, rien pour le contenu.</td><td class='bg-emerald-50/60 px-5 py-4 align-top text-sm text-foreground dark:bg-emerald-500/10'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-emerald-100 text-xs font-bold text-emerald-700 dark:bg-emerald-500/20 dark:text-emerald-200'>✓</span>Brouillons en direct et restauration en un clic de n'importe quelle page.</td></tr><tr class='border-t border-slate-200 dark:border-slate-800'><th scope='row' class='px-5 py-4 text-left align-top text-sm font-semibold text-foreground'>Publication</th><td class='px-5 py-4 align-top text-sm text-muted-foreground'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-rose-100 text-xs font-bold text-rose-600 dark:bg-rose-500/20 dark:text-rose-300'>✗</span>Reconstruire et redéployer.</td><td class='bg-emerald-50/60 px-5 py-4 align-top text-sm text-foreground dark:bg-emerald-500/10'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-emerald-100 text-xs font-bold text-emerald-700 dark:bg-emerald-500/20 dark:text-emerald-200'>✓</span>Instantanée, directement depuis PostgreSQL.</td></tr><tr class='border-t border-slate-200 dark:border-slate-800'><th scope='row' class='px-5 py-4 text-left align-top text-sm font-semibold text-foreground'>Traductions et SEO</th><td class='px-5 py-4 align-top text-sm text-muted-foreground'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-rose-100 text-xs font-bold text-rose-600 dark:bg-rose-500/20 dark:text-rose-300'>✗</span>Pas inclus.</td><td class='bg-emerald-50/60 px-5 py-4 align-top text-sm text-foreground dark:bg-emerald-500/10'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-emerald-100 text-xs font-bold text-emerald-700 dark:bg-emerald-500/20 dark:text-emerald-200'>✓</span>Traduction bloc par bloc et SEO noté pendant que vous écrivez.</td></tr><tr class='border-t border-slate-200 dark:border-slate-800'><th scope='row' class='px-5 py-4 text-left align-top text-sm font-semibold text-foreground'>Coûts de l'IA</th><td class='px-5 py-4 align-top text-sm text-muted-foreground'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-rose-100 text-xs font-bold text-rose-600 dark:bg-rose-500/20 dark:text-rose-300'>✗</span>Des crédits de plateforme, achetés à l'outil.</td><td class='bg-emerald-50/60 px-5 py-4 align-top text-sm text-foreground dark:bg-emerald-500/10'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-emerald-100 text-xs font-bold text-emerald-700 dark:bg-emerald-500/20 dark:text-emerald-200'>✓</span>Votre propre abonnement via MCP, sans majoration.</td></tr><tr class='border-t border-slate-200 dark:border-slate-800'><th scope='row' class='px-5 py-4 text-left align-top text-sm font-semibold text-foreground'>Prix de la plateforme</th><td class='px-5 py-4 align-top text-sm text-muted-foreground'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-rose-100 text-xs font-bold text-rose-600 dark:bg-rose-500/20 dark:text-rose-300'>✗</span>Un forfait mensuel.</td><td class='bg-emerald-50/60 px-5 py-4 align-top text-sm text-foreground dark:bg-emerald-500/10'><span class='mr-2 inline-flex h-5 w-5 items-center justify-center rounded-full bg-emerald-100 text-xs font-bold text-emerald-700 dark:bg-emerald-500/20 dark:text-emerald-200'>✓</span>Gratuit et open source, pour toujours. Cortex AI est le seul module payant.</td></tr></tbody></table></div></div>"},"block_type":"text"},{"content":{"html_content":"<div class='mt-10 grid gap-4 md:grid-cols-3'><div class='rounded-3xl border border-emerald-200/70 bg-emerald-50/70 p-6 dark:border-emerald-500/20 dark:bg-emerald-500/10'><p class='text-xs font-semibold uppercase tracking-[0.22em] text-emerald-700 dark:text-emerald-200'>Gratuit pour toujours</p><p class='mt-3 text-xl font-semibold text-foreground'>Le CMS ne coûte rien.</p><p class='mt-3 text-sm text-slate-600 dark:text-slate-400'>Le CMS constructeur de sites par l'IA est gratuit et open source. Pages, éditeurs et sites illimités, autohébergé ou sur Vercel, sans forfait à dépasser.</p></div><div class='rounded-3xl border border-violet-200/70 bg-violet-50/70 p-6 dark:border-violet-500/20 dark:bg-violet-500/10'><p class='text-xs font-semibold uppercase tracking-[0.22em] text-violet-700 dark:text-violet-200'>Cortex AI : essai gratuit de 30 jours</p><p class='mt-3 text-xl font-semibold text-foreground'>Essayez la couche IA, puis décidez.</p><p class='mt-3 text-sm text-slate-600 dark:text-slate-400'>Cortex AI est la seule licence payante. Elle commence par un essai de 30 jours sans carte de crédit et débloque l'IA dans l'éditeur ainsi que le serveur MCP. Pour annuler, ne faites rien.</p></div><div class='rounded-3xl border border-sky-200/70 bg-sky-50/70 p-6 dark:border-sky-500/20 dark:bg-sky-500/10'><p class='text-xs font-semibold uppercase tracking-[0.22em] text-sky-700 dark:text-sky-200'>Aucune majoration sur les jetons</p><p class='mt-3 text-xl font-semibold text-foreground'>Votre forfait fait le travail.</p><p class='mt-3 text-sm text-slate-600 dark:text-slate-400'>Cortex AI fonctionne avec l'abonnement Claude, ChatGPT, Cursor ou Gemini que vous payez déjà. La licence achète la connexion, pas les jetons.</p></div></div>"},"block_type":"text"}]],"container_type":"container","responsive_columns":{"mobile":1,"tablet":1,"desktop":1}}$nb$::jsonb,
|
|
49
|
+
updated_at = now()
|
|
50
|
+
WHERE page_id = v_accueil
|
|
51
|
+
AND "order" = 2
|
|
52
|
+
AND block_type = 'section'
|
|
53
|
+
AND content::text LIKE '%Vitesse Extr%';
|
|
54
|
+
|
|
55
|
+
-- Block #3: replaces the section whose old copy contains 'meilleurs outils'.
|
|
56
|
+
UPDATE public.blocks
|
|
57
|
+
SET content = $nb${"padding":{"top":"xl","bottom":"xl"},"background":{"type":"gradient","gradient":{"type":"linear","stops":[{"color":"#0f172a","position":0},{"color":"#1e293b","position":100}],"direction":"135deg"}},"column_gap":"lg","column_blocks":[[{"content":{"html_content":"<p class='text-xs uppercase tracking-[0.3em] text-cyan-300 font-semibold text-center mb-3'>Model Context Protocol</p><h2 class='text-3xl md:text-4xl font-extrabold text-white text-center mb-4'>Comment fonctionne la connexion MCP.</h2><p class='text-lg text-slate-300 text-center max-w-3xl mx-auto mb-4'>Cortex AI expose votre CMS comme un serveur MCP à l'adresse /api/mcp. Tout agent qui parle ce standard peut lire votre schéma et écrire des pages. Le serveur fait partie de la licence Cortex AI, et l'essai de 30 jours n'exige aucune carte de crédit.</p><p class='text-base text-slate-400 text-center max-w-2xl mx-auto mb-10'>Trois étapes vous mènent d'un déploiement neuf à des pages publiées, en une dizaine de minutes.</p><div class='grid gap-6 md:grid-cols-3'><div class='rounded-2xl border border-white/10 bg-white/5 p-6 backdrop-blur'><p class='text-xs uppercase tracking-[0.25em] text-cyan-300 font-semibold mb-3'>Étape 1</p><h3 class='text-lg font-bold text-white mb-2'>Déployez et lancez l'essai.</h3><p class='text-sm text-slate-300 leading-relaxed'>Un clic vers Vercel, puis lancez l'essai gratuit de Cortex AI dans les réglages du CMS. Générez un jeton à portée limitée et collez un seul bloc JSON dans Claude Code, Cursor ou VS Code.</p></div><div class='rounded-2xl border border-white/10 bg-white/5 p-6 backdrop-blur'><p class='text-xs uppercase tracking-[0.25em] text-cyan-300 font-semibold mb-3'>Étape 2</p><h3 class='text-lg font-bold text-white mb-2'>Promptez la mise en page.</h3><p class='text-sm text-slate-300 leading-relaxed'>Demandez une page d'accueil. L'agent appelle generate_jsonb_layout et le résultat arrive sous forme de brouillon en direct composé de blocs validés.</p></div><div class='rounded-2xl border border-white/10 bg-white/5 p-6 backdrop-blur'><p class='text-xs uppercase tracking-[0.25em] text-cyan-300 font-semibold mb-3'>Étape 3</p><h3 class='text-lg font-bold text-white mb-2'>Modifiez et publiez.</h3><p class='text-sm text-slate-300 leading-relaxed'>Les éditeurs peaufinent le brouillon dans l'éditeur visuel et cliquent sur Publier. La page est en ligne depuis PostgreSQL, sans redéploiement.</p></div></div>"},"block_type":"text"},{"content":{"html_content":"<div class='mt-12 grid gap-8 md:grid-cols-2'><div class='rounded-2xl border border-white/10 bg-slate-950/60 p-6'><h3 class='text-base font-bold text-white mb-4'>Pour les rédacteurs et les éditeurs</h3><ul class='space-y-3 text-sm text-slate-300'><li><strong class='text-white'>Éditeur de type Notion.</strong> Commandes slash, glisser-déposer et IA intégrée sur chaque bloc.</li><li><strong class='text-white'>Brouillons en direct.</strong> Mettez en attente la production de l'IA en toute sécurité, puis publiez quand le texte est au point.</li><li><strong class='text-white'>Révisions.</strong> Restaurez n'importe quelle version d'une page ou d'un article en un clic.</li><li><strong class='text-white'>Vérifications SEO intégrées.</strong> Titres, mots-clés, lisibilité et métadonnées notés pendant que vous écrivez.</li></ul></div><div class='rounded-2xl border border-white/10 bg-slate-950/60 p-6'><h3 class='text-base font-bold text-white mb-4'>Pour les développeurs</h3><ul class='space-y-3 text-sm text-slate-300'><li><strong class='text-white'>Cœur Next.js 16.</strong> Server Components, ISR et cache en périphérie, prêts à l'emploi.</li><li><strong class='text-white'>Backend Supabase.</strong> Postgres, authentification, stockage et sécurité au niveau des lignes, lisibles par vous.</li><li><strong class='text-white'>Registre de blocs typés.</strong> Chaque bloc possède un schéma Zod : la production de l'IA est validée avant d'être affichée.</li><li><strong class='text-white'>Open source.</strong> Autohébergez sur Docker ou déployez sur Vercel en un clic.</li></ul></div></div><p class='mt-10 text-center text-xs uppercase tracking-[0.25em] text-slate-400'>Construit avec Next.js, React, Supabase, Stripe, Tailwind, Tiptap, Vercel et Nx.</p>"},"block_type":"text"}]],"container_type":"container","responsive_columns":{"mobile":1,"tablet":1,"desktop":1}}$nb$::jsonb,
|
|
58
|
+
updated_at = now()
|
|
59
|
+
WHERE page_id = v_accueil
|
|
60
|
+
AND "order" = 3
|
|
61
|
+
AND block_type = 'section'
|
|
62
|
+
AND content::text LIKE '%meilleurs outils%';
|
|
63
|
+
|
|
64
|
+
-- Block #5: replaces the section whose old copy contains 'Multi-Devises'.
|
|
65
|
+
UPDATE public.blocks
|
|
66
|
+
SET content = $nb${"padding":{"top":"xl","bottom":"xl"},"background":{"type":"none"},"column_gap":"lg","column_blocks":[[{"content":{"level":2,"textAlign":"center","text_content":"Tout ce qu'il faut pour vendre en ligne"},"block_type":"heading"},{"content":{"html_content":"<p class='text-lg text-slate-600 dark:text-slate-400 text-center max-w-3xl mx-auto mb-12'>NextBlock™ Commerce livre une trousse complète de boutique en ligne pour passer du catalogue au paiement en toute simplicité.</p><div class='grid gap-6 md:grid-cols-2 lg:grid-cols-3'><div class='p-8 rounded-3xl border border-slate-200 dark:border-white/10 bg-slate-50 dark:bg-white/5 hover:border-emerald-500/30 transition-colors duration-300'><div class='w-10 h-10 rounded-lg bg-emerald-100 dark:bg-emerald-500/10 flex items-center justify-center mb-4'><svg class='w-5 h-5 text-emerald-600 dark:text-emerald-400' fill='none' stroke='currentColor' viewBox='0 0 24 24'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1M21 12a9 9 0 11-18 0 9 9 0 0118 0z'></path></svg></div><h3 class='text-lg font-bold text-slate-900 dark:text-white mb-2'>Multidevises</h3><p class='text-sm text-slate-600 dark:text-slate-400'>Taux de change en temps réel, modes d'arrondi, prix psychologiques et synchronisation automatique des prix des produits dans un nombre illimité de devises.</p></div><div class='p-8 rounded-3xl border border-slate-200 dark:border-white/10 bg-slate-50 dark:bg-white/5 hover:border-emerald-500/30 transition-colors duration-300'><div class='w-10 h-10 rounded-lg bg-emerald-100 dark:bg-emerald-500/10 flex items-center justify-center mb-4'><svg class='w-5 h-5 text-emerald-600 dark:text-emerald-400' fill='none' stroke='currentColor' viewBox='0 0 24 24'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 14l6-6m-5.5.5h.01m4.99 5h.01M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16l3.5-2 3.5 2 3.5-2 3.5 2z'></path></svg></div><h3 class='text-lg font-bold text-slate-900 dark:text-white mb-2'>Taxes automatisées</h3><p class='text-sm text-slate-600 dark:text-slate-400'>Taux de taxes manuels et cumulés (TPS + TVQ) ou calcul entièrement automatique via Stripe Tax — à vous de choisir.</p></div><div class='p-8 rounded-3xl border border-slate-200 dark:border-white/10 bg-slate-50 dark:bg-white/5 hover:border-emerald-500/30 transition-colors duration-300'><div class='w-10 h-10 rounded-lg bg-emerald-100 dark:bg-emerald-500/10 flex items-center justify-center mb-4'><svg class='w-5 h-5 text-emerald-600 dark:text-emerald-400' fill='none' stroke='currentColor' viewBox='0 0 24 24'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M8 7h12m0 0l-4-4m4 4l-4 4m0 6H4m0 0l4 4m-4-4l4-4'></path></svg></div><h3 class='text-lg font-bold text-slate-900 dark:text-white mb-2'>Zones d'expédition</h3><p class='text-sm text-slate-600 dark:text-slate-400'>Tarifs par zone avec correspondance pays et province, prix par devise et seuils de livraison gratuite.</p></div><div class='p-8 rounded-3xl border border-slate-200 dark:border-white/10 bg-slate-50 dark:bg-white/5 hover:border-emerald-500/30 transition-colors duration-300'><div class='w-10 h-10 rounded-lg bg-emerald-100 dark:bg-emerald-500/10 flex items-center justify-center mb-4'><svg class='w-5 h-5 text-emerald-600 dark:text-emerald-400' fill='none' stroke='currentColor' viewBox='0 0 24 24'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M3 10h18M7 15h1m4 0h1m-7 4h12a3 3 0 003-3V8a3 3 0 00-3-3H6a3 3 0 00-3 3v8a3 3 0 003 3z'></path></svg></div><h3 class='text-lg font-bold text-slate-900 dark:text-white mb-2'>Paiement Stripe & Freemius</h3><p class='text-sm text-slate-600 dark:text-slate-400'>Stripe pour les produits physiques, Freemius pour les licences numériques — un paiement adapté au fournisseur, avec validation de l'inventaire.</p></div><div class='p-8 rounded-3xl border border-slate-200 dark:border-white/10 bg-slate-50 dark:bg-white/5 hover:border-emerald-500/30 transition-colors duration-300'><div class='w-10 h-10 rounded-lg bg-emerald-100 dark:bg-emerald-500/10 flex items-center justify-center mb-4'><svg class='w-5 h-5 text-emerald-600 dark:text-emerald-400' fill='none' stroke='currentColor' viewBox='0 0 24 24'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4'></path></svg></div><h3 class='text-lg font-bold text-slate-900 dark:text-white mb-2'>Suivi d'inventaire</h3><p class='text-sm text-slate-600 dark:text-slate-400'>Déduction automatique des quantités au paiement, avec voies de repli résilientes et gestion des stocks par variante.</p></div><div class='p-8 rounded-3xl border border-slate-200 dark:border-white/10 bg-slate-50 dark:bg-white/5 hover:border-emerald-500/30 transition-colors duration-300'><div class='w-10 h-10 rounded-lg bg-emerald-100 dark:bg-emerald-500/10 flex items-center justify-center mb-4'><svg class='w-5 h-5 text-emerald-600 dark:text-emerald-400' fill='none' stroke='currentColor' viewBox='0 0 24 24'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z'></path></svg></div><h3 class='text-lg font-bold text-slate-900 dark:text-white mb-2'>Commandes & factures</h3><p class='text-sm text-slate-600 dark:text-slate-400'>Gestion complète du cycle de vie des commandes, numérotation stable des factures, documents imprimables et rapports de commandes exportables.</p></div></div>"},"block_type":"text"}]],"container_type":"container","responsive_columns":{"mobile":1,"tablet":1,"desktop":1}}$nb$::jsonb,
|
|
67
|
+
updated_at = now()
|
|
68
|
+
WHERE page_id = v_accueil
|
|
69
|
+
AND "order" = 5
|
|
70
|
+
AND block_type = 'section'
|
|
71
|
+
AND content::text LIKE '%Multi-Devises%';
|
|
72
|
+
|
|
73
|
+
-- Block #6: replaces the section whose old copy contains 'Boostez votre'.
|
|
74
|
+
UPDATE public.blocks
|
|
75
|
+
SET content = $nb${"padding":{"top":"xl","bottom":"xl"},"background":{"type":"gradient","gradient":{"type":"linear","stops":[{"color":"#1e1b4b","position":0},{"color":"#0f172a","position":100}],"direction":"135deg"}},"column_gap":"xl","column_blocks":[[{"content":{"html_content":"<p class='text-xs uppercase tracking-[0.3em] text-violet-400 font-semibold mb-4'>Maintenant disponible — Cortex AI</p><h2 class='text-4xl md:text-5xl font-bold text-white mb-6 leading-tight'>Le CMS est gratuit.<br/>Cortex AI est la mise à niveau.</h2><p class='text-lg text-slate-300 max-w-2xl leading-relaxed mb-4'>NextBlock ne coûte rien et ne coûtera jamais rien. Cortex AI est la seule licence que nous vendons. Elle ajoute l'IA dans l'éditeur et un serveur MCP à l'extérieur, pour que Claude Code, Cursor, ChatGPT et Gemini puissent bâtir votre site.</p><p class='text-base text-slate-400 max-w-2xl leading-relaxed'>Essayez-la gratuitement pendant 30 jours, sans carte de crédit. Vous apportez l'abonnement IA que vous payez déjà. La licence achète la connexion, jamais les jetons, et rien n'est mis en ligne tant qu'un éditeur ne l'a pas publié.</p>"},"block_type":"text"},{"content":{"url":"https://nextblock.dev/product/nextblock-cortex-ai-cortex-ai-license-fr","size":"lg","text":"Commencer l'essai gratuit de 30 jours →","variant":"default","position":"left"},"block_type":"button"},{"content":{"url":"/article/guide-connexion-mcp-cortex-ai","size":"lg","text":"Lire le guide de configuration MCP","variant":"outline","position":"left"},"block_type":"button"}],[{"content":{"html_content":"<div class='grid grid-cols-1 gap-4 sm:grid-cols-3 lg:grid-cols-1'><div class='rounded-2xl border border-violet-500/30 bg-white/5 p-6 text-center'><p class='text-3xl font-extrabold text-white'>$0</p><p class='text-xs uppercase tracking-wider text-violet-200 mt-1'>Le CMS, pour toujours</p></div><div class='rounded-2xl border border-violet-500/30 bg-white/5 p-6 text-center'><p class='text-3xl font-extrabold text-white'>30</p><p class='text-xs uppercase tracking-wider text-violet-200 mt-1'>jours de Cortex AI gratuits, sans carte</p></div><div class='rounded-2xl border border-violet-500/30 bg-white/5 p-6 text-center'><p class='text-3xl font-extrabold text-white'>0 %</p><p class='text-xs uppercase tracking-wider text-violet-200 mt-1'>de majoration sur les jetons</p></div></div>"},"block_type":"text"}]],"container_type":"container","responsive_columns":{"mobile":1,"tablet":1,"desktop":2},"vertical_alignment":"center"}$nb$::jsonb,
|
|
76
|
+
updated_at = now()
|
|
77
|
+
WHERE page_id = v_accueil
|
|
78
|
+
AND "order" = 6
|
|
79
|
+
AND block_type = 'section'
|
|
80
|
+
AND content::text LIKE '%Boostez votre%';
|
|
81
|
+
|
|
82
|
+
-- Page metadata: mirror the English title/description.
|
|
83
|
+
UPDATE public.pages
|
|
84
|
+
SET meta_title = 'NextBlock CMS',
|
|
85
|
+
meta_description = 'NextBlock™ est le CMS Next.js open source pensé pour les développeurs, qui allie des scores Lighthouse de 100 % à un puissant éditeur visuel par blocs.',
|
|
86
|
+
updated_at = now()
|
|
87
|
+
WHERE id = v_accueil
|
|
88
|
+
AND COALESCE(meta_description, '') <> 'NextBlock™ est le CMS Next.js open source pensé pour les développeurs, qui allie des scores Lighthouse de 100 % à un puissant éditeur visuel par blocs.';
|
|
89
|
+
END $$;
|