PHPackages                             agenciafmd/filament-postal - 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. agenciafmd/filament-postal

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

agenciafmd/filament-postal
==========================

Filament - Postal

0264CSS

Since Jun 20Pushed 2w agoCompare

[ Source](https://github.com/agenciafmd/filament-postal)[ Packagist](https://packagist.org/packages/agenciafmd/filament-postal)[ RSS](/packages/agenciafmd-filament-postal/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

Agenciafmd – Filament Postal
============================

[](#agenciafmd--filament-postal)

Pacote de formulários e envios de e-mail (Postal) para o painel administrativo (Admix), baseado em Filament v4 e Laravel 12. Ele fornece o CRUD completo de modelos de e-mail (destinatários, assunto, cópias), incluindo auditoria, filtros, envio de teste direto da tabela, e infraestrutura de notificação com canal de evento para integrações.

Requisitos
----------

[](#requisitos)

- PHP ^8.4
- Laravel ^12.0
- Filament ^4.0
- agenciafmd/filament-admix v1.x-dev | dev-master

Instalação
----------

[](#instalação)

1. Instale o pacote via Composer:

```
composer require agenciafmd/filament-postal
```

2. Execute as migrações:

```
php artisan migrate
```

3. (Opcional) Popule o banco:

```
php artisan db:seed --class=Agenciafmd\\Postal\\Database\\Seeders\\PostalSeeder
```

Ativando no painel Filament
---------------------------

[](#ativando-no-painel-filament)

Este pacote inclui um Plugin Filament que registra o `PostalResource` automaticamente. Adicione o plugin na config do admix `config/filament-admix.php`:

```
use Agenciafmd\Postal\PostalPlugin;

return [
    'plugins' => [
        PostalPlugin::class,
    ],
];
```

Após isso, o menu "Formulários" aparecerá no painel, com as páginas de Listar, Criar e Editar.

Recursos incluídos
------------------

[](#recursos-incluídos)

- Model: `Agenciafmd\Postal\Models\Postal` (Soft Deletes, HasFactory, Notifiable, Auditing e limpeza programada via `prunable()`)
- Migração: cria a tabela `postal` com campos principais (`name`, `slug` único, `to`, `to_name`, `subject`, `cc` e `bcc` em array, flag `is_active`, timestamps e soft deletes)
- Factory e Seeder: `PostalFactory` e `PostalSeeder`
- Resource Filament: `PostalResource` com páginas `ListPostal`, `CreatePostal`, `EditPostal`
- Formulário: `PostalForm` com seções "General" e "Information"
- Tabela: `PostalTable` com colunas, filtros, ação de envio de teste e ordenação padrão
- Serviço: `PostalService` (sugestões de e-mails únicas para `cc`/`bcc`)
- Traduções pt\_BR prontas
- Views Blade para e-mail com tema/layout próprios e ícones (publicáveis)

Notificações, Canais e Eventos
------------------------------

[](#notificações-canais-e-eventos)

O pacote provê um fluxo de notificação pronto para integrar com filas e eventos:

- `Agenciafmd\Postal\Notifications\SendNotification` (implements `ShouldQueue`):

    - Canais: `MailChannel` e `EventChannel` (custom do pacote)
    - Markdown do e-mail: `filament-postal::markdown.email`
    - Tema: `filament-postal::theme.tabler`
    - Respeita `cc`/`bcc` definidos no registro Postal e permite `replyTo` via `from` no construtor
    - Aceita `attach` (lista de paths de arquivos) – ver comentário no código para futura troca por `attachFromStorage`
- `Agenciafmd\Postal\Channels\EventChannel`:

    - Extrai pares `chave: valor` das linhas de `introLines` do conteúdo do e-mail
    - Normaliza chaves (`slug`) e emite um evento com os dados do formulário e `source` apontando para o `slug` do registro
- `Agenciafmd\Postal\Events\NotificationSent`:

    - Evento simples contendo o array de dados processado pelo canal

Exemplo simples de uso manual (fora da tabela), assumindo `$postal` é uma instância de `Postal`:

```
use Agenciafmd\Postal\Models\Postal;
use Agenciafmd\Postal\Notifications\SendNotification;

$postal = Postal::query()
    ->where('slug', 'contato')
    ->first();

if (!$postal) {
    $this->dispatch(
        event: 'swal',
        level: 'error',
        message: 'Formulário de disparo não configurado.',
    );

    return;
}

$postal->notify(new SendNotification(data: [
    'greeting' => 'Contato',
    'introLines' => [
        "**Nome:** {$data['name']}",
        "**E-mail:** {$data['email']}",
        "**Telefone:** {$data['phone']}",
    ],
], from: [
    $data['email'] => $data['name']
]));
```

Views e Assets publicáveis
--------------------------

[](#views-e-assets-publicáveis)

As views de e-mail e os ícones utilizados no template podem ser publicados:

```
php artisan vendor:publish --tag=filament-postal:mail --no-interaction
php artisan vendor:publish --tag=filament-postal:images --no-interaction
```

- Views de e-mail: `resources/views/vendor/agenciafmd/filament-postal/mail` (inclui `layout`, `markdown/message`, `markdown/email`, componentes como `icon`, `header`, `footer`, etc.)
- Imagens: `public/vendor/agenciafmd/filament-postal/images/{color}/{icon}.png`

Atualização
-----------

[](#atualização)

Para manter os assets atualizados, adicione o comando `@php artisan vendor:publish --tag=filament-postal:images --ansi --force` ao seu `post-update-cmd` no `composer.json` do seu projeto.

Configuração
------------

[](#configuração)

Arquivo: `config/filament-postal.php`

```
return [
    'name' => 'Postal',
];
```

Atualmente, a configuração define apenas o nome exibido em traduções/labels. Ajustes adicionais podem ser introduzidos conforme evolução do pacote.

Auditoria
---------

[](#auditoria)

O `PostalResource` inclui o relation manager `Tapp\FilamentAuditing\RelationManagers\AuditsRelationManager`, exibindo o histórico de auditorias quando o pacote `tapp/filament-auditing` for utilizado pelo projeto via `filament-admix`.

Licença
-------

[](#licença)

Este pacote é software livre e está disponível nos termos da licença MIT.

###  Health Score

24

—

LowBetter than 31% of packages

Maintenance63

Regular maintenance activity

Popularity15

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/7e4d60ba30f409161026fd37c5a106cc32c4e4d29411f805553623cca632dd72?d=identicon)[agenciafmd](/maintainers/agenciafmd)

---

Top Contributors

[![irineujunior](https://avatars.githubusercontent.com/u/260451?v=4)](https://github.com/irineujunior "irineujunior (12 commits)")

### Embed Badge

![Health badge](/badges/agenciafmd-filament-postal/health.svg)

```
[![Health](https://phpackages.com/badges/agenciafmd-filament-postal/health.svg)](https://phpackages.com/packages/agenciafmd-filament-postal)
```

###  Alternatives

[kirouane/interval

Library to handel intervals

2878.4k](/packages/kirouane-interval)

PHPackages © 2026

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