PHPackages                             asawl/laravel-sqlite-manager - 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. [Database &amp; ORM](/categories/database)
4. /
5. asawl/laravel-sqlite-manager

ActiveLibrary[Database &amp; ORM](/categories/database)

asawl/laravel-sqlite-manager
============================

Livewire-powered SQLite database manager for Laravel 13 applications.

1.0.0(1mo ago)01MITPHPPHP ^8.2

Since May 28Pushed 1mo agoCompare

[ Source](https://github.com/Laravel-ASAWL/Laravel-SQLite-Manager)[ Packagist](https://packagist.org/packages/asawl/laravel-sqlite-manager)[ Docs](https://github.com/Laravel-ASAWL/Laravel-SQLite-Manager)[ RSS](/packages/asawl-laravel-sqlite-manager/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (1)Dependencies (12)Versions (3)Used By (0)

Laravel SQLite Manager
======================

[](#laravel-sqlite-manager)

Livewire-powered SQLite database manager for Laravel 13 applications.

Administer SQLite databases from a Laravel web UI — browse tables, search with filters, create and edit records, import CSV data, export rows, inspect schemas, and toggle Laravel framework tables. Built with single-responsibility Action classes and Livewire 3.

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

[](#requirements)

- PHP 8.3 or higher
- Laravel 13
- Livewire 3
- PHP extensions: `mbstring`, `pdo`, `pdo_sqlite`

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

[](#installation)

Install the package with Composer:

```
composer require asawl/laravel-sqlite-manager
```

Laravel package auto-discovery registers the service provider automatically.

Run the installer:

```
php artisan sqlite-manager:install
```

The installer publishes `config/sqlite-manager.php` and adds missing package variables to `.env`.

Use `--force` if you need to overwrite the published config file:

```
php artisan sqlite-manager:install --force
```

Environment
-----------

[](#environment)

The installer adds these variables when they are missing:

```
SQLITE_MANAGER_DATABASE_PATH="database/database.sqlite"
SQLITE_MANAGER_ROUTES_ENABLED=true
SQLITE_MANAGER_ROUTE_PREFIX=sqlite-manager
SQLITE_MANAGER_SHOW_LARAVEL_TABLES=false
SQLITE_MANAGER_READ_ONLY=false
SQLITE_MANAGER_AUDIT_ENABLED=true
```

Existing values are preserved and are not duplicated.

Audit Log
---------

[](#audit-log)

Audit logging is **enabled by default** (since v2.0.0). Every create, update, delete, and bulk-delete operation performed through the web UI is recorded in the audit log table, including the before and after values. Batch imports are also logged.

### How It Works

[](#how-it-works)

When an auditable action occurs, the system:

1. Checks `config('sqlite-manager.audit.enabled')` — returns immediately if disabled.
2. Auto-creates the audit table if it does not exist (`CREATE TABLE IF NOT EXISTS`).
3. Inserts a row with the action type, affected table, record key, before/after values (JSON-encoded), and a timestamp.

No separate migration step is required for the table to be created — it is created on first use. However, you can also create a proper Laravel migration for it:

### Migration (Optional)

[](#migration-optional)

```
php artisan sqlite-manager:create-audit-log-table
```

This copies `create_audit_log_table.php.stub` into `database/migrations` and runs `php artisan migrate`. Use `--force` to overwrite the existing migration file and force the migration run, or `--no-migrate` to copy the file without running migrations.

### Table Schema

[](#table-schema)

ColumnTypeDescription`id`INTEGER (PK, autoincrement)Auto-incrementing identifier`action`TEXT`create`, `update`, `delete`, `bulk_delete`, `import``table_name`TEXTThe SQLite table that was modified`record_key`TEXT (nullable)Primary key value of the affected record (null for bulk operations)`before_values`TEXT / JSON (nullable)Record state before the change`after_values`TEXT / JSON (nullable)Record state after the change`created_at`TEXTTimestamp of the operation### Configuration

[](#configuration)

```
'audit' => [
    'enabled' => env('SQLITE_MANAGER_AUDIT_ENABLED', true),
    'table' => '_lsm_audit_log',
],
```

KeyDefaultDescription`enabled``true`Set to `false` to disable all audit logging`table``_lsm_audit_log`The name of the audit log tableDisable audit logging via `.env`:

```
SQLITE_MANAGER_AUDIT_ENABLED=false
```

### Logged Operations

[](#logged-operations)

OperationAction Value`record_key``before_values``after_values`Create record`create`New record key`null`Created attributesEdit record`update`Edited record keyPrevious valuesNew valuesDelete record`delete`Deleted record keyDeleted values`null`Bulk delete`bulk_delete``null`Keys of deleted records`null`CSV import`import`Per-row key`null`Imported row dataTest Data
---------

[](#test-data)

You can publish and run relationship test migrations for validating `*_id` links and relationship selects:

```
php artisan sqlite-manager:create-tests-table
```

The command copies package test migrations into `database/migrations` and runs `php artisan migrate`. Use `--force` to overwrite existing migration files and force the migration run, or `--no-migrate` to only copy the files.

The test schema creates users, posts, and comments where `posts.user_id`, `comments.user_id`, and `comments.post_id` are real SQLite foreign keys.

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

[](#configuration-1)

Published config file:

```
return [
    'database_path' => env('SQLITE_MANAGER_DATABASE_PATH', database_path('database.sqlite')),

    'connections' => [
        'default' => env('SQLITE_MANAGER_DATABASE_PATH', database_path('database.sqlite')),
    ],

    'routes' => [
        'enabled' => env('SQLITE_MANAGER_ROUTES_ENABLED', true),
        'prefix' => env('SQLITE_MANAGER_ROUTE_PREFIX', 'sqlite-manager'),
        'middleware' => ['web'],
    ],

    'security' => [
        'allowed_environments' => ['local', 'testing'],
        'authorization_gate' => null,
        'read_only' => env('SQLITE_MANAGER_READ_ONLY', false),
        'gates' => [
            'access' => null,
            'view' => null,
            'create' => null,
            'update' => null,
            'delete' => null,
            'bulk_delete' => null,
            'export' => null,
            'import' => null,
        ],
        'limits' => [
            'max_delete_rows' => 100,
            'max_page_size' => 100,
        ],
    ],

    'tables' => [
        'show_laravel_tables' => env('SQLITE_MANAGER_SHOW_LARAVEL_TABLES', false),
        'show_soft_deleted' => false,
        'allow' => [],
        'deny' => [],
        'laravel_table_patterns' => [
            'cache',
            'cache_locks',
            'failed_jobs',
            'job_batches',
            'jobs',
            'migrations',
            'password_reset_tokens',
            'sessions',
            'telescope_*',
        ],
    ],

    'validation' => [
        'rules' => [],
    ],

    'audit' => [
        'enabled' => env('SQLITE_MANAGER_AUDIT_ENABLED', true),
        'table' => '_lsm_audit_log',
    ],

    'exports' => [
        'max_rows' => 5000,
    ],

    'imports' => [
        'max_rows' => 500,
    ],

    'ui' => [
        'theme' => 'auto',
    ],

    'pagination' => [
        'per_page_options' => [5, 10, 25, 50, 100],
        'default_per_page' => 10,
    ],
];
```

Usage
-----

[](#usage)

Open the manager in your browser:

```
/sqlite-manager

```

If you changed `SQLITE_MANAGER_ROUTE_PREFIX`, use that path instead.

Features
--------

[](#features)

- Browse SQLite tables and records.
- Switch between configured SQLite database files.
- Search across table columns with advanced column filters (`equals`, `not_equals`, `gt`, `gte`, `lt`, `lte`, `contains`, `starts_with`, `ends_with`, `is_null`, `is_not_null`) and sortable headers.
- Create, edit, and delete records.
- Import rows from CSV input with key trimming, value truncation, and `_extra_N` columns for extra CSV data.
- Optional read-only mode for inspection-only access.
- Per-action Gate authorization for access, view, create, update, delete, bulk delete, export, and import.
- Allowlist and denylist controls for exposed tables.
- Export filtered or selected rows to CSV or JSON.
- Bulk delete selected rows.
- Audit log for create, update, delete, bulk delete, and CSV import operations (enabled by default, configurable).
- Artisan command to create the audit log table (`sqlite-manager:create-audit-log-table`).
- Schema inspector for table columns, indexes, and foreign keys.
- Soft delete awareness for tables with `deleted_at` columns.
- Configurable validation rules per table column.
- Conventional `*_id` relationship links to related tables.
- Edit and delete records when the table has a single-column primary key.
- Choose visible columns per table.
- Persist UI preferences in cookies.
- Persist advanced filters and soft delete visibility in cookies.
- Hide Laravel framework tables by default.
- Toggle nullable fields in create and edit forms.
- View original field values while editing changed records.
- Expanded JSON/TEXT editing and JSON previews.
- Responsive Livewire UI with packaged CSS and configurable light/dark/auto theme.

Security
--------

[](#security)

This package exposes database management features through a web route. Protect the route before using it outside local development.

Example:

```
'routes' => [
    'middleware' => ['web', 'auth'],
],

'security' => [
    'authorization_gate' => 'use-sqlite-manager',
    'read_only' => true,
],

'tables' => [
    'allow' => ['users', 'orders'],
    'deny' => ['password_reset_tokens'],
],
```

You can disable package routes entirely:

```
SQLITE_MANAGER_ROUTES_ENABLED=false
```

Packagist
---------

[](#packagist)

If this package is published from the `src/` directory, Packagist should use this directory as the package root because it contains `composer.json` and this `README.md`.

License
-------

[](#license)

The MIT License.

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance89

Actively maintained with recent releases

Popularity1

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity47

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 ~0 days

Total

2

Last Release

57d ago

### Community

Maintainers

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

---

Top Contributors

[![Webvelopers](https://avatars.githubusercontent.com/u/32783077?v=4)](https://github.com/Webvelopers "Webvelopers (9 commits)")

---

Tags

laraveldatabasesqliteartisanlaravel-packagelivewireadmin

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/asawl-laravel-sqlite-manager/health.svg)

```
[![Health](https://phpackages.com/badges/asawl-laravel-sqlite-manager/health.svg)](https://phpackages.com/packages/asawl-laravel-sqlite-manager)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3345.3M347](/packages/psalm-plugin-laravel)[roots/acorn

Framework for Roots WordPress projects built with Laravel components.

9762.4M133](/packages/roots-acorn)[laravel/pulse

Laravel Pulse is a real-time application performance monitoring tool and dashboard for your Laravel application.

1.7k15.1M136](/packages/laravel-pulse)[laravel/cashier

Laravel Cashier provides an expressive, fluent interface to Stripe's subscription billing services.

2.5k30.2M151](/packages/laravel-cashier)[laravel/mcp

Rapidly build MCP servers for your Laravel applications.

77922.3M186](/packages/laravel-mcp)[tallstackui/tallstackui

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

728176.2k14](/packages/tallstackui-tallstackui)

PHPackages © 2026

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