tungsten-filament
Move a Laravel Filament admin to Tungsten, the Filament-style admin for Python and FastAPI.
pip install tungsten-filament
tungsten-filament scan path/to/laravel-app # what converts, what needs a human (writes nothing)
tungsten-filament convert path/to/laravel-app # writes tungsten_admin/
uvicorn tungsten_admin.app:app --reload
It reads your Laravel project (it does not run PHP) and writes a ready Tungsten admin:
- Models from your migrations (or from the live database with
--database-url): columns, types, nulls, defaults, foreign keys, renames and drops in later migrations,$casts, soft deletes, UUID/ULID keys. - Relations from your Eloquent models:
belongsTo,hasMany,hasOne,belongsToManywith pivot tables, paired both ways. - PHP enums as Python enums, with their
getLabel()labels andgetColor()badge colors. - Resources (Filament 3 and 4): icon, group, sort, labels, pages, simple (modal) resources, global search.
- Forms: fields, sections, grids, tabs, wizards, repeaters with relationships, selects with relationships or enums, Laravel rules like
required|min:3, and short closures such asfn (Get $get) => $get('type') === 'company'. - Tables: columns, money and date formats, badges, filters (select, ternary, trashed, simple
wherequeries), actions, bulk actions, default sort, empty state. - Infolists and relation managers.
- Panel settings: path, brand name, colors, navigation groups.
The new admin uses the same database as the Laravel app, read from its .env (no data copy, no secrets in the code), and people sign in with the same email and password (Laravel bcrypt hashes work as they are).
Anything it cannot carry over is marked # TODO(filament) in the code and listed in MIGRATION_REPORT.md: custom pages, widgets, policies, Livewire, long closures, morph relations and Filament plugins (with the Tungsten plugin to use instead).
Guide: https://tungsten.prisminfoways.com/docs/filament-migration
Tests
pip install -e ".[dev]" -e plugins/filament-migrate
pytest plugins/filament-migrate/tests
The tests convert two sample Laravel apps (tests/fixtures/shop3 on Filament 3, tests/fixtures/blog4 on Filament 4), then sign in to the result and list, create and edit records.
Metadata
Release files for tungsten-filament 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tungsten_filament-0.1.0.tar.gz | 72.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tungsten_filament-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 131.0 kB
Release files / tungsten_filament-0.1.0.tar.gz
| Download URL | tungsten_filament-0.1.0.tar.gz |
|---|---|
| Size | 72.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0f92a0ef1395bfc1889d4b9d8f7cfa609c0be7530f2d2a4089ee4302bf68b2e3
|
|
BLAKE2b-256 checksum How to use checksums |
f394dfcc30b9ba5574ca3eaaaf590064d4d6e99a0bbbf13ce42729e28b29df88
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / tungsten_filament-0.1.0-py3-none-any.whl
| Download URL | tungsten_filament-0.1.0-py3-none-any.whl |
|---|---|
| Size | 58.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9d3567a3d94bba132e0faa60a40e949eef2781c5c3e1540d854b7374db0ff373
|
|
BLAKE2b-256 checksum How to use checksums |
6f912a6ff349d8247bb090e71c1b0ef9bfa6f15a5605abbb15c4ef675490b730
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|