PHPackages                             gusmanson/localtinymce - 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. gusmanson/localtinymce

ActiveLibrary

gusmanson/localtinymce
======================

A simple, self-hosted TinyMCE with image uploads for Laravel Nova.

06.7k↑33.3%2PHP

Since Apr 19Pushed 2y ago1 watchersCompare

[ Source](https://github.com/mgussekloo/Localtinymce)[ Packagist](https://packagist.org/packages/gusmanson/localtinymce)[ RSS](/packages/gusmanson-localtinymce/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Localtinymce
============

[](#localtinymce)

A simple, self-hosted TinyMCE with image uploads for Laravel Nova.

I needed a simple, zero-config WYSIWYG-field for Laravel Nova. Trix was too restrictive and other solutions were too messy. This is what I came up with. It's based on TinyMCE 5. This package supports image uploads (working out of the box, without dependencies or API-keys) and lets users edit HTML directly (so video embeds works fine). The toolbar can be configured.

### Installation

[](#installation)

```
composer require gusmanson/localtinymce
```

Publish the TinyMCE JS and CSS files.

```
artisan vendor:publish --tag=public --force
```

### Usage

[](#usage)

```
use Gusmanson\Localtinymce\Localtinymce;
```

```
public function fields(Request $request)
{
    return [
        ID::make('ID', 'id')->sortable(),
        Text::make('Name', 'name'),
        Localtinymce::make('Information', 'information')->withFiles('public')
    ];
}
```

### Options

[](#options)

By default this uses a sensible toolbar and no file uploads. You can use withFiles() and withToolbar() to configure these options.

```
    public function withFiles($disk = null, $dir = null)
    {
      // The default storage disk is 'public', the default storage dir is 'uploads'.
    }

    public function withToolbar($toolbar)
    {
      // The default toolbar is: 'undo redo | formatselect | bold italic backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | removeformat | link image code'
      // 'image' will be removed if file upload isn't enabled
    }
```

### Uploading

[](#uploading)

Uploading should just work out of the box! Enable it by using -&gt;withFiles() on your field. Defaults expect you to have [symlinked](https://laravel.com/docs/8.x/filesystem#the-public-disk) the public disk. The implementation is very basic. This is what happens in the upload controller:

```
$name = $request->file('attachment')->store($field->storageDir, $field->storageDisk);
$url = Storage::disk( $field->storageDisk )->url( $name );
return response()->json([
  'url' => $url
]);;
```

### TinyMCE

[](#tinymce)

Read about TinyMCE [here](https://www.tiny.cloud/).

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity24

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity19

Early-stage or recently created project

 Bus Factor1

Top contributor holds 93.8% 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://avatars.githubusercontent.com/u/1426964?v=4)[Martijn Gussekloo](/maintainers/mgussekloo)[@mgussekloo](https://github.com/mgussekloo)

---

Top Contributors

[![mgussekloo](https://avatars.githubusercontent.com/u/1426964?v=4)](https://github.com/mgussekloo "mgussekloo (15 commits)")[![michaelbaril](https://avatars.githubusercontent.com/u/11444287?v=4)](https://github.com/michaelbaril "michaelbaril (1 commits)")

### Embed Badge

![Health badge](/badges/gusmanson-localtinymce/health.svg)

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

PHPackages © 2026

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