tomatophp/filament-docs
Manage documents and contracts in one place with a template builder. Generate docs from templates using the Tiptop editor, add custom variables via facade, filter by template, and print or export as PDF with custom headers, footers, and CSS.
Architecture fit
Document, DocumentTemplate), a plugin registration, a facade-backed variable registry, and a print/PDF render path.DocumentAction::make()->vars(...) for per-record values, FilamentDocs::register([...]) for global vars, and FilamentDocs::header/footer/css for branding. Branding and variable injection can be handled without forking, which matters for a package we may not want to own long-term.Integration feasibility
v3 branch. Filament v4 appears to have no supported line. If we are on v4, the choice is upgrade to v5 or accept an unsupported island. This single question gates all estimation.composer require, filament-docs:install, optional plugin registration, publishable config/views/lang/migrations. Realistic spike: 1–2 days in a branch to confirm migrations run clean, the panel renders, the variable registry resolves, and PDF output is acceptable.->isScopedToTenant() plus hand-written migrations adding team_id to documents and document_templates. Tenant isolation becomes our correctness problem, not the package's, including cross-tenant leakage through filters and relation managers.Technical risk
Document and DocumentTemplate. That meaningfully lowers our own test-authoring cost.Key questions
Stack fit
Migration path
documents table — cheap, but must be scheduled.team_id columns, backfill of existing rows to the correct team, then enforcement. Backfill is where data-leak bugs are born; write it as a reviewed, reversible migration with an explicit orphan report.Compatibility
v3 branch and is treated as a separate, frozen dependency — with a stated end date.Sequencing
DocumentAction into the resources that need it, implement header/footer/CSS branding via the facade (not by editing published views, so upgrades stay clean).Maintenance
Support
Scaling
Failure modes
team_id work and unscoped filters. Mitigate with automated tests asserting cross-tenant denial, plus a periodic audit query for orphaned or unassigned rows.Ramp-up
DocumentAction wiring; half a day more for facade-based global vars.$ACCOUNT_NAME), the sanitizer's limits, and print layout behavior all need hands-on training. Expect a short guide plus one supervised template build per author.How can I help you explore Laravel packages today?