PHPackages                             vormia-folks/atu-rank-seo - 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. vormia-folks/atu-rank-seo

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

vormia-folks/atu-rank-seo
=========================

ATU Rank SEO - A package for Laravel that provides rank SEO support for your e-commerce website.

v1.2.1(3mo ago)04MITPHPPHP ^8.2

Since Jan 9Pushed 2mo agoCompare

[ Source](https://github.com/vormia-folks/atu-rank-seo)[ Packagist](https://packagist.org/packages/vormia-folks/atu-rank-seo)[ RSS](/packages/vormia-folks-atu-rank-seo/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (3)Dependencies (4)Versions (7)Used By (0)

ATU Rank SEO
============

[](#atu-rank-seo)

A companion SEO package for the Vormia ecosystem. ATU-Rank-SEO provides centralized, snapshot-based SEO management tightly integrated with Vormia's `SlugRegistry`, enabling page-level and media-level SEO similar in spirit to Yoast SEO (WordPress), but designed for Laravel applications.

Features
--------

[](#features)

- **Snapshot-based SEO**: Resolved on save, not runtime
- **Slug-driven**: Integrates with `vrm_slug_registry` without modifying it
- **Page &amp; Media SEO**: Support for both page-level and media-level SEO
- **Cache-first**: Optimized for performance with cache-first resolution
- **UI-driven Management**: Admin panel for managing SEO entries
- **Placeholder Support**: Dynamic placeholder resolution (e.g., `{make}`, `{model}`, `{year}`)
- **Global SEO Settings**: Centralized default SEO values

Installation
------------

[](#installation)

### Via Composer

[](#via-composer)

```
composer require vormia-folks/atu-rank-seo
```

### Run Installation Command

[](#run-installation-command)

```
php artisan aturankseo:install
```

This will:

- Copy configuration files
- Add environment variables
- Add routes (commented out by default)
- Run migrations (with confirmation)
- Run seeders (with confirmation)

Configuration
-------------

[](#configuration)

### Environment Variables

[](#environment-variables)

Add these to your `.env` file:

```
ATU_RANKSEO_ENABLED=true
ATU_RANKSEO_CACHE_TTL=3600
```

### Config File

[](#config-file)

The configuration file is published to `config/atu-rank-seo.php`. You can customize:

- Cache TTL
- Default placeholder variables
- Media directory path
- Supported media types

Usage
-----

[](#usage)

### Resolving SEO for a Page

[](#resolving-seo-for-a-page)

```
use Vormia\ATURankSEO\Services\SeoResolverService;

$seoResolver = app(SeoResolverService::class);
$seo = $seoResolver->forSlug('my-page-slug');

// Returns:
// [
//     'title' => 'Page Title',
//     'description' => 'Meta description',
//     'keywords' => 'keyword1, keyword2',
//     'canonical_url' => 'https://example.com/page',
//     'robots' => 'index, follow',
// ]
```

### Generating SEO Snapshot

[](#generating-seo-snapshot)

```
use Vormia\ATURankSEO\Services\SeoSnapshotService;

$snapshotService = app(SeoSnapshotService::class);
$snapshotService->generateForSlug('my-page-slug', [
    'title' => 'Buy {make} {model} {year}',
    'description' => 'Find the best {make} {model} deals',
    'make' => 'Toyota',
    'model' => 'Camry',
    'year' => '2024',
]);

// Placeholders are resolved and stored in database
```

### Media SEO

[](#media-seo)

```
use Vormia\ATURankSEO\Services\MediaIndexerService;

$mediaIndexer = app(MediaIndexerService::class);

// Scan and register all media files
$mediaIndexer->scanAndRegister();

// Register a single media file
$mediaIndexer->registerMedia('media/images/product.jpg', [
    'title' => 'Product Image',
    'alt_text' => 'Product photo',
    'caption' => 'High-quality product image',
]);
```

Admin Panel
-----------

[](#admin-panel)

The package includes Livewire Volt components for managing SEO:

- **SEO Entries List**: View and manage all SEO entries
- **Global Settings**: Configure global SEO defaults and dynamic variables
- **Edit SEO Entry**: Edit page-specific SEO
- **Media SEO Manager**: Manage media SEO entries
- **Edit Media SEO**: Edit media-specific SEO

### Routes

[](#routes)

Routes are added to `routes/web.php` (commented out by default). Uncomment and customize as needed:

```
use Livewire\Volt\Volt;

Route::group(['prefix' => 'admin/atu'], function () {
    Volt::route('rank-seo', 'admin.atu.rank-seo.index')->name('admin.atu.rank-seo.index');
    // ... other routes
});
```

### Manual Route Setup

[](#manual-route-setup)

If automatic route injection fails, manually add the following routes to `routes/web.php` inside the `Route::middleware(['auth'])->group(function () { ... })` block:

```
Route::prefix('admin/atu/rank-seo')->name('admin.atu.rank-seo.')->group(function () {
    Volt::route('index', 'admin.atu.rank-seo.index')->name('index');
    Volt::route('settings', 'admin.atu.rank-seo.settings')->name('settings');
    Volt::route('edit/{id}', 'admin.atu.rank-seo.edit')->name('edit');
    Volt::route('media', 'admin.atu.rank-seo.media-index')->name('media.index');
    Volt::route('media/edit/{id}', 'admin.atu.rank-seo.media-edit')->name('media.edit');
});
```

**Note:** If you have configured your own starterkit, you may need to add `use Livewire\Volt\Volt;` at the top of your routes file.

### Manual Sidebar Menu Setup

[](#manual-sidebar-menu-setup)

If automatic sidebar menu injection fails, manually add the following menu items to your admin sidebar (usually in `resources/views/components/layouts/app/sidebar.blade.php` or similar):

```
@if (auth()->user()?->isAdminOrSuperAdmin())

    {{-- SEO Entries Menu Item --}}

        {{ __('SEO Entries') }}

    {{-- Media SEO Menu Item --}}

        {{ __('Media SEO') }}

    {{-- Global Settings Menu Item --}}

        {{ __('SEO Settings') }}

@endif
```

**Reference Files:**

- Routes: `vendor/vormiaphp/atu-rank-seo/src/stubs/reference/routes-to-add.php`
- Sidebar Menu: `vendor/vormiaphp/atu-rank-seo/src/stubs/reference/sidebar-menu-to-add.blade.php`

Commands
--------

[](#commands)

- `php artisan aturankseo:install` - Install the package
- `php artisan aturankseo:update` - Update package files
- `php artisan aturankseo:uninstall` - Uninstall the package
- `php artisan aturankseo:help` - Display help information

Uninstallation
--------------

[](#uninstallation)

To uninstall ATU Rank SEO from your application:

```
php artisan aturankseo:uninstall
```

### Uninstallation Process

[](#uninstallation-process)

The uninstall command will:

1. **Remove Package Files**: Delete all copied files and stubs from your application
2. **Remove Routes**: Remove SEO routes from `routes/web.php`
3. **Clean Environment Files**: Optionally remove environment variables from `.env` and `.env.example` (with confirmation)
4. **Clear Application Caches**: Automatically refresh/clear all Laravel caches:
    - Configuration cache (`config:clear`)
    - Route cache (`route:clear`)
    - View cache (`view:clear`)
    - Application cache (`cache:clear`)

### Uninstallation Options

[](#uninstallation-options)

- `--keep-env`: Preserve environment variables in `.env` files
- `--force`: Skip confirmation prompts

**Examples:**

```
# Standard uninstall with prompts
php artisan aturankseo:uninstall

# Uninstall but keep environment variables
php artisan aturankseo:uninstall --keep-env

# Force uninstall without prompts
php artisan aturankseo:uninstall --force
```

### After Uninstallation

[](#after-uninstallation)

After running the uninstall command, you'll need to:

1. Remove the package from `composer.json`:

    ```
    composer remove vormia-folks/atu-rank-seo
    ```
2. Review your application for any remaining ATU Rank SEO references in your code
3. If you want to reinstall the package later, simply run:

    ```
    composer require vormia-folks/atu-rank-seo
    php artisan aturankseo:install
    ```

Database Schema
---------------

[](#database-schema)

### Tables

[](#tables)

- `atu_rankseo_meta` - Page-level SEO metadata
- `atu_rankseo_media` - Media SEO metadata
- `atu_rankseo_settings` - Global SEO settings

Placeholder Resolution
----------------------

[](#placeholder-resolution)

SEO fields support placeholders that are resolved on save:

- `{make}` - Vehicle make
- `{model}` - Vehicle model
- `{year}` - Year
- `{site_name}` - Site name (from config or settings)
- `{current_year}` - Current year
- `{current_month}` - Current month name
- `{current_date}` - Current date

Placeholders are resolved using:

1. Data provided when generating the snapshot
2. Global SEO variables from settings
3. Built-in variables (current\_year, etc.)

Caching
-------

[](#caching)

SEO data is cached for performance. Cache keys follow the pattern:

- Page SEO: `atu_rankseo:slug:{slug_registry_id}:{type}`
- Media SEO: `atu_rankseo:media:{md5(media_url)}`

Cache is automatically invalidated when SEO entries are updated, deleted, or activated/deactivated.

Requirements
------------

[](#requirements)

- PHP ^8.2
- Laravel ^12.0
- vormiaphp/vormia ^4.4
- a2-atu/a2commerce ^0.1.6
- livewire/livewire (for admin panel)

License
-------

[](#license)

MIT

Support
-------

[](#support)

For issues and questions, please refer to the package documentation or create an issue in the repository.

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance81

Actively maintained with recent releases

Popularity3

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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

4

Last Release

119d ago

### Community

Maintainers

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

---

Top Contributors

[![joshlminga](https://avatars.githubusercontent.com/u/7943555?v=4)](https://github.com/joshlminga "joshlminga (18 commits)")

---

Tags

phplaravelvormiaa2commerceatuatu-rank-seo

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/vormia-folks-atu-rank-seo/health.svg)

```
[![Health](https://phpackages.com/badges/vormia-folks-atu-rank-seo/health.svg)](https://phpackages.com/packages/vormia-folks-atu-rank-seo)
```

###  Alternatives

[gehrisandro/tailwind-merge-laravel

TailwindMerge for Laravel merges multiple Tailwind CSS classes by automatically resolving conflicts between them

341682.2k18](/packages/gehrisandro-tailwind-merge-laravel)[iteks/laravel-enum

A comprehensive Laravel package providing enhanced enum functionalities, including attribute handling, select array conversions, and fluent facade interactions for robust enum management in Laravel applications.

2516.7k](/packages/iteks-laravel-enum)[salmanzafar/laravel-geocode

A Laravel Library to find Lat and Long of a given Specific Address

153.9k](/packages/salmanzafar-laravel-geocode)

PHPackages © 2026

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