P
Recherches récentes

// le page builder

Un éditeur qui
écrit du Blade.

Glisse des sections, des colonnes, des blocs. À chaque sauvegarde, le builder écrit des fichiers Blade statiques sur disque. Pas de rendu dynamique en prod, pas de dette technique — juste du HTML compilé, rapide.

Builder — accueil.blade
● live

blocs

Hero
Columns
Pricing
Gallery
Accordion
section · hero grid · 12

// le workflow

De l'écran au fichier, en un save.

01

Glisse un bloc

Sections, colonnes, blocs depuis la sidebar. Drag & drop, réordonnable, imbricable.

02

Édite

Inline ou en modal CodeMirror pour le CSS / HTML. CSS scopé par bloc, support du mode sombre.

03

Sauvegarde

Le BladePageGenerator écrit un fichier Blade statique sur disque. En prod : zéro rendu dynamique.

// ce que tu peux faire

Pensé pour les vrais projets.

  • CSS scopé par bloc

    Chaque section a son CSS isolé par #section-id, avec support de html.dark pour le mode sombre.

  • Édition CodeMirror

    Modal d'édition CSS / HTML avec coloration syntaxique, directement dans le builder.

  • Multilingue natif

    Une page, plusieurs locales. Copie de contenu d'une langue à l'autre en un clic.

  • Sections partagées

    Réutilise une section sur plusieurs pages. Une modif se propage partout.

  • Responsive par colonne

    Breakpoints indépendants sur chaque colonne : empilé sur mobile, en grille sur desktop.

  • Rôles & visibilité

    Marque des blocs dev_only : invisibles pour les utilisateurs non-développeurs.

  • Import / export JSON

    Exporte une page ou un bloc, réimporte-le ailleurs. Versionnable, partageable.

  • 20+ blocs natifs

    Heading, columns, slider, pricing, form, map… et chaque module ajoute les siens.

// extensible

Chaque module
apporte ses blocs.

Le builder ne connaît pas tes blocs à l'avance : il les découvre. Un module déclare ses types via getBuilderConfig(), et le BuilderManager les expose dans l'éditeur. Tu écris un générateur, tu obtiens un bloc — drag & drop, propriétés, rendu Blade.

  • Découverte auto via getBuilderConfig()

  • Un générateur PHP = un bloc dans l'éditeur

  • Namespace isolé : Punky\{Module}

Module.php
public function getBuilderConfig(): array
{
 return [
 'blocks' => [
 'product-grid' => [
 'label'     => 'Grille produits',
 'generator' => ProductGridGenerator::class,
 'icon'      => 'grid',
 ],
 ],
 ];
}

↑ le bloc apparaît dans la sidebar du builder

Explore les blocs.