jeffersongoncalves/laravel-knowledge-base
A Laravel package for adding a searchable knowledge base or help center to your app. Organize articles into categories, publish content, and help users find answers fast, with a ready-to-use structure for managing docs without leaving Laravel.
cache_max_age versus signed_url_minutes is an explicit trade-off between CDN cost/performance and how fast access can be withdrawn. This is worth capturing as a documented policy (e.g., "revocation within 5 minutes for internal content").kb:move-assets --dry-run gives a safe rehearsal path for existing environments, which reduces the risk of scheduling an upgrade mid-sprint and lets you sequence the privacy change independently of feature work.Consider it when:
attachments.route.enabled to false to defer the behavioural change. Good fit for a staged rollout.Look elsewhere when:
cache_max_age seconds after an article becomes internal. If the requirement is "revoke now," either set cache_max_age to 0 and purge aggressively, or choose a system with token-per-request validation.For executives: The knowledge base can now hold material that must not be public — customer-restricted documentation, internal policies, legal and HR content — in the same system as our public help center, with access checked on every request and expiring links for sharing. This removes a blocker for enterprise and regulated customers who ask how we protect internal documents, and it avoids buying a second CMS or building a bespoke permissions layer. Upgrade risk is low: current assets keep working, changes are opt-in via config, and there is a dry-run migration command, so we can ship in a scheduled window with a rollback switch.
For engineering: This is a config-and-migrate change, not a rewrite. Set attachments.disk to local or a private cloud disk, run php artisan kb:move-assets --dry-run then the real command, and decide on attachments.route settings. Two things need explicit decisions: (1) cache_max_age — it is the effective revocation window for internalized articles, so treat it as a security parameter, not a performance knob, and consider a CDN purge step; (2) the route now serves asset bytes, so keep middleware tight (auth, throttling) and front it with a CDN for public content. Note the old /storage/... URLs remain live for files still on the public disk until assets are moved — don't leave that step for "later." There is also no per-user ACL beyond article visibility, so flag any requirement that goes further before committing.
How can I help you explore Laravel packages today?