PHPackages                             happytodev/blogr - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. happytodev/blogr

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

happytodev/blogr
================

Blogr is a FilamentPHP plugin that adds a powerful blog system to your Laravel application.

2.2.4(1w ago)203502[34 issues](https://github.com/happytodev/blogr/issues)4MITPHPPHP ^8.3CI passing

Since Aug 16Pushed 1mo agoCompare

[ Source](https://github.com/happytodev/blogr)[ Packagist](https://packagist.org/packages/happytodev/blogr)[ Docs](https://github.com/happytodev/blogr)[ GitHub Sponsors](https://github.com/happytodev)[ RSS](/packages/happytodev-blogr/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (10)Dependencies (200)Versions (153)Used By (4)

Blogr — Multilingual Blog Plugin for FilamentPHP
================================================

[](#blogr--multilingual-blog-plugin-for-filamentphp)

[![Latest Version](https://camo.githubusercontent.com/cb31d8ad78205f4f22a25da16dd73da432ab4266c00a002fc3f47e9daa8a8387/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6861707079746f6465762f626c6f67722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/happytodev/blogr)[![Tests](https://camo.githubusercontent.com/fdf32776677d790504c2ffe1504015af30e14375506cc07093cacb37886fe765/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6861707079746f6465762f626c6f67722f72756e2d74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/happytodev/blogr/actions?query=workflow%3Arun-tests+branch%3Amain)[![PHP Version](https://camo.githubusercontent.com/54cb9ea79a857ca8f65d05dfdb86075e2ae7be03c798762ef669fbb1c03db797/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f6861707079746f6465762f626c6f67723f7374796c653d666c61742d737175617265)](https://packagist.org/packages/happytodev/blogr)[![Downloads](https://camo.githubusercontent.com/5638744db03dbdc56547d555b457e003823a98b8553e77a09a296dbbc37c007a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6861707079746f6465762f626c6f67722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/happytodev/blogr)[![GitHub Stars](https://camo.githubusercontent.com/bd36c75cac74fbacb4f10740ae8f2a206e87829d9fbefaafce7616b17d0b1a28/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6861707079746f6465762f626c6f67723f7374796c653d666c61742d737175617265)](https://github.com/happytodev/blogr)[![License](https://camo.githubusercontent.com/458425f8985b0b0c8a736cffe75e05a098e3d77906acddbcad2bfc54492a4e02/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d677265656e2e7376673f7374796c653d666c61742d737175617265)](https://opensource.org/licenses/MIT)[![WCAG 2.2 AA](https://camo.githubusercontent.com/39e229dcc34b4f06739969d5ee0256e5b9c55d29aa5677b572ae7358cbed321a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f574341472d322e3225323041412d737563636573733f7374796c653d666c61742d737175617265)](https://www.w3.org/TR/WCAG22/)

[![Blogr Banner](https://raw.githubusercontent.com/happytodev/blogr/main/.github/images/blogr.webp)](https://raw.githubusercontent.com/happytodev/blogr/main/.github/images/blogr.webp)

**A production-ready, multilingual blog and CMS system for Laravel &amp; FilamentPHP v4.**

[Features](#-key-features) • [Installation](#-quick-start) • [Documentation](#-documentation) • [Screenshots](#-screenshots) • [Support](#-support)

---

✨ Overview
----------

[](#-overview)

Blogr turns your Laravel application into a full-featured blogging platform. Built as a FilamentPHP v4 plugin, it provides a translation-first content engine, a visual CMS page builder, role-based authoring, SEO tools, analytics integration, and a modern frontend with dark mode and theme presets — all configurable from a single admin settings page.

### Why Blogr?

[](#why-blogr)

- 🌍 **Translation-First** — Posts, series, categories, tags, CMS pages, and author bios are fully translatable.
- 🧱 **Visual CMS Builder** — Build static pages with 23 block types, 7 templates, and gradient-aware transitions.
- 🎨 **Theme System** — Light/dark/auto mode, 5 color presets, 16+ configurable colors, custom fonts.
- 🔌 **Extensible** — Plugin architecture via `BlogrExtension` for third-party packages.
- 🔍 **SEO Ready** — Meta tags, Open Graph, Twitter Cards, JSON-LD, XML sitemaps, RSS feeds, hreflang.
- 📊 **Dashboard Widgets** — 9 widgets including stats, charts, scheduled posts, SEO checklist, and more.
- 🧪 **Battle Tested** — 1,366+ automated tests covering every major feature.
- ♿ **Accessible** — WCAG 2.2 AA compliant: skip navigation, keyboard-operable galleries, carousels and mega menus, descriptive link labels, screen-reader-friendly status messages, form autocomplete, focus management, minimum touch targets, visible focus indicators, accessible icon labels, and color contrast validation in admin settings.

---

🎯 Key Features
--------------

[](#-key-features)

### ✍️ Blog Engine

[](#️-blog-engine)

- Translation-first architecture (main entity + translation tables)
- Markdown content with Prism.js syntax highlighting
- Video embeds (YouTube, Vimeo, Dailymotion)
- Post scheduling (draft / scheduled / published)
- Categories and tags with inline creation
- Reading time calculation
- Auto-generated table of contents
- Heading permalinks with copy-to-clipboard
- TL;DR summaries
- Featured images with fallback

### 📚 Blog Series

[](#-blog-series)

- Group posts into numbered series
- Automatic prev/next navigation
- Custom or auto position ordering
- Featured series highlighting
- Multiple authors per series
- Translated slugs

### 🌍 Multilingual

[](#-multilingual)

- Built-in support for 24+ locales
- Localized routes (`/{locale}/blog/...`)
- Locale auto-detection from published content
- Locale disable/restrict per language
- Language switcher component
- Hreflang SEO tags

### 📄 CMS Pages

[](#-cms-pages)

- 7 templates: Default, Landing, Contact, About, Pricing, FAQ, Custom
- 23 block types (see [CMS Blocks](#-cms-blocks))
- Block hide/show toggle
- Per-page version history and drafts
- Preview mode with signed URL
- Anti-collision reserved slugs
- Set any page as homepage

### 🎨 Theming &amp; UI

[](#-theming--ui)

- 5 color presets (Magenta, Ocean, Emerald, Sunset, Slate)
- 16+ configurable color pickers
- CSS custom properties
- Back-to-top button
- Mega menu and navigation builder
- Sticky navigation, logo, footer
- 9 social link slots

### 🔍 SEO &amp; Syndication

[](#-seo--syndication)

- Meta title/description/keywords per post/page
- Open Graph and Twitter Cards
- Schema.org Article / Organization / BreadcrumbList
- XML sitemap (`/sitemap.xml`)
- RSS feeds (main, category, tag)
- Canonical URLs and robots meta

### ⚙️ Admin Experience

[](#️-admin-experience)

- Filament v4 native integration
- Global search across posts, pages, and users
- Sortable tables with filters and toggleable columns
- Admin notifications when writers save posts
- Centralized settings page with 85+ fields
- Auto-save for posts and CMS pages

---

📸 Screenshots
-------------

[](#-screenshots)

**Admin Dashboard**[![Blogr Dashboard](https://raw.githubusercontent.com/happytodev/blogr/main/.github/images/image-5.png)](https://raw.githubusercontent.com/happytodev/blogr/main/.github/images/image-5.png)

**Post Editor**[![Blogr Post Editor](https://raw.githubusercontent.com/happytodev/blogr/main/.github/images/image-3.png)](https://raw.githubusercontent.com/happytodev/blogr/main/.github/images/image-3.png)

**Frontend Blog Home**[![Blogr Home](https://raw.githubusercontent.com/happytodev/blogr/main/.github/images/blogr-home.png)](https://raw.githubusercontent.com/happytodev/blogr/main/.github/images/blogr-home.png)

> More screenshots are available in the [`.github/images`](https://github.com/happytodev/blogr/tree/main/.github/images) folder on GitHub.

---

🚀 Quick Start
-------------

[](#-quick-start)

### Prerequisites

[](#prerequisites)

- PHP 8.3+
- Laravel 12.x
- FilamentPHP v4.x
- Composer
- Node.js 18+ and npm

### Install in a fresh Laravel + Filament project

[](#install-in-a-fresh-laravel--filament-project)

```
# 1. Create a Laravel project
laravel new my-blog
cd my-blog

# 2. Install FilamentPHP
composer require filament/filament
php artisan filament:install --panels

# 3. Create an admin user
php artisan make:filament-user

# 4. Install Blogr
composer require happytodev/blogr
php artisan blogr:install
```

The installer will ask a few questions (CMS enabled, homepage type, admin path, theme setup, tutorials, demo pages) and then publish configs, run migrations, configure your User model, install frontend assets, and build everything.

### After installation

[](#after-installation)

1. Log in at `/admin` (or your configured admin path).
2. Go to **Blog Posts → New Post** to create content.
3. Visit **Blogr Settings** to customize appearance, SEO, navigation, and analytics.
4. View your blog at `/blog` or `/` if you set the blog as homepage.

For a detailed walkthrough, see [INSTALL.md](INSTALL.md).

---

🛠️ CLI Commands
---------------

[](#️-cli-commands)

Blogr ships with several Artisan commands:

CommandDescription`php artisan blogr:install`Interactive installer (recommended)`php artisan blogr:install-tutorials`Install tutorial posts`php artisan blogr:remove-tutorials`Remove tutorial posts`php artisan blogr:list-tutorials`List available tutorials`php artisan blogr:publish-demo-pages`Publish Home + Contact demo CMS pages`php artisan blogr:export`Export posts, series, categories, tags, users, CMS pages`php artisan blogr:import {file}`Import from JSON or ZIP export`php artisan blogr:sync-admin-path`Sync the admin panel path after changing it`php artisan blogr:migrate-translations`Migrate legacy posts to translation-first schema`php artisan blogr:install-user-management`Install User resource stubs and permissions---

⚙️ Configuration Highlights
---------------------------

[](#️-configuration-highlights)

All settings are manageable from the **Blogr Settings** page in the admin panel, or directly in `config/blogr.php`.

### Routes and homepage

[](#routes-and-homepage)

```
'route' => [
    'prefix' => 'blog',          // Change to '' for homepage
    'frontend' => ['enabled' => true],
    'middleware' => ['web'],
],

'homepage' => [
    'type' => 'blog',            // 'blog' or 'cms'
],
```

### Locales

[](#locales)

```
'locales' => [
    'enabled' => true,
    'default' => 'en',
    'available' => ['en', 'fr'],
    'auto_detect' => false,
],
```

### CMS pages

[](#cms-pages)

```
'cms' => [
    'enabled' => true,
    'prefix' => '',              // '', 'page', 'pages', etc.
    'templates' => [
        'default', 'landing', 'contact', 'about', 'pricing', 'faq', 'custom'
    ],
],
```

### SEO defaults

[](#seo-defaults)

```
'seo' => [
    'site_name' => ['en' => 'The blog', 'fr' => 'Le blog'],
    'default_title' => ['en' => 'Blog', 'fr' => 'Blog'],
    'twitter_handle' => '@yourhandle',
    'og' => [
        'image' => '/images/blogr.webp',
        'image_width' => 1200,
        'image_height' => 630,
    ],
    'structured_data' => [
        'enabled' => true,
        'organization' => [
            'name' => env('APP_NAME'),
            'url' => env('APP_URL'),
            'logo' => env('APP_URL').'/images/logo.png',
        ],
    ],
],
```

### Analytics

[](#analytics)

```
'analytics' => [
    'enabled' => false,
    'provider' => null,          // 'google', 'plausible', 'umami', 'matomo'
    'google' => ['measurement_id' => 'G-XXXXXXXXXX'],
    'plausible' => ['domain' => 'yoursite.com'],
    'umami' => ['website_id' => null, 'src' => null],
    'matomo' => ['url' => null, 'site_id' => null],
],
```

---

📊 Dashboard Widgets
-------------------

[](#-dashboard-widgets)

Nine widgets are available and can be enabled or disabled from **Settings → Dashboard**:

WidgetDescription`BlogStatsOverview`Total, published, draft, scheduled posts + categories, tags, series, CMS pages`RecentBlogPosts`Latest posts with edit actions, filters, and column toggles`ScheduledPosts`Upcoming scheduled publications`BlogPostsChart`Post creations and publications over the last 12 months`BlogReadingStats`Reading time distribution (average, short, medium, long)`CategoryPostsChart`Doughnut chart of posts per category`SeriesStatsOverview`Series metrics overview`WeeklyActivityChart`Weekly publishing activity bar chart`MissingSeoAlert`SEO checklist alerting missing metadata---

🧩 CMS Blocks
------------

[](#-cms-blocks)

The CMS page builder includes 23 block types:

**Content &amp; Marketing**

- Hero Banner
- Hero Carousel
- Features Grid
- Call to Action
- Rich Content (Markdown)
- Blog Posts
- Blog Title

**Social Proof &amp; Info**

- Testimonials
- Team Members
- Stats &amp; Metrics
- Timeline
- FAQ Accordion

**Interactive &amp; Media**

- Image Gallery
- Video Embed
- Map
- Contact Form
- Newsletter

**Decorative &amp; Layout**

- Wave Separator
- Section Separator (diagonal)
- Transition: Clip Path
- Transition: Simple
- Transition: Animation

Each block supports 5 background types (none, solid, gradient, image, pattern), independent dark-mode settings, custom colors, and text shadows.

---

Plugins
-------

[](#plugins)

Blogr supports third-party plugins via the `BlogrExtension` interface. Plugins can register routes, Livewire components, custom link types, and settings pages.

```
use Happytodev\Blogr\Contracts\BlogrExtension;
use Happytodev\Blogr\Services\ExtensionRegistry;

class MyPlugin implements BlogrExtension
{
    public function getId(): string { return 'my-plugin'; }
    public function getName(): string { return 'My Plugin'; }
    public function getDescription(): string { return 'What it does.'; }
    public function getVersion(): string { return '1.0.0'; }
    public function getAuthor(): string { return 'Your Name'; }
    public function getHomepage(): ?string { return null; }
    public function getDependencies(): array { return []; }
    public function getSettingsUrl(): ?string { return null; }
    public function registerExtension(ExtensionRegistry $registry): void {}
}
```

Register your plugin in your service provider:

```
public function packageBooted(): void
{
    if ($this->app->has(ExtensionRegistry::class)) {
        $this->app->make(ExtensionRegistry::class)->register(new MyPlugin);
    }
}
```

PluginDescriptionRepositoryGDPRCookie consent, privacy policy, data export and erasure[happytodev/blogr-gdpr](https://github.com/happytodev/blogr-gdpr)CommentsThreaded comments with moderation, voting, anti-spam, and email notifications[happytodev/blogr-comments](https://github.com/happytodev/blogr-comments)Artist PortfolioArtist portfolio with artwork management, portfolio pages, and commission showcase[happytodev/blogr-artist](https://github.com/happytodev/blogr-artist)---

🛡️ Security
-----------

[](#️-security)

### Configurable admin path

[](#configurable-admin-path)

Change the default `/admin` URL from **Settings → Admin Panel**, then run:

```
php artisan blogr:sync-admin-path
```

You can also set it via `.env`:

```
BLOGR_ADMIN_PATH=backoffice
```

### Two-Factor Authentication

[](#two-factor-authentication)

Add 2FA to your admin panel with [Filament Breezy](https://github.com/jeffgreco13/filament-breezy). Blogr provides an installer command:

```
php artisan blogr:install-breezy
```

See the Breezy documentation for full configuration details.

### Roles and permissions

[](#roles-and-permissions)

Blogr uses Spatie Permission with two default roles:

- **Admin** — full access
- **Writer** — can create and edit own posts, cannot publish or manage other users

---

🧪 Testing
---------

[](#-testing)

Blogr is tested with **1,266 Pest PHP tests** covering import/export, multilingual routing, CMS pages, blocks, SEO, widgets, permissions, and more.

```
cd vendor/happytodev/blogr
./vendor/bin/pest --parallel
```

CI runs on GitHub Actions with PHP 8.4, Laravel 12, and `prefer-stable`.

---

📚 Documentation
---------------

[](#-documentation)

- [Installation Guide](INSTALL.md)
- [Feature Overview](docs/FEATURES_v100.md)
- [CMS Pages in Navigation](docs/CMS_PAGES_IN_NAVIGATION.md)
- [Theme Switcher](docs/THEME_SWITCHER.md)
- [RSS Feeds](docs/RSS_FEED.md)
- [Language Switcher Fix](docs/LANGUAGE_SWITCHER_CMS_PAGE_FIX.md)
- [Full docs folder](docs/)

---

🤝 Support
---------

[](#-support)

### Need Help?

[](#need-help)

[📖 Full Documentation](https://github.com/happytodev/blogr#readme) • [🐛 Report Bug](https://github.com/happytodev/blogr/issues) • [💡 Request Feature](https://github.com/happytodev/blogr/issues/new)

### Love Blogr?

[](#love-blogr)

[![GitHub Sponsors](https://camo.githubusercontent.com/e11de82ac66c5e2a8b6e0d36bc5195a221cbcae5a82c0bdb88f264720fcce143/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f53706f6e736f722d2545322539442541342d70696e6b3f7374796c653d666f722d7468652d6261646765266c6f676f3d676974687562)](https://github.com/sponsors/happytodev)[![Star on GitHub](https://camo.githubusercontent.com/19b48513748ca29e71b31129084284d9232bef5f6c28216770d82372a6f5aee2/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6861707079746f6465762f626c6f67723f7374796c653d666f722d7468652d6261646765266c6f676f3d676974687562)](https://github.com/happytodev/blogr/stargazers)

---

📄 License
---------

[](#-license)

**MIT License** — See [LICENSE.md](LICENSE.md) for details.

Created with ❤️ by [Frédéric Blanc](https://github.com/happytodev) and the Laravel community.

---

**[⬆ Back to Top](#blogr--multilingual-blog-plugin-for-filamentphp)**

Made with ❤️ using Laravel &amp; FilamentPHP

###  Health Score

50

—

FairBetter than 95% of packages

Maintenance74

Regular maintenance activity

Popularity24

Limited adoption so far

Community20

Small or concentrated contributor base

Maturity70

Established project with proven stability

 Bus Factor1

Top contributor holds 97.6% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~2 days

Total

150

Last Release

12d ago

Major Versions

0.24.1 → 1.0.02026-06-07

1.32.0 → 2.0.02026-07-07

PHP version history (2 changes)v0.1.0PHP ^8.1

0.5.0PHP ^8.3

### Community

Maintainers

![](https://www.gravatar.com/avatar/b31cd186f639bcfaffa668063556cfe495baae03d56a7f0c69fba8383feecfc1?d=identicon)[happytodev](/maintainers/happytodev)

---

Top Contributors

[![happytodev](https://avatars.githubusercontent.com/u/425998?v=4)](https://github.com/happytodev "happytodev (1276 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (26 commits)")[![nexxai](https://avatars.githubusercontent.com/u/4316564?v=4)](https://github.com/nexxai "nexxai (3 commits)")[![Copilot](https://avatars.githubusercontent.com/in/1143301?v=4)](https://github.com/Copilot "Copilot (1 commits)")[![f-blanc](https://avatars.githubusercontent.com/u/147386903?v=4)](https://github.com/f-blanc "f-blanc (1 commits)")

---

Tags

blogenginecmsfilamentphplaravellaravelfilamentphphappytodevblogr

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/happytodev-blogr/health.svg)

```
[![Health](https://phpackages.com/badges/happytodev-blogr/health.svg)](https://phpackages.com/packages/happytodev-blogr)
```

###  Alternatives

[filament/filament

A collection of full-stack components for accelerated Laravel app development.

3932.5M4.3k](/packages/filament-filament)[relaticle/flowforge

Flowforge is a lightweight Kanban board package for Filament that works with existing Eloquent models.

415139.6k11](/packages/relaticle-flowforge)[filament/infolists

Easily add beautiful read-only infolists to any Livewire component.

1330.7M77](/packages/filament-infolists)[filament/forms

Easily add beautiful forms to any Livewire component.

4834.0M470](/packages/filament-forms)[backstage/mails

View logged mails and events in a beautiful Filament UI.

16429.7k](/packages/backstage-mails)[rawilk/profile-filament-plugin

Profile &amp; MFA starter kit for filament.

3915.5k](/packages/rawilk-profile-filament-plugin)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
