PHPackages                             nawasara/notification - 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. [Templating &amp; Views](/categories/templating)
4. /
5. nawasara/notification

ActiveLibrary[Templating &amp; Views](/categories/templating)

nawasara/notification
=====================

Unified outbound notification for the Nawasara superapp framework — multi-channel routing, Blade templates, queue dispatch, and an audit log of every send.

v0.1.1(1mo ago)0441MITPHPPHP ^8.1

Since May 7Pushed 1mo agoCompare

[ Source](https://github.com/nawasara/notification)[ Packagist](https://packagist.org/packages/nawasara/notification)[ RSS](/packages/nawasara-notification/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (6)Versions (3)Used By (1)

Nawasara Notification
=====================

[](#nawasara-notification)

Unified outbound notification for the Nawasara superapp framework. Build a Blade template once, then send it to anyone over any registered channel via a single fluent API. Every send is queued, retried with backoff on failure, and recorded in an audit log.

Features
--------

[](#features)

- **`Notify` facade** — fluent, chainable: `Notify::to($user)->template('ssl.expiry')->data([...])->send()`
- **Email channel (MVP)** — sends via Laravel's Mail facade. Credentials read from the `smtp` Vault group with a fallback to `.env` (`MAIL_*`)
- **Template manager** — Blade-rendered subject and body, multi-channel bodies (HTML / text / WhatsApp / Telegram / in-app), priority and active flag
- **Live preview** — render any template against arbitrary JSON variables in an iframe before saving
- **Test send** — kick off a real send to your own email from the template list to verify rendering and delivery end-to-end
- **Audit log** — every send is one row in `nawasara_notification_logs` with status (queued / sending / sent / delivered / failed / bounced), error trace, attempts, and rendered body
- **Retry from UI** — failed and bounced logs can be re-dispatched in one click
- **Future channels** — WhatsApp, Telegram, and in-app are stubbed in the schema and contract; only `EmailChannel` is implemented in the MVP

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

[](#installation)

```
composer require nawasara/notification
php artisan migrate
php artisan db:seed --class="Nawasara\Notification\Database\Seeders\PermissionSeeder" --force
```

Auto-discovered. The `Notify` facade is registered as an alias.

SMTP credentials
----------------

[](#smtp-credentials)

The package reads SMTP credentials from the **`smtp` Vault group** at send time. Open `/nawasara-vault/credentials` → SMTP Email → fill in:

FieldExampleHost`smtp.gmail.com`Port`587`Encryption`tls`Username`noreply@kominfo.go.id`Password(Gmail app password if 2FA is on)From Address`noreply@kominfo.go.id`From Name`Nawasara Kominfo`Use **Test Connection** in the dropdown to verify the host is reachable. If Vault is empty, the channel falls back to whatever Laravel resolves from `.env` — useful in `local` where `MAIL_MAILER=log` writes the rendered email to `storage/logs/laravel.log`.

Sending notifications
---------------------

[](#sending-notifications)

### Template-driven

[](#template-driven)

```
use Nawasara\Notification\Facades\Notify;

Notify::to($user)
    ->template('ssl.expiry.warning')
    ->data(['domain' => 'dinkes.ponorogo.go.id', 'days' => 7])
    ->send();
```

### Ad-hoc

[](#ad-hoc)

```
Notify::to('admin@kominfo.go.id')
    ->channel('email')
    ->subject('Test')
    ->body('Hello world')
    ->send();
```

### Synchronous (skip queue)

[](#synchronous-skip-queue)

Useful for tests and admin actions that need immediate feedback:

```
Notify::to($user)->template('welcome')->data([...])->sync()->send();
```

Pages
-----

[](#pages)

RoutePermission`/nawasara-notification/templates``notification.template.view``/nawasara-notification/logs``notification.log.view`Permissions
-----------

[](#permissions)

PermissionDescription`notification.template.view`View template list`notification.template.create`Create template`notification.template.update`Update template`notification.template.delete`Delete template`notification.log.view`View notification log`notification.log.retry`Retry a failed/bounced notification`notification.test.send`Trigger a Test Send from the template UI`notification.broadcast.send`Broadcast (planned for future)Roadmap
-------

[](#roadmap)

- WhatsApp channel via `nawasara/whatsapp-forwarder`
- Telegram bot channel
- In-app notification bell in topbar
- Webhook delivery callbacks (open/click tracking, bounce handling)
- User notification preferences (per-channel, quiet hours)
- Template broadcast (blast to role / OPD / custom audience)

See [`docs/todo-notification.md`](../../docs/todo-notification.md) for the full plan.

Author
------

[](#author)

**Pringgo J. Saputro** &lt;&gt;

License
-------

[](#license)

MIT

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance94

Actively maintained with recent releases

Popularity11

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity33

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.

###  Release Activity

Cadence

Every ~2 days

Total

2

Last Release

30d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/16914951?v=4)[Pringgo J. Saputro](/maintainers/pringgojs)[@pringgojs](https://github.com/pringgojs)

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

---

Top Contributors

[![pringgojs](https://avatars.githubusercontent.com/u/16914951?v=4)](https://github.com/pringgojs "pringgojs (16 commits)")

---

Tags

laravelemailnotificationqueuetemplateAuditsmtpNawasara

### Embed Badge

![Health badge](/badges/nawasara-notification/health.svg)

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

###  Alternatives

[tallstackui/tallstackui

TallStackUI is a powerful suite of Blade components that elevate your workflow of Livewire applications.

719160.4k12](/packages/tallstackui-tallstackui)[venturedrake/laravel-crm

A free open source CRM built as a package for laravel projects

39910.0k](/packages/venturedrake-laravel-crm)[nasirkhan/laravel-starter

A CMS like modular Laravel starter project.

1.4k2.7k](/packages/nasirkhan-laravel-starter)[mati365/ckeditor5-livewire

CKEditor 5 integration for Laravel Livewire

436.8k](/packages/mati365-ckeditor5-livewire)[ublabs/blade-simple-icons

A package to easily make use of Simple Icons in your Laravel Blade views.

1958.8k](/packages/ublabs-blade-simple-icons)[tomshaw/electricgrid

A feature-rich Livewire package designed for projects that require dynamic, interactive data tables.

119.2k](/packages/tomshaw-electricgrid)

PHPackages © 2026

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