Le CMS headless Laravel · composer require bear/cms

La force tranquille
du headless.

Bear CMS est un CMS headless pensé pour durer : robuste dans son architecture, souple dans son intégration, précis dans son administration. Un socle fiable pour structurer et diffuser vos contenus sur n'importe quel frontend. Next.js, React, Vue, mobile — vous choisissez la stack.

$ composer require bear/cms
localhost:8000/bearcms
Dashboard
Pages
Articles
Médias
Formulaires
Menus
Dashboard

Un outil qui sait
ce qu'il est.

Un CMS pour les devs Laravel qui veulent livrer sans se battre contre leur propre outil.

Import WordPress, Voyager & Nova

Dépose ton dump SQL. bearCMS détecte la plateforme et mappe les blocs. Gutenberg, Classic Editor, Nova Flexible — tout passe.

Resource Builder

Définis tes types de contenu depuis le backoffice. Modèle, migration, API — bearCMS génère, toi tu codes là où ça compte.

Block Builder

Crée tes propres blocs depuis le backoffice : nomme-le, définis ses champs, utilise-le dans l'éditeur. Pas une ligne de code.

36 blocs de contenu

Hero, galerie, pricing, FAQ, colonnes, timeline, accordion… Tu glisses, tu combines, c'est en prod.

Génération IA

Rédige ou réécris tes articles avec Claude ou GPT-4o. Mots-clés, FAQ, meta — l'IA fait le brouillon, tu gardes la main.

API REST headless

Endpoints générés automatiquement, filtres, pagination, tri, relations, cache. Tu branches ton frontend, ça marche.

Multilingue natif

Contenus, menus et formulaires se traduisent par champ. Alternates hreflang et API avec ?locale=fr inclus.

SEO & AI-ready

Meta, JSON-LD, sitemaps, hreflang, og:image, llms.txt. Pas une case à cocher — tout marche dès l'install.

Auth membres

Inscription, login, reset, vérification email. JWT access + refresh tokens. Un auth kit complet sans la configuration à rallonge.

Settings Builder

Crée tes groupes de réglages custom. Texte, image, couleur, booléen — accessible partout via helper, sans toucher au .env.

Formulaires dynamiques

Contact, inscription, sondage — construits depuis le backoffice avec notifs email, auto-réponse et export CSV.

Export Next.js & Blade

Génère un site Next.js ou Blade complet. Theme Builder intégré, SEO, i18n, navigation depuis tes menus. Prêt pour Vercel ou ton serveur.

Webhooks & événements

Déclenche tes intégrations sur chaque changement de contenu. Notifications, synchro tierce, déploiement automatique.

Ton contenu a déjà
un passé. On le respecte.

WordPress, Voyager, Nova Flexible — dépose ton dump SQL. bearCMS renifle la plateforme, mappe les blocs et importe. Avec un filet de sécurité.

1

Dépose ton dump SQL

Un fichier .sql, c'est tout ce qu'il faut.

2

Détection automatique

WordPress, Voyager, Laravel ? bearCMS reconnaît la plateforme sans que tu aies à lui expliquer.

3

Mappe tes blocs

Prévisualise le contenu extrait, ajuste le mapping. Gutenberg, Classic Editor, Nova Flexible — tout se convertit.

4

Importe en confiance

Rollback disponible si besoin. Les erreurs non-fatales ne bloquent pas l'import — tu récupères ce qui passe, tu gères le reste.

Import — wordpress_dump.sql WordPress détecté
Pages 24
Articles 156
Menus 3
Médias 89
WordPress Voyager Nova Flexible Laravel

Tes contenus, ton architecture.
Zéro boilerplate.

Nomme ta resource, choisis tes champs, coche tes traits. bearCMS génère le modèle PHP, la migration et les endpoints API. Tu codes là où ça compte.

1

Choisis tes champs

16 types dispo : texte, image, relation, richtext, galerie, bloc éditeur, FAQ, repeater…

2

Coche tes traits

SEO, versioning, publication programmée, corbeille, audit — tu prends ce qu'il te faut.

3

C'est live

Modèle PHP, migration, CRUD admin et endpoints API générés. Tu configures. bearCMS génère. Rien de plus.

Resource : Articles Auto-généré
Titre text
Slug slug
Image de couverture image
Contenu blockeditor
Catégorie relation
Publié boolean

Tes blocs custom.
Depuis le backoffice.

36 blocs en standard, c'est déjà un bon territoire. Mais si tu veux aller plus loin : crée les tiens. Un nom, des champs, une icône — et ton bloc est disponible dans l'éditeur. Zéro code.

1

Nomme ton bloc

Choisis un nom, une icône, une catégorie. Ton bloc a déjà son identité dans le picker dès cette étape.

2

Définis ses champs

Texte, image, select, relation, richtext — les mêmes types que le Resource Builder. Tu assembles ce qu'il te faut.

3

Il est dans l'éditeur

Ton bloc apparaît dans le picker du backoffice. Tu le glisses, tu le remplis. L'API expose les données — ton frontend fait le rendu.

Block Builder — Testimonial Custom
Citation richtext
Auteur text
Avatar image
Entreprise relation
Note select

36 blocs en standard.
Le reste, tu le crées.

Contenu, landing, marketing, blog, utilitaires — organisés par catégorie, prêts à glisser. Et si ça ne suffit pas, le Block Builder est là.

Tous Contenu Landing Blog Marketing Utilitaires
Texte
Image
Vidéo
Galerie
Colonnes
Table
Accordion
Buttons
Carousel
Hero
FAQ
CTA
Features
Témoignage
Card Grid
Logo Cloud
Stats
Team
Steps
Timeline
Alert
Citation
Callout
Code
Pricing
Countdown
Comparison
Lien
Divider
Embed
Formulaire
Spacer
Raw HTML
Map
File Download
Social Links

Du code propre.
Sans compromis.

Resources PHP expressives, traits composables, API auto-générée. Lisible. Testable. Extensible. Rien d'inutile.

app/BearCms/Resources/ArticleResource.php PHP
class ArticleResource extends BearResource
{
    use HasSeoGeo, HasVersioning,
        HasScheduledPublishing,
        HasTranslations;

    public function fields(): array
    {
        return [
            Text::make('title')
                ->rules('required|max:255'),
            Slug::make('slug'),
            Image::make('cover'),
            BlockEditor::make('content'),
            Relation::make('category')
                ->belongsTo(CategoryResource::class),
        ];
    }
}
GET /api/bearcms/articles JSON
{
  "data": [
    {
      "id": 1,
      "title": "Premiers pas",
      "slug": "premiers-pas",
      "cover": "/storage/...",
      "category": {
        "id": 2,
        "name": "Tutoriels"
      },
      "meta_title": "Premiers pas...",
      "published_at": "2026-03-16"
    }
  ],
  "meta": { "current_page": 1, "last_page": 3 }
}

Sept traits.
Tu coches, ça marche.

SEO, versioning, corbeille, audit, traductions, multi-tenant — un use sur ta resource et le comportement s'installe comme chez lui. Zéro config.

HasSeoGeo

Meta tags, OG image, JSON-LD, canonical, hreflang, llms.txt. Ton contenu optimisé pour les moteurs et pour les IA.

HasVersioning

Historique complet de chaque modification, restauration en un clic et diff visuel.

HasScheduledPublishing

Publication et dépublication programmées. Le contenu part au bon moment, même quand tu hibernes.

HasTrash

Corbeille native avec restauration et purge automatique. Rien ne disparaît sans prévenir.

HasAuditLog

Qui a changé quoi, quand, depuis quelle IP. Chaque action laisse une trace.

HasTranslations

Multilingue par champ. Tu marques ce qui se traduit, bearCMS gère les locales et l'API.

BelongsToSite

Isolation multi-tenant par site. Chaque tenant voit uniquement ses données — aucune config supplémentaire.

Sous le capot